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)的多种方法相关推荐
- arm linux嵌入式网络控制系统,基于ARM uCLinux的网络控制系统设计与实现
引言 随着网络和通信技术的发展,嵌入式系统现已进入高速发展阶段.并在社会各个领域得到了广泛的应用.本文介绍了一种采用ARM+uCLinux作为开发平台.实现基于TCP/IP的远程系统监控.从而取 ...
- ARM学习(12)基于arm架构的嵌入式操作系统理解
ARM学习(12)基于arm架构的嵌入式操作系统理解 笔者来聊聊指令集的理解 这里写自定义目录标题 ARM学习(12)基于arm架构的嵌入式操作系统理解 symbol 符号表认识 symbol符号表的 ...
- android 行车记录仪分析,基于Android架构行车记录仪的异常掉电可播放视频方法与流程...
本发明涉及摄录像视频技术领域,特别涉及一种基于Android架构行车记录仪的异常掉电可播放视频方法. 背景技术: 随着车联网概念的兴起和技术的积累,越来越多的智能设备被接入到车辆上.行车记录仪作为非常 ...
- 芯原助力蓝洋智能部署基于Chiplet架构的芯片产品
内置芯原GPGPU IP的Chiplet芯片算力可达8 TFLOPS ,内置芯原NPU IP的Chiplet芯片算力可达240 TOPS 2023 年 3 月30日,中国上海--芯原股份(芯原,股票代 ...
- java毕业设计基于BS架构的疫情包联信息管理系统的设计与实现mybatis+源码+调试部署+系统+数据库+lw
java毕业设计基于BS架构的疫情包联信息管理系统的设计与实现mybatis+源码+调试部署+系统+数据库+lw java毕业设计基于BS架构的疫情包联信息管理系统的设计与实现mybatis+源码+调 ...
- 最简单的基于DirectShow的示例:获取Filter信息
===================================================== 最简单的基于DirectShow的示例文章列表: 最简单的基于DirectShow的示例:视 ...
- arm linux嵌入式网络控制系统,基于ARMLinux的嵌入式网络控制系统的研究与设计
摘要: 随着计算机技术.控制技术和网络技术的蓬勃发展,嵌入式系统与网络控制系统的应用越来越广阔.当前控制系统正经历一场前所未有的变革,远程监控和智能控制成为控制系统发展的重要方向.通过嵌入式网络控制系 ...
- linux 挂iscisc存储,基于arm的嵌入式linux操作系统的移植研究-通信与信息系统专业论文.docx...
基于arm的嵌入式linux操作系统的移植研究-通信与信息系统专业论文 Classified Index: TP316.8 U.D.C: 621.38 Dissertation for the Mas ...
- linux共享内存 pmu,基于ARM的GPS-无源北斗互备PMU研究与设计
基于ARM的GPS/无源北斗互备PMU研究与设计 摘 要: 介绍了同步相量同步相量测量单元测量单元,在广域测量系统中实现对电力系统各个节点数据的同步采集和相量监测.分析了利用北斗信号的必要性和可能性, ...
最新文章
- 三维等值面提取算法(Dual Contouring)
- 关于《指针的艺术》看书时所遇到的问题
- 【News】SpagoBI中国官方微信对外发布
- php注册页面模板,选项卡式WordPress登陆注册模板
- 工程师的成熟模型_数据工程师的成熟度
- mysql索引结构优缺点_mysql索引优缺点及注意事项
- ZooKeeper系列(3):znode说明和znode状态
- Pthon入门--range()函数
- gtest的Linux使用(Google test)
- Haproxy+Nginx实现web负载均衡群集
- 测试用例(等价类法、边界值法、因果图法、判定表法、场景法、正交试验法、功能图法)
- 2022年虎年新春致地球上全体读者朋友们的一封书信
- html b5纸尺寸,b5纸尺寸大小(b5纸宽高尺寸是多少)
- intersect 相交 范围_关于CAD二次开发中(范围线自相交)相交线的问题
- 博观约取 和实生物----张铜彦先生的魏碑情结
- 人脸识别API/SDK 汇总(转)
- 神级编程网站,堪称程序员的充电站,我给你找好了不能错过
- AcWing133. 蚯蚓
- windbg的k命令
- 湖北省制造业高质量发展专项资金政策!2022年各大类申报条件以及奖励补贴标准汇总
热门文章
- 应用于CDN的GSLB系统
- Java多线程之Callable、Future和FutureTask
- 云原生背景运维转型之 SRE 实践
- 腾讯技术工程沙龙深圳站来了,我们一起聊聊“工业互联网”
- 理解RTMP、HttpFlv和HLS的正确姿势
- coroutine协程详解
- 网络直播“黑科技”:Stream Matrix
- ajax post请求不走success org.springframework.web.util.NestedServletException: Request processing failed
- java基础---IO字符流
- How to extend unallocated space to an existing partition on linux? | 如何在 linux 上扩展已有分区至未分配空间?