快速连接
👉👉👉【精选】ARMv8/ARMv9架构入门到精通-目录 👈👈👈
总结写在前面:
- aarch64
boot address 是允许设置的,软件可配,根据信号RVBARADDR 具体设计而定 - aarch32
0x00000000(或VBAR) 和 0xffff0000, 二选一,根据VINIT value软件可配 - ARM M系列
boot address 是固定的,比如M4/M0 是0x00000000
详细说明:
在aarch64中,exception vector中是没有Reset的。在Reset时,由RVBARADDR信号决定RVBAR_EL3的值,PC指向的第一条地址从RVBAR_EL3中读出
在aarch32中,Reset做为exception vector的一部分,芯片复位即PC跳转到向量表的reset offset,那么第一条指令的地址是什么?这就和Exception vectors start相关。而<font color=red size=4>VINITHI信号</font>决定了SCTLR.V的值.
- 对于未实现secure monitore的情况:
SCTLR.V = 0 : Exception vectors start=0x00000000
SCTLR.V = 1 : Exception vectors start=0xffff0000 - 对于实现secure monitor的情况:
对于secure monitor level, Exception vectors start = MVBAR
对于Normal EL1 level:
normal SCTLR.V = 0 : Exception vectors start=normal VBAR
normal SCTLR.V = 1 : Exception vectors start=0xffff0000
对于Secure EL1 level:
secure SCTLR.V = 0 : Exception vectors start=secure VBAR
secure SCTLR.V = 1 : Exception vectors start=0xffff0000
参考:
1、 ARMV7-AR的page 1164
2、RVBARADDR信号和VINITHI信号的介绍请参考<Cortex-A53的configuration signals>
关注"Arm精选"公众号,备注进ARM交流讨论区。