ARMv8-A架构处理器的Reset vector入口地址

处理器/DSP

877人已加入

描述

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信号。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分