0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

聚沃科技 2024-01-15 10:00 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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堆栈指针,之后四个字节为复位中断入口地址,之后为中断向量表。

wKgZomWkkZ-AXdcaAADF2Kcmzuc258.png

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6078

    文章

    45618

    浏览量

    674992
  • mcu
    mcu
    +关注

    关注

    147

    文章

    19223

    浏览量

    405087
  • GD32
    +关注

    关注

    7

    文章

    435

    浏览量

    27686
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    求助 GD32F303CCT6 + ADAU1701 的I2C不能通信

    是否有已知的坑? 是否推荐使用其他引脚组合? 有没有已经跑通的 GD32 + ADAU1701 的参考代码? 能分享一下 I2C 初始化和读写函数吗? 我的代码框架 c 复制 下载 // I2C0
    发表于 05-10 11:02

    兆易创新GD32 MCU如何续写嵌入式创新之路

    自2013年发布国内首颗Cortex-M3内核32位MCU以来,GD32 MCU历经十余年发展,截至2025年底累计出货量已突破25亿颗,依托完整的产品矩阵、日益完善的开发生态、聚焦场景的垂直解决方案以及稳定可靠的供应链布局,逐
    的头像 发表于 02-24 09:39 1247次阅读
    兆易创新<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b>如何续写嵌入式创新之路

    瑞萨RX MCU启动文件详解

    本文详细介绍了RX MCU从复位进入main函数的过程,有助于读者对RX MCU体系结构的理解,RAM和ROM的初始化,以及bootloa
    的头像 发表于 02-11 08:43 1.6w次阅读
    瑞萨RX <b class='flag-5'>MCU</b><b class='flag-5'>启动</b>文件详解

    兆易创新正式推出GD32 Embedded AI平台

    端侧AI已成为嵌入式产业智能化升级的核心引擎,开发者对高效部署、轻量化适配的需求日益迫切。近日,兆易创新正式推出GD32 Embedded AI平台,为GD32 MCU产品家族注入AI算力,赋能工业检测、智能家居、安防设备及消费
    的头像 发表于 01-24 09:19 2215次阅读
    兆易创新正式推出<b class='flag-5'>GD32</b> Embedded AI平台

    兆易创新GD32 MCU家族高性能产品再添新锐:GD32F503/505系列芯片实力亮相

    GD32 MCU高性能产品线再添新锐。该系列基于Arm®v8-M架构,主频高达280MHz,具备灵活的存储配置、高集成度、内置多种安全功能,为高性能计算提供坚实基础,可广泛应用于数字电源、工业自动化、电机
    的头像 发表于 11-05 09:24 1038次阅读

    如何直接从main函数开始仿真?

    提出问题 用最新的官方编译器得到的汇编文件在程序开始运行时会有很多初始化和预处理的步骤,但是仿真时不需要这些初始化,我们只关心main函数开始CPU及NICE_core的表现。否则可
    发表于 11-05 06:10

    rt thread 按照官方视频一个字一个字敲都不行,连main函数都无法进入,为什么?

    教程,移植时修改gd官方启动文件将bl main 改为了 bl entry 目前都还好 一直可以执行这里,然后就不动了 在idle.c 两个
    发表于 09-28 07:43

    gd32 env配置报错是什么原因呢?

    rtt官网下载源码和env使用env配置gd32报如下错误请问是什么原因呢?
    发表于 09-25 06:19

    GD32的串口DMA收发数据失败怎么解决?

    gd32_hw_usart_init()函数中并未注册DMA收发的方式, GD32函数如下: 而STM32的该函数如下: 查找
    发表于 09-17 06:04

    rt-thread studio中创建不了gd32项目是怎么回事?

    为什么在rt-thread studio中创建一个gd32项目时候,他打开的那个选型芯片型号是,安装好了,没有确认键啊,只有退出sdk管理器,然后就卡在那里了,创建不了gd32的项目
    发表于 09-15 06:56

    gd32f470移植成功无法进入main函数,怎么解决?

    如下所示,我之前用gd32f470移植成功无法进入main函数,之后用官方例程用stm32f407去跑也还是这样
    发表于 09-10 06:24

    基于兆易创新GD32系列MCU的GUI智能屏显解决方案

    随着人机交互需求的不断提升,图形用户界面(GUI)已成为各类智能设备的核心组成部分。兆易创新GD32系列MCU凭借其丰富的外设接口和强大的处理能力,为用户们提供了全面的GUI屏显解决方案,从低功耗小型显示屏高分辨率彩色触摸屏,
    的头像 发表于 08-19 14:49 2017次阅读
    基于兆易创新<b class='flag-5'>GD32</b>系列<b class='flag-5'>MCU</b>的GUI智能屏显解决方案

    GD32F4xx系列MCU基础工程资料

    GD32F4xx系列MCU基础工程创建.
    发表于 08-04 14:53 2次下载

    MCU反复启动运行缓慢怎么解决?

    我们的 XMC4500 遇到了一个奇怪的问题。在某种情况下,我发现 MCU 似乎突然运行得更慢了。我观察以下情况: 1) CAN 消息发送速度大约慢 11.7 倍。 2) 我们的闪烁 LED 频率
    发表于 07-15 06:21

    飞凌嵌入式ElfBoard ELF 1板卡-uboot启动流程分析之uboot启动阶段

    (arch/arm/cpu/armv7/start.S)函数, reset函数进行设置CPU运行模式,关闭中断等一系列CPU内部环境初始化,跳转到_
    发表于 05-30 09:24