处理器/DSP
1.引言
对于ARMv8-A架构的处理器,上电复位后是从哪个地址开始执行第1条指令的呢?这就引出了本文讨论的主题—ARMv8-A处理器的Reset vector入口地址是如何确定的?Reset vector入口地址很重要,因为只有以这个地址作为起始地址将程序固化到非易失存储器(比如ROM、NOR Flash等),处理器上电复位时才能找到Reset vector代码,顺利地完成bring-up。
2.Reset vector入口地址确定
ARMv8-A架构处理器的Reset vector入口地址是多少呢?答案是依据具体运行条件而定。
ARMv8-A架构处理器支持2种执行状态,AArch32和AArch64,即32-bit执行状态和64-bit执行状态。对于这2种执行状态,Reset vector的入口地址是不同的。
2.1AArch32和AArch64执行状态的确定
处理器上电复位后,运行在何种执行状态是如何决定的呢?是由处理器内部硬件信号AA64nAA32决定的,这个信号是芯片设计时进行配置的。在处理器上电复位时,通过采样 AA64nAA32的信号值决定进入对应的执行状态。我们在ARMv8-A架构处理器的TRM手册中可以具体了解AA64nAA32信号。
2.2AArch32执行状态入口地址
对于AArch32执行状态,入口地址由寄存器SCTLR.V值决定,而SCTLR.V值由处理器内部硬件信号VINITHI 决定的,这个信号是芯片设计时进行配置的。在处理器上电复位时,通过采样VINITHI的信号值,给寄存器SCTLR.V赋值,进而获取入口地址。我们在ARMv8-A架构处理器的TRM手册中可以具体了解VINITHI信号。
(1)SCTLR.V值为0时,为0x00000000;
(2)SCTLR.V值为1时,为0xFFFF0000。
2.3AArch64执行状态入口地址
对于AArch64执行状态,入口地址由处理器内部硬件信号RVBARADDR决定,这个信号是芯片设计时进行配置的。在处理器上电复位时,通过采样RVBARADDR的信号值,读入到RVBAR_EL3寄存器,获取入口地址。我们在ARMv8-A架构处理器的TRM手册中可以具体了解RVBARADDR信号。
全部0条评论
快来发表一下你的评论吧 !