STM32-启动文件详解
创始人
2024-05-10 16:55:05
0

✅作者简介:嵌入式入坑者,与大家一起加油,希望文章能够帮助各位!!!!
📃个人主页:@rivencode的个人主页
🔥系列专栏:玩转FreeRTOS
💬推荐一款模拟面试、刷题神器,从基础到大厂面试题👉点击跳转刷题网站进行注册学习

一.前言

还是那句老话基础不牢地动山摇,今天主要来分析由汇编语言编写的启动文件,在进行main函数之前到底做了哪些准备工作,本篇文章所涉及到的部分汇编指令,以及CPU寄存器SP,PC,LR作用,以及最重要的什么是堆和栈请看->《FreeRTOS-ARM架构与程序的本质》,里面已经详细的阐述了以上问题,本文主要是了解启动文件的作用。

常用汇编指令
在这里插入图片描述

二.汇编文件的作用

一共就下列几个作用
在这里插入图片描述
接下来就是结合汇编代码来理解

1.分配堆和栈

在这里插入图片描述
EQU:宏定义的伪指令,相当于等于,类似与 C 中的 define。
AREA:告诉汇编器汇编一个新的代码段或者数据段。STACK\HEAP 表示段名,这个可以任意命名;NOINIT 表示不初始化;READWRITE 表示可读可写,ALIGN=3,表示按照 2^3对齐,即 8 字节对齐。
SPACE:用于分配一定大小的内存空间,单位为字节。这里指定大小等于 Stack_Size。

标号__initial_sp 紧挨着 SPACE 语句放置,表示栈顶地址,栈是由高向低生长的。

__heap_base 表示对的起始地址,__heap_limit 表示堆的结束
地址。堆是由低向高生长的,跟栈的生长方向相反。

在这里插入图片描述

2.定义向量表

关于中断的知识—>《中断-NVIC与EXTI外设详解》
在这里插入图片描述
向量表:
在这里插入图片描述
其实向量表的本质就是一个元素大小为4字节的数组,而这个数组里面的元素就是这些中断服务函数的名字(也就是中断服务函数的地址),而这张向量表默认就放在flash起始地址处,注意向量表的第一个存储的是栈顶指针(栈顶的地址),开发板上电复位时由CPU将这个栈顶地址赋给CPU的栈寄存器SP

重点:向量表有什么用呢?
当中断来临时内核就会去向量表中找出对应的中断服务函数的地址,并将地址赋给PC寄存器,进而程序跳转去执行中断函数,而这个过程就是由硬件帮助我们完成的。

3.复位程序

在这里插入图片描述
上面的0x0000 0000地址是相当于是flash上的起始地址0x8000 0000
什么叫硬件复位:通俗点将按一下板子上面的复位按钮,自会有硬件电路实现对板子的复位工作。
在这里插入图片描述

一定一定看懂下图,关于flash 的起始地址以及CPU寄存器SP,PC有何作用请看->《FreeRTOS-ARM架构与程序的本质》

在这里插入图片描述

Reset handler的作用
在这里插入图片描述
在这里插入图片描述
Reset handler函数内部会调用_main 函数,而_main调用到main函数进入到C语言的世界,但是_main 在调用main之前做了什么事情呢?
初始化堆栈:

在这里插入图片描述
当然_main做到事情远不止这些,还有关于BL如何返回详情参考—>《FreeRTOS-ARM架构与程序的本质》

反正_main函数的最后会调用main函数,然后你就可以随意的写C代码了

4.中断服务程序

在启动文件里面已经帮我们写好所有中断的中断服务函数,跟我们平时写的中断服务函数不一样的就是这些函数都是空的,真正的中断复服务程序需要我们在外部的 C 文件里面重新实现,这里只是提前占了一个位置而已,以防程序奔溃。
在这里插入图片描述

三.总结

打好基础,深入底层,为学RTOS做好铺垫,加油加油!!
结束语:
最近发现一款刷题神器,如果大家想提升编程水平,玩转C语言指针,还有常见的数据结构(最重要的是链表和队列)后面嵌入式学习操作系统的时如freerots、RT-Thread等操作系统,链表与队列知识大量使用。
大家可以点击下面连接进入牛客网刷题

点击跳转进入网站(C语言方向)
点击跳转进入网站(数据结构算法方向)

在这里插入图片描述

相关内容

热门资讯

河南内乡县衙导游词 河南内乡县衙导游词  各位游客,大家好!  内乡县衙开始建于元朝大德八年(公元132019年),距今...
导游词的方法技巧以及 导游词的方法技巧以及范文  作为一名尽职尽责的导游,编写导游词是必不可少的,导游词作为一种解说的文体...
导游词结束语怎么写 导游词结束语怎么写  结束语1  各位朋友几天的行程,还有10分钟就要结束了,在此刻要和大家说再见的...
上海南浦大桥导游词 上海南浦大桥导游词  竣工通车于1991年12月1日的南浦大桥,总长8346米,通航净高46米,5....
贵阳河滨公园导游词 贵阳河滨公园导游词  作为一位无私奉献的导游,总归要编写导游词,一篇完整的导游词,其结构一般包括习惯...
天生三桥导游词 关于天生三桥导游词范文(通用9篇)  作为一位出色的导游人员,有必要进行细致的导游词准备工作,借助导...
西安兵马俑英文导游词 西安兵马俑英文导游词(通用10篇)  作为一名优秀的导游,通常需要准备好一份导游词,一篇完整的导游词...
丽江古城中英文导游词 丽江古城中英文导游词  丽江古城被列入世界文化遗产后,丽江的旅游业达到顶峰,成为世人向往的世外桃源、...
观音山导游词 观音山导游词范文  作为一位杰出的导游,很有必要精心设计一份导游词,导游词具有形象、生动、具有感染力...
庐山导游词 庐山导游词(精选4篇)  作为一名专门引导游客、助人为乐的导游,就不得不需要编写导游词,借助导游词可...
大同云冈石窟导游词 大同云冈石窟导游词  云冈石窟佛教艺术按石窟形制、造像内容和样式的发展,小编收集了大同云冈石窟导游词...
明孝陵导游词 明孝陵导游词10篇  作为一名默默奉献的导游,可能需要进行导游词编写工作,导游词具有注重口语化、精简...
无锡九龙灌浴导游词 无锡九龙灌浴导游词  作为一名专门为游客提供优质服务的导游人员,可能需要进行导游词编写工作,导游词由...
灯塔风景区优秀导游词 灯塔风景区优秀导游词  你知道日照吗?日照,取自太阳照耀,就是这样一个太阳照耀下的城市,这里的灯塔风...
金寨红军广场导游词 金寨红军广场导游词  你知道金寨红军广场的来历吗?你知道金寨红军广场的导游词应该怎么写嘛。下面就由小...
山东地下大峡谷景点讲解导游词 山东地下大峡谷景点讲解导游词  各位**游客朋友,你们好!欢迎大家光临山东地下大峡谷旅游区观光游览。...
苏州简介及特色导游词 苏州简介及特色导游词  玄妙观是一座有着1300年历史的恢宏道教建筑群,主殿是九开间的重檐歇山顶的三...
苏州导游词 苏州导游词范文(精选5篇)  作为一名旅游从业人员,时常会需要准备好导游词,导游词是我们引导游览时使...
鸳鸯溪导游词 鸳鸯溪导游词  作为一位兢兢业业的旅游从业人员,就难以避免地要准备导游词,借助导游词可以更好地宣传景...
大理导游词 大理导游词范文(精选8篇)  作为一位不辞辛劳的导游,就难以避免地要准备导游词,导游词可以加深游客对...