使用ARM设计SOC开机/Reset后的第一条指令是啥?

ARM

36人已加入

描述

思考:

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

全部0条评论

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

×
20
完善资料,
赚取积分