ISP和IAP
ISP
- ISP的全称是:In System Programming,即在系统编程,该操作是通过MCU厂商出厂BootLoader来实现,通过ISP可以对主flash区域进行擦除、编程操作,还可以修改芯片的选项字节等。
- 例如,GD32F30x用户手册中引导模式,通过BOOT引脚可以让MCU有不同的引导模式,其中将BOOT0接高,BOOT1接低,此时上电后,MCU跑的是引导装载程序,该程序就是GD公司MCU出厂固化的BootLoader。
- 简单而言,在这个模式下,MCU是在跑一段程序的,这个程序可以让你通过MCU上的一些固定接口如串口、USB来实现对主flash区域等的操作,二通过这个程序进行主flash的烧写过程就是ISP。
- 一般而言,ISP都需要一些上位机来配合操作,如GD官方的是All-in-one工具。
IAP
- IAP的全称是:In Application Programming,即在应用编程。
- 该操作需要工程师自己写BootLoader来实现,IAP需要两段程序,一段在主flash最开始的地方,为用户BootLoader,另一段在主flash中的其他区域,为APP,比如保存在0x08008000地址的程序,当MCU刚上电时,会执行用户BootLoader程序,需要注意,这里需要选择将BOOT0接低,也就是让从主flash中启动,工程师需要在用户BootLoader中实现接收数据并对非本程序所在地址flash区域编程的功能,这样用户将APP的bin文件发给用户BootLoader程序,BootLoader程序将APP的数据写到特定的地址中,比如0x08008000开始的地址,这样就实现了通过用户BootLodaer烧录APP的功能。
- 烧录完成后,用户BootLoader程序中需要实现一个跳转指令,让程序直接跳到APP中,这样崭新的APP程序就跑起来了。
- 上面这一整个流程就叫做IAP。