GD32 MCU啟動后如何運行到main函數入口?你是否也有這樣的疑慮。在執(zhí)行到main函數之前MCU干了哪些事情呢?下面為大家解答。
MCMCU上電后,首先會根據BOOT0和BOOT1的狀態(tài)判斷從主Flash/SRAM/ISP中啟動,如果BOOT0為低電平,MCU將會從主Flash中啟動,即主Flash中的數據會被映射到0x0000 0000地址,ARM處理器將會從0x0000 0000地址獲取棧頂指針,再從0x0000 0004獲取復位中斷入口地址(引導代碼基地址),如下圖所示,我們隨便打開一個bin文件,前4個字節(jié)為MSP堆棧指針,之后四個字節(jié)為復位中斷入口地址,之后為中斷向量表。

MCU找到堆棧指針和復位中斷入口地址之后,將會加載執(zhí)行復位中斷,復位中斷函數定義在.s啟動文件中,具體定義如下所示,進入到復位中斷函數中之后,首先執(zhí)行SystemInit系統(tǒng)初始化函數,該函數主要為系統(tǒng)時鐘配置函數,之后跳轉到main函數進行執(zhí)行,也就是說在執(zhí)行到main函數之前,已經進行了系統(tǒng)時鐘配置。執(zhí)行完復位中斷函數之后,MCU將會進入到main函數進行執(zhí)行。
;/* reset Handler */ Reset_Handler PROC EXPORT Reset_Handler [WEAK] IMPORT SystemInit IMPORT __main LDR R0, =SystemInit BLX R0 LDR R0, =__main BX R0 ENDP
-
單片機
+關注
關注
6076文章
45492瀏覽量
670188 -
mcu
+關注
關注
147文章
18917瀏覽量
397921 -
GD32
+關注
關注
7文章
432瀏覽量
27329
發(fā)布評論請先 登錄
兆易創(chuàng)新GD32 MCU如何續(xù)寫嵌入式創(chuàng)新之路
兆易創(chuàng)新正式推出GD32 Embedded AI平臺
兆易創(chuàng)新GD32 MCU家族高性能產品再添新銳:GD32F503/505系列芯片實力亮相
rt thread 按照官方視頻一個字一個字敲都不行,連main函數都無法進入,為什么?
GD32的串口DMA收發(fā)數據失敗怎么解決?
rt-thread studio中創(chuàng)建不了gd32項目是怎么回事?
用gd32f470移植成功無法進入main函數,怎么解決?
基于兆易創(chuàng)新GD32系列MCU的GUI智能屏顯解決方案
MCU反復啟動運行緩慢怎么解決?
飛凌嵌入式ElfBoard ELF 1板卡-uboot啟動流程分析之uboot啟動階段
兆易創(chuàng)新GD32 MCU閃耀2025慕尼黑上海電子展
GD32 MCU啟動后如何運行到main函數
評論