ARM初始化及異常向量表

2021-07-11 09:28:01 字數 881 閱讀 6933

今天玩zynq的freertos時,扒啟動時又忘記arm是怎麼啟動的了,應該是這樣:

arm啟動時首先找.vectors區間,而該區間就包含了_vector_table(異常向量表),arm的異常向量表構造如下:

異常型別 

復  位 

未定義指令 

軟中斷 

預取指令終  

資料終止 

保留 中斷請求(irq) 

快速中斷請求(fiq) 

舉例freertos v8.23(port_asm_vectors.s檔案)

_freertos_vector_table:

b _boot

b freertos_undefined

ldr   pc, _swi

b freertos_prefetchaborthandler

b freertos_dataaborthandler

nop /* placeholder for address exception vector*/

ldr   pc, _irq

b freertos_fiqhandler

而xilinx的standalone v5.3(asm_vectors.s)

_vector_table:

b_boot

bundefined

bsvchandler

bprefetchaborthandler

bdataaborthandler

nop/* placeholder for address exception vector*/

birqhandler

bfiqhandler

因此,位址0x00000000位置即為_boot,即開始執行_boot內容

ARM的異常及向量表

arm具有7種異常,分別為 1 復位 2 未定義指令 3 軟中斷 4 預取指令終止 5 資料終止 6 中斷請求 irq 7 快速中斷請求 fiq 用一句通俗的話去表達arm的運 況,那就是arm總會在執行在以上7種異常情況的某一種之下。初初了解arm時總會難於去了解這個 異常 是什麼樣的乙個意思,到...

關於初始化及初始化順序

首先,類的成員變數會被自動初始化,並且會在構造器被呼叫前發生,如下 public class testinitialization public static void main string args 如下 主類 public class staticinitialization 呼叫main之前...

多維向量vector的初始化

vector ope 對於ope多維向量來說,如果沒有初始化其長度,是不可以通過ope 0 1 來初始化的,這時系統會報錯!解決方法 1.就是用push back 函式向末尾新增元素。include include includeusing namespace std int main for in...