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
关键字:GD32 main函数
引用地址:
GD32 MCU启动后如何运行到main函数
推荐阅读最新更新时间:2024-11-10 07:18
gd32和ch32的区别
GD32和CH32是两个不同的芯片系列,都是由中国厂商GigaDevice生产的。虽然这两种芯片有许多相似之处,但它们在一些关键特性的设计和性能方面存在一些区别。 1. 处理器核心 GD32系列采用的是ARM Cortex-M3和Cortex-M4核心,而CH32系列则是基于国产神州龙的Loongson 3A核心。相比之下,ARM Cortex-M系列已经被广泛认可,许多工具链和开发板都支持它,因此GD32具有更广泛的应用范围和更好的兼容性,而CH32则相对较少。 2. 性能参数 虽然CH32系列采用了国产处理器核心,但GD32系列在性能和性价比方面占据着明显的优势。举一个例子,在单片机时钟频率为108 MHz的情况下,GD32芯
[单片机]
兆易创新亮相光博会,GD32 MCU全面赋能高、低速光模块应用
中国北京(2024年9月10日)—— 业界领先的半导体器件供应商兆易创新GigaDevice宣布,将携多款光模块应用方案 出席9月11日至13日在深圳国际会展中心举办的第25届中国国际光电博览会(展位:12号馆12D805) ,集中展现其在光通信领域的卓越技术实力和广泛的市场覆盖。 随着人工智能大模型、云计算技术的飞速发展,以及5G技术的广泛商用,加之光纤到房间(FTTR)技术的规模化部署,光通信行业正经历着前所未有的增长浪潮。这一趋势不仅催生了光模块需求的急剧攀升,也对光模块的性能提出了更高要求。光模块,作为光通信系统的核心,通过高效地进行光电信号的相互转换,确保了光纤中信号的高速、长距离传输。在光模块的内部, MCU是实现
[传感器]
STM8单片机启动流程彻底探究--基于IAR开发环境
初学STM8会发现,STM8官方的固件库并没有提供一个.s文件的启动代码,那么她是如何启动然后跳转到main函数执行的呢 首先,我们根据ARM的只是可以推测,STM8也是通过复位向量来启动的,假设流程在复位响亮中完成的,应该首先去复位向量表中间去找,看复位向量又要看存储器映射,一环扣一环 STM8使用的是统一编址技术,以下是存储器编址图 我们可以看到,最大取指空间是0XFFFFFF,也就是说,是16M,这是因为PC的特性决定的 在程序内部,它是将16M分为了256个节(sector),每个节的大小为64K,64*256= 16384K=16M,由图我们可以看到,在SECTOR0区间里面似乎还有些玄妙,之后的就是普通
[单片机]
GD32开发实战指南(基础篇) 第14章 内部温度传感器
开发环境: MDK:Keil 5.30 开发板:GD32F207I-EVAL MCU:GD32F207IK 1 内部温度传感器工作原理 GD32 有一个内部的温度传感器,可以用来测量 CPU 及周围的温度(TA)。该温度传感器在内部和 ADCx_IN16 输入通道相连接,此通道把传感器输出的电压转换成数字值。温度传感器模拟输入推荐采样时间是 17.1μs。GD32 的内部温度传感器支持的温度范围为: -40~125度。精度比较差,为±1.5℃左右。 GD32 内部温度传感器的使用很简单,只要设置一下内部 ADC,并激活其内部通道就差不多了。关于 ADC 的设置,我们在前面的章节已经进行了详细的介绍,这里就不再多说。接下来我们介
[单片机]
MCU 是如何从上电复位运行到 main 函数的?
前言 在笔者的上一篇文章中《中断服务子程序是如何被执行的》,详细阐述了中断响应以及执行的整个过程,其中涉及到关于中断向量表的相关知识,本篇文章再次以中断向量表为出发点阐述上电复位的整个过程。 复位的相关概念 复位就类似于我们的个人 PC 重启一样,又比 PC 的重启要简单一些。引起复位的原因也是多种多样,笔者在这里大致列出以下几种: 上电复位,也就是我们给我们的 MCU 通电后,其实也是一次复位的过程。 外部产生的手动复位信号,这个也比较常见,我们在平时学习所使用的开发板中就存在一个复位的按键,来实现手动的复位信号。 执行复位指令引发的复位 看门狗复位 。。。。。。 上述所示的复位虽然引起复位的原因各不相同,但是其复位的过
[单片机]
TUV莱茵与极海半导体启动车规级MCU功能安全流程及产品认证项目
9月27日,国际独立第三方检测、检验和认证机构德国莱茵TUV大中华区(简称“TUV莱茵”)与珠海极海半导体有限公司(简称“极海半导体”)在杭州举行了车规级MCU芯片功能安全流程及产品认证项目启动仪式。极海半导体CEO汪栋杰、首席科学家黄凯、副总经理曾豪,TUV莱茵中华区工业服务与信息安全副总经理张云禧等双方代表出席了启动仪式。 TUV莱茵与极海半导体启动车规级MCU功能安全流程及产品认证项目 TUV莱茵与极海半导体启动车规级MCU功能安全流程及产品认证项目 汪栋杰在致辞中表示:“很高兴与TUV莱茵合作,启动车规级MCU芯片的功能安全流程及产品认证项目,希望在TUV莱茵的专业指导下,极海半导体能够不断提升产品性能
[汽车电子]
GD32F303标准库开发:Keil5新建GD32标准库工程
新建GD32工程 步骤1:创建工程模板文件 新建一个文件夹,命名为:GD32 在文件夹GD32里面新建四个文件夹 (1)CMSIS: 存放内核驱动程序和启动引导文件 (2)FWLIB:存放库函数文件 (3)Project:存放工程文件 (4)User: 存放用户程序(主函数) 具体效果图如下: 步骤2:导入GD32固件库 GD32标准固件库下载链接 1. 打开GD32F30x固件库文件 其中需要用到的两个文件:Firmware 和 Template。 2. 导入文件到 CMSIS 文件 (1)导入内核驱动程序 GD32F30x_Firmware_Library_V2.1.3FirmwareCMSIS 中的 4 个
[单片机]