[architecture]-CPU(ARM)启动的第一条指令
生活随笔
收集整理的這篇文章主要介紹了
[architecture]-CPU(ARM)启动的第一条指令
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
👉👉👉 個人博客筆記導讀目錄(全部) 👈👈👈
思考:
對于使用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信號決定RVBAR_EL3的值,PC指向的第一條地址從RVBAR_EL3中讀出
在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信號的介紹請參考<Cortex-A53的configuration signals>
總結
以上是生活随笔為你收集整理的[architecture]-CPU(ARM)启动的第一条指令的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [Issue Fixed]-分卷压缩解压
- 下一篇: [architecture]-Corte