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

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

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

FranklinUNK 发表于 2024-6-20 15:54 | 显示全部楼层
汇编启动文件可以自己改吗
9dome猫 发表于 2024-6-30 23:18 | 显示全部楼层
随便打开一个bin文件,前4个字节为MSP堆栈指针,之后四个字节为复位中断入口地址,之后为中断向量表。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

170

主题

190

帖子

13

粉丝
快速回复 在线客服 返回列表 返回顶部