一、先了解ICP和ISP、IAP之间的区别:
1、 ISP(In System Programing 在系统编程)的实现相对要简单一些,一般通用做法是内部的存储器可以由上位机的软件通过串口来进行改写。对于单片机来讲可以通过SPI或其它的串行接口接收上位机传来的数据并写入存储器中。所以即使我们将芯片焊接在电路板上,只要留出和上位机接口的这个串口,就可以实现芯片内部存储器的改写,而无须再取下芯片。例如,我们开始接触到的STC51单片机的程序下载方式(点击上位机下载----->复位(断电)----->下载)
2、 IAP(In applicatin programming 在应用编程)的实现相对要复杂一些,在实现IAP功能时,单片机内部一定要有两块存储区,一般一块被称为BOOT区,另外一块被称为APP存储区。单片机上电从BOOT区开始运行,如果有外部改写程序的条件满足,则对存储区的程序进行改写操作。如果外部改写程序的条件不满足,程序指针跳到APP存储区,开始执行放在存储区的APP程序,这样便实现了IAP功能。
3、 ICP(In-Circuit Programming 在线编程)通过JTAG/SWD协议或者系统加载程序(Bootloader)下载用户应用程序到微控制器中。这种情况使用仿真器下载或者芯片厂商提供的ICP软件。
总结:(1)(重要!!!)IAP和ISP是我们研发生产中使用的比较多的情况,使用ISP外部条件触发(网上说有四种方式这里不介绍了,感兴趣的可以百度一下),IAP升级完全是芯片内部控制的(