ICP、ISP、IAP、OTA、SOTA、FOTA、DFOTA的区别

一、ICP(In Circuit Programing):
在电路编程,可通过CPU的Debug Access Port 烧录代码,比如ARM Cortex的Debug Interface主要是SWD(Serial Wire Debug)或JTAG(Joint Test Action Group)
 
二、ISP(In System Programing):
在系统编程,可借助MCU厂商预置的Bootloader 实现通过板载UART或USB接口烧录代码,比如STM32存储映射Code分区中的System memory可以预置厂商的Bootloader,让MCU支持通过UART下载(不限于UART,具体由厂商预置Bootloader实现而定);
烧录器将code烧入,不过,芯片可以在目标板上,不用取出来,在设计目标板的时候就将接口设计在上面,所以叫”在系统编程”,即不用脱离系统;
STM32 在出厂时由ST 在这个存储区间内部预置了一段BootLoader(也即ISP 程序),这段程序出厂后无法修改(芯片原厂一般称之为bootROM)。厂家提供的BootLoader 一般支持UART 协议,可以让我们直接通过串口将程序代码烧录到Main Flash memory 中;
 
三、IAP(In Applicating Programing):
在应用编程,指的是通过用户应用程序升级程序,一般有两种实现方案:
1. 代码区域分为两部分,我们称之为A、B区,应用程序加载后,通过应用程序下载更新的程序到旧版本区域,下载完成后重启系统,由开发者实现的Bootloader来判断A、B区版本的新旧、程序的完整性,来确定从哪个区加载或者启动应用程序。
2. 代码区域分为两部分,我们称之为主区、备份区,应用程序加载后,通过应用程序下载更新的程序到备份区,下载完成后重启系统,由开发者实现的Bootloader来判断备份区是否有更新的程序需要更新到主区,如果有则通过bootlloader完成主区的版本更新,并确定更新的完整性和正确性,然后从主区启动应用程序。
 
四、IAP和ISP 的区别:
1、ISP程序一般是芯片厂家提供的。
      IAP一般是用户自己编写的
2、ISP一般支持的烧录方式有限,只有串口等。
     IAP就比较灵活,可以灵活使用各种通信协议烧录
3、ISP一般需要芯片进行一些硬件上的操作才行(比如拉低某个IO后复位),
     IAP全部工作由程序完成
4、ISP一般只需要按芯片厂家的格式将升级文件通过串口发送就可以。
      IAP可以用户自定义烧录格式、烧录方式、升级流程。
五、OTA、SOTA、FOTA、DFOTA
前面我们讲过,ISP一般只支持串口,对很多设备来讲通过串口升级变得不太现实,几个原因:
1. 量产的产品,串口有可能没有接出来
2. 即使串口在产品上有接口,消费电子产品要求客户通过串口升级,一般也不现实。
 
如果设备有无线通信功能,应用系统运行起来后,通过无线通信的方式下载程序进行程序升级是一个非常理想的方式。事实上,带无线通信功能的产品大多数也是采用这种升级方式,比如,手机。
通过无线通信方式进行升级的方式称之为OTA(Over The Air),通常称之为远程升级。
OTA分为两类:SOTA(Software OTA)和FOTA(Firmware OTA),
SOTA就是只对应用软件进行升级,比如Android的 APP软件进行升级,
FOTA就是对底层固件进行升级,比如,手机的ROM固件。
那DFOTA又是个什么东东?
随着硬件资源大小不断的变大,导致软件、固件也越变越大,比如,一个手机的ROM固件可能几个GB,这么大的固件通过4G网络传输,
1. 需要不少流量费用
2. 需要等很长的下载时间
为了解决以上问题,出现了DFOTA(Differential Firmware OTA),通常称之为差分升级。采用比对当前版本和升级版本固件差异的方式,只下载差异部分,来减小升级包的大小,能够带来空口传输时间减小、降低终端功耗等优势。

作者:极客石头

在搞事情的路上越走越远。

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注