12

baron · 2023年02月06日 · 江苏

CPU(ARM)启动的第一条指令

image.png

思考:

对于使用ARM设计的SOC,开机/Reset后的第一条指令是啥?一上电PC指向哪里呢?


总结写在前面:

  • aarch64 boot address 是允许设置的,软件可配,根据信号RVBARADDR 具体设计而定
  • aarch32 0x00000000(或VBAR) 和 0xffff0000, 二选一,根据VINIT value软件可配
  • ARM M系列 boot address 是固定的,比如M4/M0 是0x00000000

详细说明:在aarch64中,exception vector中是没有Reset的。在Reset时,由RVBARADDR信号决定RVBAREL3的值,PC指向的第一条地址从RVBAREL3中读出

在aarch32中,Reset做为exception vector的一部分,芯片复位即PC跳转到向量表的reset offset,那么第一条指令的地址是什么?这就和Exception vectors start相关。而VINITHI信号决定了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信号的介绍请参考


image.png

image.png

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