ISP与IAP烧录方式的区别

ISP与IAP是我们现在最常见的烧录方式,而他们的区别各有利弊,在不同场所的应用也不一样。

ISP(IN System Progtamming,系统在线编程)

一般通用做法是内部的存储器可以由上位机的软件通过串口来进行改写。对于单片机来讲可以通过SPI或其它的串行接口接收上位机传来的数据并写入存储器中。所以即使我们将芯片焊接在电路板上,只要留出和上位机接口的这个串口,就可以实现芯片内部存储器的改写,而无须再取下芯片。

它的实现方式就是通过电脑端的上位机软件,通过某种数据传输协议,将程序编译产生的二进制文件烧录到单片机的EEPROM中。一般电路板上还需要添加少量的外围电路辅助程序的烧录。因此调试单片机程序时,只需要将相关的接口留出即可,而不需要来回取下芯片。

串口协议、SWD协议、JTAG协议、SPI协议均是ISP

比较特殊的是串口协议,相对于其他协议都是需要借助外界设备(如st-link、USBasp)来直接才做单片机的FLASH,但串口下载程序是虽然需要外部设备把USB转TTL模块,但卑职还是靠芯片内部已固化的一段程序·来写入FLASH,这也是称呼串口下载为ISP,其他协议下载不叫ISP的原因。

用来写入FLASH的这部分程序是芯片出厂就已经固化到芯片当中的,称为引导程序,也叫自举程序(自己能举起自己嘛),英文名叫BootLoader。这部分程序是对用户保密的,也就是说用户无法知道这段程序到底是怎么写入FLASH的,只知道它能这么做。  因此,为实现这种功能,芯片内部ROM就可以分为两部分,一部分是系统存储区 (System Flash),一般在低地址,用来存放引导程序;另一部分是用户存储区(User Flash),有些也称为应用程序区(Application Flash),一般在高地址,用来存放用户编写的程序(主要执行的部分)。其示意图如下所示

而使用的SWD、JTAG模式下载就需要通过上位机把数据写入用户存储区,而使用串口下载,就需要通过系统存储区,当芯片开始执行程序时,会不断检测串口是否写入FLASH的指令,如果没有,就会执行用户程序,进入用户存储区。

IAP(In Application Programming,应用在线编程)

IAP(In-Application Programming) 指MCU可以在系统中获取新代码并对自己重新编程,即可用程序来改变程序。

IAP技术是从结构上将Flash存储器映射为两个存储体,当运行一个存储体上的用户程序时,可对另一个存储体重新编程,之后将控制从一个存储体转向另一个

在实现IAP功能时, 单片机内部一定要有两块存储区,一般一块被称为BOOT区,另外一块被称为存储区。单片机上电运行在BOOT区,如果有外部改写程序的条件满足,则对存储区的程序进行改写操作。如果外部改写程序的条件不满足,程序指针跳到存储区,开始执行放在存储区的程序,这样便实现了IAP功能

总的来说,IAP可以实现远程代码更新,不需要拆机之后再编程修改数据,减少了人的走来走去。

ISP=>修改MCU 内部数据需要有外部介入;

IAP=>修改MCU 内部数据可以不用外部介入。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值