baron · 3月31日 · 四川

[architecture]-CPU(ARM)启动的第一条指令

快速连接

👉👉👉【精选】ARMv8/ARMv9架构入门到精通-目录 👈👈👈


 title=


总结写在前面:

  • 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交流讨论区。
图片1.png

推荐阅读
关注数
9467
内容数
212
以易懂、渐进、有序的方式,深入探讨ARMv8/ARMv9架构的核心概念。我们将从基础知识开始,逐步深入,覆盖最新的架构,不再纠缠于过时技术。本系列内容包含但不限于ARM基础、SOC芯片基础、Trustzone、gic、异常和中断、AMBA、Cache、MMU等内容,并将持续更新。
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息