ARM架構的程序都是從0x00地址開始啓動的。架構
程序中大部分包含BootLoader和APP兩部分程序。ui
上電時,程序首先在BootLoader中運行,此時的中斷向量表在flash的起始地址,即:0x0800 0000,當程序須要從BootLoader跳轉的App中執行的時候,須要把中斷向量表重映設到APP的起始部分,例如:0x0800 1000.此時從該地址+4取到reset_handler的回調程序,開始執行App程序。debug
有一點須要注意,在debug的時候,程序也不是直接從0x0800 1000 開始執行,而是從0x0800 0000開始執行的,執行BootLoader的程序時跳轉到App的reset_handler中。flash
SCB->VTOR = (uint32_t)fw_addr;bug