浅谈:对于任何电子产品,硬件是软件运行的基础,而软件赋予了硬件灵魂,两者有机结合成为一个功能丰富、强大的系统。

我们写的代码是如何在单片机上跑的呢?下面以比较简单的方式简述一下,如果还要研究很多细节实现的话,就要深入学习微机原理的知识啦。

代码在单片机上跑起来,一般有6个步骤:

1.写好源文件。

2.准备好启动文件(一般半导体厂商提供,也可以自己根据需求进行裁剪编写)。这个文件直接是用汇编写的,主要完成三个工作:初始化堆栈,定义中断向量表,进行复位中断(初始化寄存器、时钟和跳转到main函数)。

(1)初始化堆栈:主要定义栈、堆地址、大小和一些格式

单片机上运行的JavaScript 单片机怎么运行代码的_初始化


(2)定义中断向量表:可以简单理解为各个小函数的地址。要放在Flash的0位置处。例如要运行Reset_Handler这个中断处理函数,PC就会先先访问这个中断向量表,得知Reset_Handler在哪个地址,然后PC跳到相应的位置开始执行Reset_Handler, 里面定义了各种中断发生后CPU要做的事。

单片机上运行的JavaScript 单片机怎么运行代码的_中断向量表_02


(3)进行复位中断:单片机一上电复位或者按下复位按钮执行的初始化操作。首先进行系统初始化,然后会跳转到我们写的应用程序main函数。

单片机上运行的JavaScript 单片机怎么运行代码的_初始化_03

3.编译生成二进制机器码。把写的代码变成机器可以认识的二进制文件。一般用集成好的开发环境如MDK,包括了预处理、编译、链接、加上地址头等等,最终生成特定MCU的二进制文件。

4.烧写单片机的FLASH。将第三步生成的二进制文件通过烧录器、仿真器等媒介烧录进FALSH。当然不一定是FLASH,还可以是其他存储芯片。

5.复位。烧录完复位一下。让芯片里的各个寄存器恢复到初始状态,主要让CPU的PC寄存器恢复到0,重头开始跑复位中断处理。

6.运行用户代码。复位后跳转到main函数执行。

单片机上运行的JavaScript 单片机怎么运行代码的_中断向量表_04


                                                简单的总体框图