你说的IAP是in-application programming 的意思吗?一般IAP都是类似于bootloader的一段代码。正常的时候进行程序的重定位,升级的时候进行固件更新。这样一个完整的程序会分成两个文件的,两个文件之间可以通过函数指针来访问的(这牵扯程序重定位的问题,麻烦些的要用链接脚本)。这个IAP的功能是可以自己写的,不麻烦,st的官方代码就有参考历程stsw-stm32051。我之前还用过一个片子,它是把IAP固化到内部的ROM里了,这就必须参考这个片子的文档来进行一些设置。整个IAP的过程是代码的复制和重定位,并不在乎你main里面写的什么,事实上,bootloader里和fw中的两个main也不是同一个函数,只是函数名字相同,地址肯定不相同的。
|