日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

arm linux读cpu id,基于ARM架构的芯片获取CPU信息(cpuID)的多种方法

發布時間:2024/1/23 linux 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 arm linux读cpu id,基于ARM架构的芯片获取CPU信息(cpuID)的多种方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

由于工作的原因,要獲取到ARM芯片的cpuid。

了解下存儲cpu信息的寄存器內容:

CPUID寄存器內容:

字段名:Implementer(venter 銷售ID)|Variant(大版本號) | Architecture(架構版本)| Part Num(產品代碼)|Revision(小版本號)

基址偏移量: [31-24] | [23-20] | [19-16] | [15-4] | [3-0]

下面直接上操作

我這里用到的機器是飛騰2000,基于ARM64的芯片

CPUID信息是:0x701f6633,分割為:70-1-f-663-3

1.cat /proc/cpuinfo

結果:

processor: 0

model name: FT-2000/4

BogoMIPS: 96.00

Features: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt lpae evtstrm aes pmull sha1 sha2 crc32

CPU implementer: 0x70

CPU architecture: aarch64

CPU variant: 0x1

CPU part: 0x663

CPU revision: 3

2.cat /sys/devices/system/cpu/cpu0/regs/identification/midr_el1

這個文件內容是CPU信息寄存器中的內容

3.GetArmCpuid.cpp

采用輔助向量讀取寄存器中的CPU信息(AT_HWCAP,

有這個向量的話,位與HWCAP_CPUID(值是0x0800)為真即可以訪問寄存器)

查看輔助變量條目:LD_SHOW_AUXV=1 sleep 1000

這是官方例程

#include

#include

#include

#define get_cpu_ftr(id) ({\

unsigned long __val;\

asm("mrs %0, "#id : "=r" (__val));\

printf("%-20s: 0x%016lx\n", #id, __val);\

})

//printf("0x%08lx\n", __val);

//printf("%-20s: 0x%016lx\n", #id, __val);

int main(void)

{

/*unsigned long cpuid;

asm("mrs %0, MIDR_EL1" : "=r" (cpuid));

printf("CPUID from register: 0x%016lx\n", cpuid);

*/

if (!(getauxval(AT_HWCAP) & HWCAP_CPUID)) {

fputs("CPUID registers unavailable\n", stderr);

return 1;

}

get_cpu_ftr(ID_AA64ISAR0_EL1);

get_cpu_ftr(ID_AA64ISAR1_EL1);

get_cpu_ftr(ID_AA64MMFR0_EL1);

get_cpu_ftr(ID_AA64MMFR1_EL1);

get_cpu_ftr(ID_AA64PFR0_EL1);

get_cpu_ftr(ID_AA64PFR1_EL1);

get_cpu_ftr(ID_AA64DFR0_EL1);

get_cpu_ftr(ID_AA64DFR1_EL1);

get_cpu_ftr(MIDR_EL1);

get_cpu_ftr(MPIDR_EL1);

get_cpu_ftr(REVIDR_EL1);

#if 0

/* Unexposed register access causes SIGILL */

get_cpu_ftr(ID_MMFR0_EL1);

#endif

return 0;

}

總結

以上是生活随笔為你收集整理的arm linux读cpu id,基于ARM架构的芯片获取CPU信息(cpuID)的多种方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。