ARM可信固件(ATF)启动阶段CPU寄存器置零相关问题咨询
ATF BL1安全启动寄存器初始化相关说明
ATF的BL1启动流程中存在明确的处理器寄存器初始化代码,相关逻辑及位置如下:
- 通用寄存器与系统控制寄存器初始化
入口代码位于BL1的启动汇编文件中,32位架构对应路径为bl1/aarch32/bl1_entrypoint.S,64位架构对应路径为bl1/aarch64/bl1_entrypoint.S。复位后执行的第一组操作就包含通用寄存器清零、SCTLR系统控制寄存器、VBAR异常向量基地址寄存器等核心架构寄存器的初始化。 - 核心特有寄存器初始化
不同Cortex核心的特有寄存器初始化逻辑放在对应核心的支持文件中,路径为lib/cpus/aarch32/(32位)或lib/cpus/aarch64/(64位)。你使用的Cortex-A7对应文件为lib/cpus/aarch32/cortex_a7.S,其中内置了该核心专属的控制寄存器、缓存相关寄存器、性能监视器寄存器的初始化函数,会在BL1入口早期被调用。 - 平台自定义寄存器初始化
厂商自定义的平台相关寄存器初始化逻辑通常放在plat/[厂商标识]/[平台型号]/bl1_plat_setup.c或对应平台的汇编启动文件中,一般通过bl1_early_platform_setup回调函数执行。
如果要排查未初始化寄存器访问问题,可以优先断点验证上述代码的执行顺序:确认寄存器初始化逻辑是否在你触发异常的代码之前正常执行完成。

内容的提问来源于stack exchange,提问作者Arie
相关产品推荐
相关产品推荐

