IAP
IAP(in application programming)在应用编程,一些概念什么的不在详细叙述了,百度,Google都有。这里主要记录一些曾经遇到的一些问题和解决方案。IAP升级方案曾在stm32平台和GD32(国产的,108M,兼容st)平台上实现过,不过速度并不快,方法也很简单,看了不少网上的例子,自己也做了个上位机实现传输。
IAP升级的要点
一、解决传输问题。
用蓝牙之类的自然方便许多,不过这里要备注一下:gd32的108M倍频需要修改HSE_SATUP_TIMEOUT 为0xffff,保证HSE_VALUE 值为对应的晶振值,PLL倍频超过16的需要修改stm32f10x_rcc.c 库文件,具体的可参考GD32F103XX 108M时钟配置,否则串口可能乱码。
二、flash读写。
建议使用官方的库读写。写入flash是只能写入内容为0xffffffff的地址单元,擦除要擦除一页。当然可以单字写入,也可以128字写入,前者方便省事,后者速度明显提高不少但相应的程序也要做修改。
FLASH_Unlock();
FLASH_ProgramWord(FLASH_APP1_ADDR+APP_CurAddress,((c1<<0)|(c2<<8)|(c3<<16)|(c4<<24)));
APP_Cu