建议使用以下浏览器,以获得最佳体验。 IE 9.0+以上版本 Chrome 31+ 谷歌浏览器 Firefox 30+ 火狐浏览器
请选择 进入手机版 | 继续访问电脑版
设置昵称

在此一键设置昵称,即可参与社区互动!

确定
我再想想
选择版块
直达楼层
标签
您还可以添加5个标签
  • 没有搜索到和“关键字”相关的标签
  • 云产品
  • 解决方案
  • 技术领域
  • 通用技术
  • 平台功能
取消

采纳成功

您已采纳当前回复为最佳回复

buyi

发帖: 14粉丝: 4

发消息 + 关注

发表于2021年02月13日 09:22:39 110 5
直达本楼层的链接
楼主
显示全部楼层
[技术干货] stm32 启动文件与汇编简析(1)

以stm32f40xxx系列为例

一、启动文件,startup_stm32f40_41xxx.S

1.定义:启动文件由汇编填写,是系统上电复位后第一个执行的程序。

2.特征

(1)初始化堆栈指针SP=_initial_sp

(2)初始化PC指针=Reset_Handler

(3)初始化中断向量表。

(4)配置系统时钟。

(5)调用c库函数_main初始化用户堆栈,从而最终调用main函数去到c的内容。

二、汇编指令

启动文件使用ARM汇编指令汇总

EQU   给数字常量取一个符号名,相当于c语言define。

AREA  汇编一个新的代码段或数据段。

SPACE  分配内存空间。

PRESERVE8 当前文件堆栈需按照8字节对齐。

EXPORT  声明一个标号具有全局性,可被外部文件使用。

DCD 以字为单位分配内存,要求4字节对齐,并要求初始化这些内存。

PROC 定义子程序,与ENDP成对使用,表示子程序结束。

WEAK 弱定义,如果外部文件声明一个标号,则优先使用外部文件定义的标号,如果外部文件没有定义也不会出错。要注意这个不是ARM指令,是编              译器的。

IMPORT  声明标号来自外部文件,跟c语言EXTERN关键字类似。

B  跳转到一个标志号。


举报
分享

分享文章到朋友圈

分享文章到微博

采纳成功

您已采纳当前回复为最佳回复

o0龙龙0o

发帖: 253粉丝: 30

发消息 + 关注

发表于2021年02月13日 13:10:09
直达本楼层的链接
沙发
显示全部楼层

不知道你这个.s文件的内容,不过看起来,时keil的吧

启动文件和编译器有关联,是对编译器的预配置和参数功能的时间,所以每种编译器有着不一样的启动文件。

评论
buyi 2021-2-13 23:32 评论

是的是的,不过执行流程都是一样的,所以只讲述过程,不细谈。

... 查看全部
点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复

Jack20

发帖: 149粉丝: 165

发消息 + 关注

发表于2021年02月13日 15:34:14
直达本楼层的链接
板凳
显示全部楼层

谢谢分享,新年快乐!

点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复

ttking

发帖: 380粉丝: 23

发消息 + 关注

发表于2021年02月13日 17:02:03
直达本楼层的链接
地板
显示全部楼层

谢谢分享

点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复

极客潇

发帖: 477粉丝: 68

发消息 + 关注

发表于2021年02月14日 16:13:25
直达本楼层的链接
5#
显示全部楼层

谢谢分享

点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复
发表于2021年02月14日 19:32:07
直达本楼层的链接
6#
显示全部楼层

感谢分享 新的一天 从你开始~

点赞 评论 引用 举报

游客

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

结贴

您对问题的回复是否满意?
满意度
非常满意 满意 一般 不满意
我要反馈
0/200