今天玩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...