OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3758|回复: 4

小弟求问:STM32程序烧录入CPU后,到从main函数开始执行,这个过程是怎么样的,其中发生了什么呢?

[复制链接]

17

主题

54

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
310
金钱
310
注册时间
2016-7-1
在线时间
94 小时
发表于 2016-11-30 14:04:43 | 显示全部楼层 |阅读模式
5金钱
在烧录程序的时候突然想到了这个问题,但是查了一下有的解释,也没看懂,求哪位高人细细道来!!!

我的问题:STM32程序烧录入CPU后,到从main函数开始执行,这个过程是怎么样的,其中发生了什么呢?

最佳答案

查看完整内容[请看2#楼]

这个过程涉及到文件的编译、链接以及中断的跳转问题 下面我仅以gnu工具链来说明,其他编译工具都差不多。 gcc将我们的源文件编译成目标文件,常用.o结尾,然后链接器将这些目标文件连接成一个二进制的可执行文件,比如elf,bin,hex等 这里面就设计到地址的问题,首先怎么编译,这是由makefile文件决定的,makefile文件定制了各种编译的依赖规则,编译是就依靠这些规则完成。然后怎么链接,这是由连接脚本决定的,连接脚本主要 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

64

帖子

3

精华

高级会员

Rank: 4

积分
768
金钱
768
注册时间
2014-3-11
在线时间
55 小时
发表于 2016-11-30 14:04:44 | 显示全部楼层
这个过程涉及到文件的编译、链接以及中断的跳转问题
下面我仅以gnu工具链来说明,其他编译工具都差不多。
gcc将我们的源文件编译成目标文件,常用.o结尾,然后链接器将这些目标文件连接成一个二进制的可执行文件,比如elf,bin,hex等
这里面就设计到地址的问题,首先怎么编译,这是由makefile文件决定的,makefile文件定制了各种编译的依赖规则,编译是就依靠这些规则完成。然后怎么链接,这是由连接脚本决定的,连接脚本主要完成这些事情:
1、程序的入口地址在哪儿?有ENTRY语句决定
2、目标文件的地址怎么分布,这是有SECTIONS语句决定的

等一个bin文件生成完成(编译链接)后,烧写到cpu中,烧写地址是由烧录器决定的,比如JLink等,通常烧录地址跟编译地址需要相同才能启动,启动后程序从连接脚本的ENTRY指定入口函数运行,该函数会完成cpu的硬件初始化,然后跳转到main,然后才是我们通常编写的用户函数
回复

使用道具 举报

17

主题

344

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1280
金钱
1280
注册时间
2013-12-14
在线时间
567 小时
发表于 2016-11-30 14:11:57 | 显示全部楼层
这个楼主看一下启动文件,就可以知道了。
网上有stm32启动文件的解析,大概做的就是为堆栈分配地址,为单片机分配异常和中断的入口,在RESET异常,跳到main函数的入口。
不知道楼主具体是哪里没有看懂,让坛友们共同讨论一下,互相提高。
半导体->模拟电路->数字电路->单片机->汇编->C->操作系统->java
回复

使用道具 举报

1

主题

561

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1183
金钱
1183
注册时间
2015-5-28
在线时间
149 小时
发表于 2016-11-30 14:26:34 | 显示全部楼层
使能CPU时钟以及外设时钟,配置内存堆栈大小,准备C语言的运行环境,最后跳转到main函数的地址去~
回复

使用道具 举报

19

主题

702

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3339
金钱
3339
注册时间
2013-7-30
在线时间
708 小时
发表于 2016-11-30 14:28:15 | 显示全部楼层
研究一下u-boot的启动过程,你就知道了
思想很重要,无论做人还是编程!
我的技术公众号【微联智控工作室】
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-25 19:12

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表