使用如下命令可以读取arm cpu的midr寄存器:
MRC p15, 0, <Rt>, c0, c0, 0; Read MIDR into Rt
在c语言中可以使用如下语句把midr寄存器的值读取到变量i中:
asm ("mrc p15, 0, %0, c0, c0, 0" : "=r" (i));
然后返回i即可,根据该寄存器的值可以识别mpu的版本。
midr寄存器的定义如下:
For an ARMv7 implementation by ARM, the MIDR is interpreted as:
Bits[31:24] Implementer code, must be 0x41.
Bits[23:20] Major revision number, rX.
Bits[19:16] Architecture code, must be 0xF .
Bits[15:4] ARM part number.
Bits[3:0] Minor revision number, pY
arm核的版本为rXpY。