嵌入式软件 —— 程序下载方式

发布于:2024-10-13 ⋅ 阅读:(134) ⋅ 点赞:(0)


程序更新方式

在单片机或嵌入式程序开发过程中,开发者通常会用几种方式将固件烧录(下载或更新)到目标芯片:

1、ISP方式 —— ISP是在系统编程,不用从目标板把芯片(内置有制造商bootloader启动程序)拆下来,但必须到现场烧录,使用芯片制造商专门ISP烧录软件,烧录过程一般使用串口进行通信(USB转TTL、RS232转TTL、RS485转TTL等)。在电脑端使用芯片厂家提供的专用烧录软件把固件(比如hex文件)下载到厂家专用离线烧录器,再通过离线烧录器烧录到目标芯片,或者在开发软件(Keil、IAR等)上通过厂家专用下载器(比如STC-ISP等)直接下载到目标芯片。

BootLoader是在操作系统内核运行之前运行。可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。在嵌入式系统中,通常并没有像BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由BootLoader来完成。

2、IAP方式 —— 在电脑端使用客户自己开发或厂家提供的IAP烧录软件,通过串口协议或USB协议将固件下载到目标芯片。IAP是在应用编程(In-Application Programming),是芯片(内置用户编写的bootloader和app程序,首次烧录需要用ISP或ICP方式)本身对自己内部的数据进行擦除和重写,但需要芯片支持某种硬件通信协议。

IAP是用户的应用代码对片内Flash存储器进行擦除/编程的方法。典型应用就是用一小段代码来实现程序的下载,实际上单片机的ISP功能就是通过IAP技术来实现的,即片子在出厂前就已经有一段小的bootloader程序在里面,芯片上电后,开始运行这段程序,当检测到上位机有下载要求时,便和上位机通信,然后下载数据到数据存储区,从而实现固件升级。

在这里插入图片描述

3、ICP方式 —— ICP是在电路编程,支持在IDE上在线调试读写MCU所有寄存器,需要用专门的编程器,比如JTAG接口的J-link、SWD接口的ST-link等等。

4、OTA方式 —— 通过APP将固件更新到目标芯片,实现远程升级。

MCU上电或复位后都先运行bootloader,如果没有升级需求则跳到App区运行。

DFU : Device Firmware Upgrade,一般是指通过USB/UART接口进行固件升级。

一、ISP方式

ISP烧录方式:制造商编写的bootloader对片内Flash进行擦除/编程。
在这里插入图片描述

二、IAP方式

IAP烧录方式:用户自己编写的bootloader对片内Flash进行擦除/编程。
在这里插入图片描述
通过USB线把固件下载到download区,重启MCU,再由bootloader把固件搬到APP区,搬完了直接跳转到APP起始地址运行程序了,可以参考以下流程图。
在这里插入图片描述