GD32 MCU启动后如何运行到main函数入口?你是否也有这样的疑虑。在执行到main函数之前MCU干了哪些事情呢?下面为大家解答。
MCMCU上电后,首先会根据BOOT0和BOOT1的状态判断从主Flash/SRAM/ISP中启动,如果BOOT0为低电平,MCU将会从主Flash中启动,即主Flash中的数据会被映射到0x0000 0000地址,ARM处理器将会从0x0000 0000地址获取栈顶指针,再从0x0000 0004获取复位中断入口地址(引导代码基地址),如下图所示,我们随便打开一个bin文件,前4个字节为MSP堆栈指针,之后四个字节为复位中断入口地址,之后为中断向量表。

MCU找到堆栈指针和复位中断入口地址之后,将会加载执行复位中断,复位中断函数定义在.s启动文件中,具体定义如下所示,进入到复位中断函数中之后,首先执行SystemInit系统初始化函数,该函数主要为系统时钟配置函数,之后跳转到main函数进行执行,也就是说在执行到main函数之前,已经进行了系统时钟配置。执行完复位中断函数之后,MCU将会进入到main函数进行执行。
;/* reset Handler */ Reset_Handler PROC EXPORT Reset_Handler [WEAK] IMPORT SystemInit IMPORT __main LDR R0, =SystemInit BLX R0 LDR R0, =__main BX R0 ENDP
-
单片机
+关注
关注
6074文章
45334浏览量
663301 -
mcu
+关注
关注
147文章
18604浏览量
386566 -
GD32
+关注
关注
7文章
429浏览量
26926
发布评论请先 登录
兆易创新GD32 MCU家族高性能产品再添新锐:GD32F503/505系列芯片实力亮相
rt thread 按照官方视频一个字一个字敲都不行,连main函数都无法进入,为什么?
GD32的串口DMA收发数据失败怎么解决?
rt-thread studio中创建不了gd32项目是怎么回事?
用gd32f470移植成功无法进入main函数,怎么解决?
基于兆易创新GD32系列MCU的GUI智能屏显解决方案
飞凌嵌入式ElfBoard ELF 1板卡-uboot启动流程分析之uboot启动阶段
兆易创新GD32 MCU闪耀2025慕尼黑上海电子展

GD32 MCU启动后如何运行到main函数
评论