ICP stands for "In Circuit Programming".
按照名字来理解,电子电路的硬件级别的芯片烧写。
最开始程序存储是EPROM,更新程序需要取下来,用紫外线清除内容,再插上烧录器烧写。而EEPROM也是需要12V高压来清除,工作电压5V下要取出来,很不方便,后来的Flash Memory可以在工作电压下直接进行读写,所以叫In Circuit programming。
一般是使用烧写器,连接PC,运行PC上的烧写软件,通过JTAG/SWD等协议,将程序、数据或配置内容烧写到EEPROM,Flash芯片或MCU内部ROM/Flash上。
烧写的目标设备除了芯片外,还有可编程逻辑器件。
具体烧写设备见下图:
这种烧写,一般是裸片烧写。但也可以在板上,通过定制治具,将探针和PCB上的TP测试点接触,通过同样的原理烧写。
比如下图:
注意一些高级芯片不需要烧写器,直接通过USB线等通讯接口连接PC后,就可以烧写。比如ARM芯片。
ICP烧写,实际上也是芯片内部有程序或电路支持调试烧写协议的功能,才能进行调试或烧写操作。
ISP stands for "In System Programming".
ISP比ICP相比,要高级一些。
ICP是裸片级的,用的是JTAG等调试协议,而ISP用的是UART、USB或者I2C等协议。
目标芯片上会有一段程序,一般是boot/loader代码,通过片上外设接口,USB/UART/SPI/I2C/RS-485/CAN等,来和外部程序通讯(PC主机上运行的软件),完成芯片烧写(程序、数据或配置的更新)。
那新唐芯片举例,LDROM里的程序就是负责升级的代码,升级芯片可以更新APROM(应用程序代码)、Data Flash和User Configuration Word(用户配置字)。
所以使用ISP升级或烧写,只需要将相应的线上外设的通讯接口引出,然后连接到PC或专用设备(根据通信协议是否PC支持)上,通过相应厂商的烧写软件,就能更新或烧写芯片的内容。
IAP stands for In-application-programming
IAP表示在应用运行中,就能够升级或烧写芯片内容,可以自我升级,可以使用各种通讯协议,比如Ethernet / Wireless等。
比如新塘芯片,就可以在APROM和LDROM之间切换执行,而不需要重启芯片。APROM用户的程序在运行时,能够调用LDROM的函数来进行程序升级。ARPOM和LDROM的程序能够互相调用。