1.3STM32 硬件更新方式及优劣比较ICP(在电路编程):ISP(在系统编程)和IAP(在应用编程)是最常用的硬件升级方式[16]。其中,ICP是指一类需要运用专门的如 JTAG等一系列协议和其他硬件的支持的升级方式,是对整块MCU 进行处理。剩下的两者都是对微处理器的某一部分进行烧写或是擦除。 都可以避免在单片机发展之初的一些不足之处,虽然都是对FLASH 区进行操作,但是仍有着一定的差异:ISP虽然不需要编程器,但是仍需要少量的电路进行辅助,而IAP 并不需要外部电路的辅助,通过串行接口即可进行操作。但是需要将 FLASH 空间进行分区,一部分作为将外部发送的数据复制到特定FLASH 位置的 Bootloader程序,另一部分用来存放用来进行升级功能的程序。除了自己编写的 Bootloader程序之外,在存储的前部位置,存在一个出厂时就被固化在存储区中的系统Bootloader程序,用于从串口接受数据到默认位置。实际上在进行IAP 升级时要先通过系统Bootloader程序将自己编写的 Bootloader程序烧写到FLASH中。 IAP和ISP最大的区别在于,IAP 可以通过预留的对外接口对正在运行的微控制器进行内部程序的改写[12]。此类的对外接口有很多种,类似 USART,USB 甚至以太网接口乃至无线射频都可以使用。 因此即使设备此时处在外部包装的内部也可以在不破坏外壳的情况下进行设备内部数据的更新, 通过网络连接甚至可以进行远程更新。而如果采用 ISP方式则需要停止当前微处理器的运行,并且由于需要外界辅助电路使得设备的包装以及摆放位置受到了制约。 如果要使用网络方式进行远程更新升级在STM32 开发板上加装一块无线模块即可远程传输。以上所提到的种种情况使得IAP成为了应用最为方便制约条件最少的方式。本篇文章主要就基于STM32 的平台IAP 升级进行设计和说明。 基于STM32F746的IAP程序升级设计(2):http://www.751com.cn/zidonghua/lunwen_43817.html