bootloader -- 芯片在出厂时预先烧写,还有很多不同叫法:isp服务程序(stc),bootstrap(msp430)等等。这段代码会首先检测芯片的指定引脚上有没有特定的信号,如果没有,则跳入用户程序执行。否则就按照bootloader特定的通信协议,与计算机进行握手,并最终触发计算机将新的程序通过通用接口(如串口)传送到芯片。然后bootloader通过软件的方式(当然需要硬件支持),擦除用户程序区,将新的程序写入到指定的位置。另外提到的是,bootloader是由各个芯片厂家自己写的,因此不是通用的。尽管都是用串口,但通信协议是不同的。比如像国产STC单片机,通信协议甚至是保密的。因此通常需要厂家提供的专用ISP软件(flash loader)才能给芯片编程。
isp -- 在系统编程
在系统编程就是通过串口或者其他通用的通用通信接口,为芯片编程。在产品上可以预留一个串口,需要更新时,只要把产品插到电脑上,通过串口把程序传到芯片里,就完成了更新操作。ISP技术的实现,其实就是依赖于芯片在出厂时预先烧写的bootloader程序。
iap -- 在应用编程
IAP技术允许用户程序修改flash。说白了IAP就是允许用户自定义bootloader,或者说有2个bootloader,一个bootloader是芯片出厂时固化的,另一个是用户自定义的。自定义的bootloader在固化的bootloader之后启动。
相互之间的关系:为了在系统编程(isp)必须先写入bootloader,但用户不能操作flash写程序,然而有的用户想要操作flash写程序,就必须用到在应用编程(iap)。