历史上的今天
今天是:2024年09月12日(星期四)
2019年09月12日 | 秉火429笔记之四启动文件分析
2019-09-12 来源:eefocus
名为“startup_stm32f429_439xx.s”的文件,它里边使用汇编语言写好了基本程序,当STM32芯片上电启动的时候,首先会执行这里的汇编程序,从而建立起C语言的运行环境,所以我们把这个文件称为启动文件。该文件使用的汇编指令是Cortex-M4内核支持的指令,可从《Cortex-M4 Technical Reference Manual》查到,也可参考《Cortex-M3权威指南中文》,M3跟M4大部分汇编指令相同。
startup_stm32f429_439xx.s文件是由官方提供的,一般有需要也是在官方的基础上修改,不会自己完全重写。该文件可以从 KEIL5 安装目录找到,也可以从 ST 库里面找到,找到该文件后把启动文件添加到工程里面即可。不同型号的芯片以及不同编译环境下使用的汇编文件是不一样的,但功能相同。
启动文件主要功能:
初始化堆栈指针 SP
初始化程序计数器指针 PC
设置堆、栈的大小
设置中断向量表的入口地址
配置外部SRAM作为数据存储器(根据需要配置)
调用systemInit() 函数配置STM32的系统时钟
设置C库的分支入口“ __main” (最终用来调用main函数)
__main 其实不是我们定义的(不要与C语言中的main函数混淆),当编译器编译时,只要遇到这个标号就会定义这个函数,该函数的主要功能是:负责初始化栈、堆,配置系统环境,准备好C语言并在最后跳转到用户自定义的 main 函数,从此来到 C 的世界。

上一篇:秉火429笔记之七位带操作
史海拾趣
|
市场上卖的那个切换的叫什么东西来着?呵,第一次碰到这种问题哈,以前都是见到一台主机用多个显示器来着的。 比较急,哪位大哥可以详细的说明一下。以及设备的价格?感激不尽… 查看全部问答> |
|
IMPORT |Image$$RO$$Base| ; Base of ROM code IMPORT |Image$$RO$$Limit| ; End of ROM code (=start of ROM data) & ...… 查看全部问答> |
|
感觉新手发布的帖子很少被关注,新手的求助很少有人提供帮助。知道大家都很忙,但是还是请高手们挤出点时间,多帮助帮助我们这些新手。在这个充满爱心的论坛,让不管是新手还是高手,都感觉到家一样的温暖!谢谢大家!… 查看全部问答> |
|
请教达人: 我设计的设备采用总线插槽的方式,除电源板、DSP板卡外还有5个扩展板卡,其中2个输出3个输入,每个板卡上均有cpld,cpld实现简单的译码功能。DSP读输入板卡时发现: 1、3块输入cpld板卡都插上时,dsp循环读各输入板卡数据,从ccs窗口 ...… 查看全部问答> |




