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

MCU找到堆棧指針和復(fù)位中斷入口地址之后,將會(huì)加載執(zhí)行復(fù)位中斷,復(fù)位中斷函數(shù)定義在.s啟動(dòng)文件中,具體定義如下所示,進(jìn)入到復(fù)位中斷函數(shù)中之后,首先執(zhí)行SystemInit系統(tǒng)初始化函數(shù),該函數(shù)主要為系統(tǒng)時(shí)鐘配置函數(shù),之后跳轉(zhuǎn)到main函數(shù)進(jìn)行執(zhí)行,也就是說在執(zhí)行到main函數(shù)之前,已經(jīng)進(jìn)行了系統(tǒng)時(shí)鐘配置。執(zhí)行完復(fù)位中斷函數(shù)之后,MCU將會(huì)進(jìn)入到main函數(shù)進(jìn)行執(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
-
單片機(jī)
+關(guān)注
關(guān)注
6074文章
45453瀏覽量
667087 -
mcu
+關(guān)注
關(guān)注
147文章
18786瀏覽量
392952 -
GD32
+關(guān)注
關(guān)注
7文章
430瀏覽量
27139
發(fā)布評論請先 登錄
兆易創(chuàng)新GD32 MCU家族高性能產(chǎn)品再添新銳:GD32F503/505系列芯片實(shí)力亮相
如何直接從main函數(shù)開始仿真?
rt thread 按照官方視頻一個(gè)字一個(gè)字敲都不行,連main函數(shù)都無法進(jìn)入,為什么?
gd32 env配置報(bào)錯(cuò)是什么原因呢?
GD32的串口DMA收發(fā)數(shù)據(jù)失敗怎么解決?
rt-thread studio中創(chuàng)建不了gd32項(xiàng)目是怎么回事?
用gd32f470移植成功無法進(jìn)入main函數(shù),怎么解決?
基于兆易創(chuàng)新GD32系列MCU的GUI智能屏顯解決方案
MCU反復(fù)啟動(dòng)運(yùn)行緩慢怎么解決?
飛凌嵌入式ElfBoard ELF 1板卡-uboot啟動(dòng)流程分析之uboot啟動(dòng)階段
兆易創(chuàng)新GD32 MCU閃耀2025慕尼黑上海電子展
GD32與STM32有什么區(qū)別
GD-LINK無法在KEIL上調(diào)試怎么解決?
GD32單片機(jī)GPIO結(jié)構(gòu)及注意事項(xiàng)
GD32 MCU啟動(dòng)后如何運(yùn)行到main函數(shù)
評論