![单片机C程序编译、执行过程(共3页)_第1页](http://file3.renrendoc.com/fileroot_temp3/2021-12/28/b1c48442-0157-41f6-989b-71f5d092cb0d/b1c48442-0157-41f6-989b-71f5d092cb0d1.gif)
![单片机C程序编译、执行过程(共3页)_第2页](http://file3.renrendoc.com/fileroot_temp3/2021-12/28/b1c48442-0157-41f6-989b-71f5d092cb0d/b1c48442-0157-41f6-989b-71f5d092cb0d2.gif)
![单片机C程序编译、执行过程(共3页)_第3页](http://file3.renrendoc.com/fileroot_temp3/2021-12/28/b1c48442-0157-41f6-989b-71f5d092cb0d/b1c48442-0157-41f6-989b-71f5d092cb0d3.gif)
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上单片机C程序编译、执行过程1、 编写C代码:1) 预编译代码2) 定义及声明变量3) 定义及声明函数4) 编写程序代码(主函数MAIN)2、 编译器编译:1. 预处理 此时编译器会扫描一个一个的C源文件,如果发现#include了某个.h文件,则把整个.h文件包含进.c文件中,形成一个新的.c文件(实际的实现过程可能不是这样,但原理是这样的)。同时进行相关预处理指令的解释工作,譬如将宏替换成实际的值。2. 编译源文件 此时编译器会扫描经过第1步之后新生成的源文件,把源代码编译成机器码,生成目标文件。如果发现某
2、个类型不是编译器自含的类型,如一些自定义的结构体等,那就会在源文件中查找这个类型,看看是否可以找到这个类型的声明,如果找不到,则报错。所有的函数只会在编译时生成一个符号,不查找其实体是否存在。不过如果发现在使用这个函数的代码行之前未能发现此函数的声明,编译器会给出警告:隐式的函数调用。3. 链接所有的目标文件 此时编译器就会收集所有目标文件中的符号,例如函数符号,并且查找其实体,如果找不到,则报错;无错的话会给这些符号分配真正的地址, 分配了地址后,就会替换每个目标文件中的符号为实际地址,然后合并所有的目标文件为一个可执行文件。3、
3、编译后的二进制文件:1) 编译后的二进制码,实际就是把C程序编译成了一句句二进制机器指令。2) 大概开始是告诉单片机,在RAM中分配外部变量、全局变量、静态变量等等工作。3) 然后就是将C程序代码编译成二进制机器指令。(什么时候把什么地址的数取出来进行什么操作然后放在什么地址或寄存器,这些个事了)4) 执行完RAM分配、为变量(全局变量和静态变量)开辟完空间的指令后,程序指针指到主函数main()处,继续向下一步一步移动,执行初始化机器指令。5) 遇到调用函数,就会有将主函数中函数调用后的下一条指令(函数调用语句的下一条可执行语句)的地址、函数的各个参数、函数中的局部变量等按照顺序进行压栈,然
4、后程序指针跳转到要调用的函数入口地址处,执行函数内部机器代码,执行完成后按照顺序出栈处理,程序指针返回到函数调用后的下一条指令继续向下执行等机器代码。6) 遇到中断,就会有类似函数调用(压栈、出栈等)的机器代码,因为执行中断函数,也是一个函数,原理同普通函数相类似。不同之处,根据不同的中断,程序指针需要先跳转至中断向量表的地址处,根据中断向量表再跳转到中断函数地址处,执行中断函数。7) 程序指针在while()循环里从开始到结束,再跳转到开始到结束,无限循环的执行指令。期间遇到函数或中断,处理方法与5)、6)相同。4、 编译后的hex文件烧录进单片机:1) hex文件烧录进单片机后,保存在单片
5、机的FLASH区里,其实就是一堆指令代码。2) 单片机上电复位后,程序指针自动指向FLASH区的第一条指令上,然后单片机逐一读取指令,按照指令要求去干自己的工作。ISP和IAP的区别ISP(In-System Programming)在系统可编程,指电路板上的空白器件可以编程写入最终用户代码, 而不需要从电路板上取下器件,已经编程的器件也可以用ISP方式擦除或再编程。IAP(In-Application Programming) 指MCU可以在系统中获取新代码并对自己重新编程,即可用程序来改变程序。ISP和IAP技术是未来仪器仪表的发展方向。 1 ISP和IAP的工作原理 ISP的实现相对要简
6、单一些,一般通用做法是内部的存储器可以由上位机的软件通过串口来进行改写。对于单片机来讲可以通过SPI或其它的串行接口接收上位机传来的数据并写入存储器中。所以即使我们将芯片焊接在电路板上,只要留出和上位机接口的这个串口,就可以实现芯片内部存储器的改写,而无须再取下芯片。 IAP的实现相对要复杂一些,在实现IAP功能时, 单片机内部一定要有两块存储区,一般一块被称为BOOT区,另外一块被称为存储区。单片机上电运行在BOOT区,如果有外部改写程序的条件满足,则对存储区的程序进行改写操作。如果外部改写程序的条件不满足,程序指针跳到存储区,开始执行放在存储区的程序,这样便实现了IAP功能。 2 ISP和
7、IAP在单片机中的应用 2.1 传统编程方法的不足 在一般的单片机的实验或开发时,编程器是必不可少的装置。仿真、调试完的程序需要借助编程器烧到单片机内部或外接的程序存储器中。普通的编程器价格从几百元到几千元不等,对于一般的单片机用户来说还是一笔不小的开支。另外,在开发过程中,程序每改动一次就要拔下电路板上的芯片编程后再插上,这样不但麻烦也很容易对芯片和电路板造成损伤,另外在程序需要升级做改动时,必须将设备返厂或是技术人员到现场操作,既不方便也造成成本浪费。 2.2 ISP和IAP的优点 ISP技术的优势是不需要编程器就可以进行单片机的实验和开发,单片机芯片可以直接焊接到电路板上,调试结束即成成
8、品,免去了调试时由于频繁地插入取出芯片对芯片和电路板带来的不便。 IAP技术是从结构上将Flash存储器映射为两个存储体,当运行一个存储体上的用户程序时,可对另一个存储体重新编程,之后将程序从一个存储体转向另一个。 ISP的实现一般需要很少的外部电路辅助实现, 而IAP的实现更加灵活,通常可利用单片机的串行口接到计算机的RS232口,通过专门设计的固件程序来编程内部存储器,可以通过现有的INTERNET或其它通讯方式很方便地实现远程升级和维护。 2.3 产品分析 目前市场上不少的单片机具有ISP和IAP功能。 ST公司的PSD32××系列单片机片内带128KB/256KB的
9、FLASH存储器及32KB Boot ROM,通过JTAG串行口能很容易地实现ISP功能。IAP功能则可由用户在应用中实现。 ATMEL公司的单片机AT89S8252,提供了一个SPI串行接口对内部程序存储器编程(ISP)。SST公司的单片机SST89C54,其最大的特点内部有两块独立的FLASH存储器,具有IAP(应用中在线编程)功能,对于8052系列的其它公司的单片机(ATMEL、 WINBOND、ISSI)可以直接代换,软硬件无须做任何改动。 PHILIPS公司的P89C51RX2xx系列是带ISP/IAP的8位Flash单片机。PHILIPS公司为了使ISP技术和IAP技术得以推广,在芯片上免费提供了Boot ROM固件,并且巧妙地解决了固件和FLASH的地址覆盖问题及一些具体
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 明确责任的工作目标设定计划
- 如何提升财务团队的协作效率计划
- 2025年鞋用乳液胶粘剂项目合作计划书
- 2025年医用冷疗项目发展计划
- 2025年其它核材料及相关特殊材料合作协议书
- 远程在线教育平台学习免责协议
- 电动汽车充电桩安装施工合同
- Rac-Ganoderic-acid-C2-生命科学试剂-MCE
- 财务顾问聘用协议
- 工作总结写作培训
- GB/T 4214.2-2020家用和类似用途电器噪声测试方法真空吸尘器的特殊要求
- GB/T 3215-2019石油、石化和天然气工业用离心泵
- 蔬菜采购项目投标书
- 肩周炎康复护理
- 2022年安徽管子文化旅游集团有限公司招聘笔试试题及答案解析
- SAPPM设备管理解决方案
- Q-HN-1-0000.08.004《风力发电场电能质量监督技术标准》
- 多指畸形-课件
- 5G NSA站点开通指导书(临时IP开站)
- 死亡患者尸检同意书
- 正常心电图学课件
评论
0/150
提交评论