什么是IAP和ISP:
IAP是In Applicating Programing,既是在应用编程。
ISP是In SystemPrograming,既是在系统编程。
用过STM32的都知道它可以使用官方工具通过串口下载,那就是一种ISP。
这两种都是先运行一种bootloader,然后跳转到下一段程序继续运行,ISP是运行官方写的bootloader,IAP则需要用户自己去写bootloader。
这两种各有好处,IAP灵活,但是程序流程复杂,ISP方式固定,但是用起来简单。IAP适合需求比较多,程序基本功比较好的人。ISP适合需求不多的人。
ISP一般需要更改硬件的引脚,因此用起来有些麻烦。可以结合着IAP使用。如下图所示:
左侧的是纯IAP,用户先写一个bootlaoder_own_1,接收外部指令,根据要求决定是否跳转,如果需要,如果根据自己写的bootloader跳转运行。
右侧的是IAP和ISP相结合(整体上也是一种IAP),用户先自己写一个bootlaoder_own_2,可根据指令决定是否跳转到官方的bootloader,跳转到官方bootloader就可以按照ISP的步骤继续操作了,这样不用改变硬件就执行了ISP程序。但是没有纯IAP灵活。