【自用】C语言编译与芯片烧录过程

编译过程

  1. 预处理(Preprocessing):预处理用于将所有的#include头文件以及宏定义替换成其真正的内容,gcc的预处理是预处理器cpp来完成的(.i)
  2. 编译(Compilation):将经过预处理之后的程序转换成特定汇编代码(assembly code)的过程(.s)
  3. 汇编(Assemble):将上一步的汇编代码转换成机器码(machine code),这一步产生的文件叫做目标文件,是二进制格式。gcc汇编过程通过as命令完成。这一步会为每一个源文件产生一个目标文件(.o)
  4. 链接(Linking):链接过程将多个目标文以及所需的库文件(.so等)链接成最终的可执行文件(executable file)(.out)

在这里插入图片描述
在这里插入图片描述

CMake,Makefile,GCC

GCC、CMake、CMakelist、Make、Makefile、Ninja啥关系?一图讲透!

  1. GCC需要逐文件编译 -> 利用Make & Makefile批量编译
  2. Makefile有不同平台,格式标准多样 -> 利用CMake自动生成对应平台的Makefile
  3. CMake编译慢 -> Ninja快速编译

总而言之CMake和Makefile都是类似于脚本的存在,方便自动化编译复杂的、多平台的工程

程序烧录

【单片机】一文彻底搞懂单片机程序烧录

  1. 烧录方式演变:编程器离线编程(要取出芯片)-> ISP(系统在线编程)。ISP就是通过电脑端的上位机软件,通过某种数据传输协议,将程序编译产生的二进制文件烧录到单片机的EEPROM中
  2. 烧录数据传输方式:串口、SPI、SWD接口、JTAG接口
    • 特殊:串口协议是靠芯片内部已固化的一段闭源引导程序(BootLoader)来写入Flash
    • BootLoader在系统存储区(低地址先执行)。故在程序启动时,串口方式应从系统区启动(需要引导程序),其他方式应从用户区启动(无需引导程序)。主闪存存储器即用户区Flash
      Flash空间分配程序启动模式
  3. ISP & ICP & IAP:
    • ICP(In Circuit Programming)与ISP(In System Programming)概念类似
    • IAP(In Application Programming):在程序运行过程中改变代码(用于远程在线更新固件)

仿真、调试、烧录

  1. 调试好的程序一般下载到芯片FLASH上的,而调试一般下载到芯片的RAM上(掉电后会清除)
  2. 目前ST-Link、J-Link等仿真器实际上不执行程序,只负责加载程序、调试和控制程序运行、以及提供调试接口。程序是在板上的芯片上运行的(GPT4)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值