嵌入式裸机启动方式
- 前言
- 我理解的单片机与嵌入式
- 要点
- STM32启动过程
- STM32启动方式
前言
我最开始接触的是STM32,之前也没有接触过51,记得那会对于电脑的一切都是陌生的,在大一买32开发板的时候还要犹豫好久好久,因为我看好多人都在说,“学习单片机要从51开始学起,32太难了”,我觉得我不怕难,接触接触就好了嘛。在寒假回家的高铁路上,下决心买了野火的一套完整的开发板,大概是768元,这对于那会的我来说是一个大数目了。我下决心要学好这个32,可是一直有各种的事情,几乎就是匆匆的看过,一点儿都不深入。(后来,我才知道,有些人找老师拿着各种各样的项目去报销,开发板都是随便买的,反正学校都有报。。。我倒是觉得花自己的钱心安理得)
我理解的单片机与嵌入式
其实,我一直纠结题目应该写单片机还是嵌入式,很多地方很多人都混着叫,或者把它们等同了,我个人觉得不应该等同。
在以前流行51年代,一开始几乎都是说51单片机的,为什么?51单片机其实只有一个简单系统,一个51芯片就是包含了CPU、RAM(内存)、E^2ROM(存储程序,类似硬盘)、IO引脚等,其他的IIC、PWM、ADC、DAC等等复杂的功能都需要使用51的IO引脚外接其他的驱动芯片来进行拓展(当然后来的51芯片发展起来,有一些也把这些外设给加进芯片里边了)
而STM32这种,在官方的称呼里是embedded,嵌入的意思,我理解就是,32芯片在一开始设计的时候就把各种的功能外设驱动直接添加到了一整个芯片当中,所以才有“嵌入”一说。所以,当我学习到8086微机原理的时候,我有点儿诧异,8086芯片需要使用串口功能的时候居然还需要外接一个功能芯片,中断也是。毕竟当年才刚刚开始的微型计算机的出现,单片机就是专用版的8086,8086是通用版的,自然也会是沿袭这种设计的。现在就是嵌入式是专用的,PC是通用的啦。
要点
一个芯片系统的启动过程跟这一个芯片的IP内核紧密相关,每一个型号的芯片都有它自己特定的内核,启动过程,我简单的理解就是让CPU执行一份汇编程序,依照内核设计的要求,完成PC设置(程序计数器)、SP设置(堆栈指针)、系统时钟设置(对晶振脉冲进行分频、倍频)、数据段代码段映射(指令、数据的搬移),一系列过程,这是从芯片上电到执行c语言main函数入口的过程,即启动过程。
启动方式的区别在于芯片从哪里把代码加载进来,对于STM32,有三种启动方式,这三种方式的区别也就是代码数据存放在不同的地方。芯片运行的时候,是在内存里读取指令、解析指令,再运行指令的,在芯片中的程序正式运行之前,它会发存放在指定地方的程序搬运到内存中,之后才运行用户编写的指令。
另,不同的芯片,内核一般不同,f103是cortex-m3内核,h743是cortex-m7内核,也有一个内核设计了很多个芯片,比如cortex-m3内核设计了f103很多型号的芯片。根据一个内核,对应一个特定的芯片会有属于 Ta 自己的启动文件。由于不是专业人员,参考以下几篇文章,都写的特别详细。
STM32启动过程
STM32第二章-启动过程详解
STM32启动过程–启动文件–分析
高手带你分析STM32 的启动过程(写的不错)
STM32启动方式
STM32三种启动模式
本文地址:https://blog.csdn.net/DDTS_ZD/article/details/107886736