Linux系统调试课(CPU篇)CPU架构与寄存器调试

发布时间:2026/9/24 2:53:21
Linux系统调试课(CPU篇)CPU架构与寄存器调试 文章目录一、概述二、RK3506 Cortex-A7 架构2.1 Cortex-A7 特性2.2 SoC 内部结构2.3 /proc/cpuinfo 解读三、ARMv7 寄存器与调试方法3.1 ARMv7 寄存器体系3.2 CPSR 寄存器位域3.3 perf 硬件计数器四、源码解析4.1 /proc/cpuinfo 生成:c_show4.2 寄存器保存:__switch_to五、RK3506 设备树与缓存层次5.1 CPU 节点5.2 缓存层次六、关键特性与约束七、调试命令与实战案例7.1 常用调试命令7.2 实战案例:perf 硬件计数器不可用📝 本节总结🏠 课后练习各位好,上一章我们讲了上下文切换,知道了 CPU 在任务间来回切换是有代价的。这一章我们退一步,先把"我们调试的这块 CPU 到底是什么"搞清楚–也就是 RK3506 的 Cortex-A7 架构和 ARMv7 寄存器体系。这是 CPU 篇的"认识硬件"课,也是后面 perf(CPU:10)、上下文切换(CPU:01)的硬件基础,注意前后呼应。本章大概 30 到 35 分钟,重点放在第二节架构特性、第三节寄存器体系和第七节的 PMU 不可用案例;寄存器体系那节偏理论,如果觉得深,先抓住 r0-r15 的作用和 CPSR 的中断位就行,位域深挖可以放后面。开讲前建议大家先在板子上敲一个cat /proc/cpuinfo,看着真实输出,带着"这些字段什么意思"的疑问往下听。一、概述性能调优的第一步,永远是理解硬件本身。RK3506 搭载三核 Cortex-A7,ARMv7 32 位,共享 256KB L2 缓存,支持 NEON 和 VFPv4。你后面用 perf 分析热点、用/proc/cpuinfo确认配置、排查"为什么 perf 硬件计数器不可用",都建立在对这套架构的理解上。如果连 CPU part 号0xc07代表什么都不知道,排查就会卡在第一步。本章我们就把这几件事讲透:Cortex-A7 的架构特性、ARMv7 的寄存器体系、/proc/cpuinfo每个字段的含义和生成原理、以及 perf 硬件计数器的使用。最后用一个真实案例–“perf 硬件计数器不可用”–把前面的知识串起来。学完本章你将能回答:/