是In Application Programming的首字母缩写,IAP是用户自己的程序在运转过程中对User Flash的部分区域进行烧写,意图是为了在产品发布后能够方便地经过预留的通讯口对产品中的固件程序进行更新晋级。
通常在用户需求完成IAP功用时,即用户程序运转中作本身的更新操作,需求在规划固件程序时编写两个项目代码,榜首个项目程序不履行正常的功用操作,而仅仅经过某种通讯管道(如USB、USART)接纳程序或数据,履行对第二部分代码的更新;第二个项目代码才是真实的功用代码。这两部分项目代码都一起烧录在User Flash中,当芯片上电后,首要是榜首个项目代码开端运转,它作如下操作:
1)查看是否需求对第二部分代码进行更新
2)假如不需求更新则转到4)
3)履行更新操作
4)跳转到第二部分代码履行
榜首部分代码有必要经过其它手法,如JTAG或ISP烧入;第二部分代码能够运用榜首部分代码IAP功用烧入,也能够和榜首部分代码一道烧入,今后需求程序更新是再经过榜首部分IAP代码更新。
关于STM32来说,由于它的中止向量表坐落程序存储器的最低地址区,为了使榜首部分代码能够正确地呼应中止,通常会组织榜首部分代码处于Flash的开端区域,而第二部分代码紧随其后。
在第二部分代码开端履行时,首要需求把CPU的中止向量表映像到自己的向量表,然后再履行其他的操作。
假如IAP程序被损坏,产品有必要返厂才干从头烧写程序,这是很费事而且十分消耗时刻和金钱的。针对这样的需求,STM32在对Flash区域实施读维护的一起,自动地对用户Flash区的开端4页设置为写维护,这样能够有效地确保IAP程序(榜首部分代码)区域不会被意外地损坏。
ST的网站上有运用USART完成IAP的比如,各位能够参阅这个比如和相应的手册。
使用笔记 AN2557 – STM32F10xxx in-application programming using the USART
例程:AN2557 – STM32F10xxx in-application programming using the USART