打印

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

[复制链接]
1987|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
GD32 MCU启动后如何运行到main函数入口?你是否也有这样的疑虑。在执行到main函数之前MCU干了哪些事情呢?下面为大家解答。
MCMCU上电后,首先会根据BOOT0BOOT1的状态判断从主Flash/SRAM/ISP中启动,如果BOOT0为低电平,MCU将会从主Flash中启动,即主Flash中的数据会被映射到0x0000 0000地址,ARM处理器将会从0x0000 0000地址获取栈顶指针,再从0x0000 0004获取复位中断入口地址(引导代码基地址),如下图所示,我们随便打开一个bin文件,前4个字节为MSP堆栈指针,之后四个字节为复位中断入口地址,之后为中断向量表。
MCU找到堆栈指针和复位中断入口地址之后,将会加载执行复位中断,复位中断函数定义在.s启动文件中,具体定义如下所示,进入到复位中断函数中之后,首先执行SystemInit系统初始化函数,该函数主要为系统时钟配置函数,之后跳转到main函数进行执行,也就是说在执行到main函数之前,已经进行了系统时钟配置。执行完复位中断函数之后,MCU将会进入到main函数进行执行。
C
;/* reset Handler */
Reset_Handler   PROC
                EXPORT  Reset_Handler                     [WEAK]
                IMPORT  SystemInit
                IMPORT  __main
                LDR     R0, =SystemInit
                BLX     R0
                LDR     R0, =__main
                BX      R0
                ENDP

本教程由GD32 MCU方案商聚沃科技原创发布,了解更多GD32 MCU教程,关注聚沃科技官网,GD32MCU技术交流群:859440462

使用特权

评论回复
沙发
FranklinUNK| | 2024-6-20 15:54 | 只看该作者
汇编启动文件可以自己改吗

使用特权

评论回复
板凳
9dome猫| | 2024-6-30 23:18 | 只看该作者
随便打开一个bin文件,前4个字节为MSP堆栈指针,之后四个字节为复位中断入口地址,之后为中断向量表。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

170

主题

190

帖子

9

粉丝