- 44
- 0
- 约2.95千字
- 约 4页
- 2020-03-17 发布于江西
- 举报
单片机 C 程序编译、执行过程
1、编写 C 代码:
预编译代码
定义及声明变量
定义及声明函数
编写程序代码(主函数 MAIN)
2、编译器编译:
1. 预处理
此时编译器会扫描一个一个的 C 源文件,如果发现#include 了某个.h 文件,则把整个.h 文件包 含进.c 文件中,形成一个新的.c 文件(实际的实现过程可能不是这样,但原理是这样的)。同时进 行相关预处理指令的解释工作,譬如将宏替换成实际的值。
2. 编译源文件
此时编译器会扫描经过第 1 步之后新生成的源文件,把源代码编译成机器码,生成目标文件。 如果发现某个类型不是编译器自含的类型,如一些自定义的结构体等,那就会在源文件中查找这个类 型,看看是否可以找到这个类型的声明,如果找不到,则报错。所有的函数只会在编译时生成一个符 号,不查找其实体是否存在。不过如果发现在使用这个函数的代码行之前未能发现此函数的声明,编 译器会给出警告:隐式的函数调用。
3. 链接所有的目标文件
此时编译器就会收集所有目标文件中的符号,例如函数符号,并且查找其实体,如果找不到,则报
错;无错的话会给这些符号分配真正的地址,
分配了地址后,就会替换每个目标文件中的
符号为实际地址,然后合并所有的目标文件为一个可执行文件。
3、编译后的二进制文件:
编译后的二进制码,实际就是把 C 程序编译成了一句句二进制机器指令。
大概开始是告诉单片机,在 RAM 中分配外部变量、全局变量、静态变量等等工作。
然后就是将 C 程序代码编译成二进制机器指令。(什么时候把什么地址的数取出来进行什么操作然 后放在什么地址或寄存器,这些个事了)
执行完 RAM 分配、为变量(全局变量和静态变量)开辟完空间的指令后,程序指针指到主函数 main()处,继续向下一步一步移动,执行初始化机器指令。
遇到调用函数,就会有将主函数中函数调用后的下一条指令(函数调用语句的下一条可执行语句) 的地址、函数的各个参数、函数中的局部变量等按照顺序进行压栈,然后程序指针跳转到要调用 的函数入口地址处,执行函数内部机器代码,执行完成后按照顺序出栈处理,程序指针返回到函 数调用后的下一条指令继续向下执行等机器代码。
遇到中断,就会有类似函数调用(压栈、出栈等)的机器代码,因为执行中断函数,也是一个函 数,原理同普通函数相类似。不同之处,根据不同的中断,程序指针需要先跳转至中断向量表的 地址处,根据中断向量表再跳转到中断函数地址处,执行中断函数。
程序指针在 while()循环里从开始到结束,再跳转到开始到结束,无限循环的执行指令。期间遇 到函数或中断,处理方法与 5)、6)相同。
4、编译后的 hex 文件烧录进单片机:
hex 文件烧录进单片机后,保存在单片机的 FLASH 区里,其实就是一堆指令代码。
单片机上电复位后,程序指针自动指向 FLASH 区的第一条指令上,然后单片机逐一读取指令,按 照指令要求去干自己的工作。
ISP 和 IAP 的区别
ISP(In-System Programming)在系统可编程,指电路板上的空白器件可以编程写入最终用户代码, 而 不需要从电路板上取下器件,已经编程的器件也可以用 ISP 方式擦除或再编程。IAP(In-Application Programming) 指 MCU 可以在系统中获取新代码并对自己重新编程,即可用程序来改变程序。ISP 和 IAP 技术是未来仪器仪表的发展方向。
1 ISP 和 IAP 的工作原理
ISP 的实现相对要简单一些,一般通用做法是内部的存储器可以由上位机的软件通过串口来进行改写。 对于单片机来讲可以通过 SPI 或其它的串行接口接收上位机传来的数据并写入存储器中。所以即使我们 将芯片焊接在电路板上,只要留出和上位机接口的这个串口,就可以实现芯片内部存储器的改写,而无 须再取下芯片。
IAP 的实现相对要复杂一些,在实现 IAP 功能时, 单片机内部一定要有两块存储区,一般一块被称为 BOOT 区,另外一块被称为存储区。单片机上电运行在 BOOT 区,如果有外部改写程序的条件满足,则对存 储区的程序进行改写操作。如果外部改写程序的条件不满足,程序指针跳到存储区,开始执行放在存储 区的程序,这样便实现了 IAP 功能。
2 ISP 和 IAP 在单片机中的应用
2.1 传统编程方法的不足
在一般的单片机的实验或开发时,编程器是必不可少的装置。仿真、调试完的程序需要借助编程器烧 到单片机内部或外接的程序存储器中。普通的编程器价格从几百元到几千元不等,对于一般的单片机用 户来说还是一笔不小的开支。另外,在开发过程中,程序每改动一次就要拔下电路板上的芯片编程后再 插上,这样不但麻烦也很容易对芯片和电路板造成损伤,另外在程序需要升级做改动时,必须将设备返 厂
您可能关注的文档
- 华南理工大学英语B(二)作业及答案.docx
- 华南理工大学高级语言程序设计(C++I)试卷及答案.docx
- 华南理工建筑工程测量第二次作业答案.docx
- 华南理工数电试卷2和答案.docx
- 华南理工数电试卷一和答案.docx
- 华南理工经济学原理随堂练习.docx
- 华南理工网络教育2018年唐诗作业.docx
- 华城小学第二届读书节活动方案.docx
- 华大基因实习生管理办法(草案).docx
- 华容道各种阵型.docx
- 伟明环保-市场前景及投资研究报告-境内业务稳健运行,印尼市场贡献边际增量.pdf
- 桂东县法院系统招聘考试真题2025.pdf
- 贵州省黔南布依族2026年中考三模物理试题及答案.pdf
- 贵州省黔南州2026年中考语文二模试卷附答案.pdf
- 贵州省铜仁市2026年中考语文二模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套完整答案详解.docx
- 贵州省毕节市2026年中考语文一模试卷附答案.pdf
- 贵州省贵阳市南明区2026年中考语文一模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套参考答案详解.docx
- 贵州省贵阳市白云区2026年中考二模物理试题附答案.pdf
最近下载
- 长春理工大学2024-2025学年第1学期《高等数学(上)》期末考试试卷(B卷)附参考答案.pdf
- 教科版一年级下册科学教学计划.docx VIP
- 早产儿脑室内出血预防专家共识(2025).pptx VIP
- 如何找回误删微信好友,微信好友一键恢复.doc VIP
- 2019年河南专升本考试公共英语(真题).pdf VIP
- 2025年房地产经纪人经纪人职业道德失范投诉处理专题试卷及解析.pdf VIP
- 2025年碳排放管理师林业碳汇区块链技术应用专题试卷及解析.pdf VIP
- 2025年拍卖师机动车拍卖成交价款支付与结算风险控制专题试卷及解析.pdf VIP
- 2025年AWS认证SQS消息多线程处理专题试卷及解析.pdf VIP
- 2025年房地产经纪人个人以不动产投资入股个税处理专题试卷及解析.pdf VIP
原创力文档

文档评论(0)