ARMのCPU判定

Intel x86では、CPUID命令でCPUの種類を得ることができるが、ARMには存在しない。
ARMではシステム制御コプロセッサのMain ID Register(MIDR)から取得する。
おまけで、System Control Register(SCTLR)も取得してみる。

ビルド

pi@raspberrypi:~/armcpuinfo $ make
make -C /lib/modules/5.4.83-v7+/build M=/home/pi/armcpuinfo modules
make[1]: Entering directory '/home/pi/linux'
  CC [M]  /home/pi/armcpuinfo/armcpuinfo.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC [M]  /home/pi/armcpuinfo/armcpuinfo.mod.o
  LD [M]  /home/pi/armcpuinfo/armcpuinfo.ko
make[1]: Leaving directory '/home/pi/linux'

実行結果

pi@raspberrypi:~/armcpuinfo $ sudo insmod armcpuinfo.ko
pi@raspberrypi:~/armcpuinfo $ sudo rmmod armcpuinfo
pi@raspberrypi:~ $ dmesg | tail
[ 4245.068818] armcpuinfo: loading out-of-tree module taints kernel.
[ 4245.069367] armcpuinfo_init
[ 4245.069379] MIDR = 410fd034
[ 4245.069388] SCTLR = 10c5383d
[ 4255.571746] armcpuinfo_exit

AArch64

手元のラズパイは32bitだが、64bitのAArch64では、アクセス方法が異なる。
それぞれ、アクセスするレジスタが、Main ID Register, EL1(MIDR_EL1)と、 System Control Register, EL1(SCTLR_EL1) となり、アクセス命令も変わる。

※Raspberry PiはRaspberry Pi財団の登録商標です。


添付ファイル: filearmcpuinfo.tgz 692件 [詳細]

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-12-12 (日) 11:26:41