前文说过,在STM32F0xx系列芯片上进行IAP升级,使用串口方式进行IAP升级确实简单。但是实际操作中并不方便:因为需要串口线,电脑,外加电脑端的UI,而且操作繁琐不便于远程升级。
串口IAP链接:
https://blog.csdn.net/triv2009/article/details/78706013
也有GPRS方式IAP的,但是硬件成本高,开发难度大,维护时间长,只适合车辆网用途而已。
而本次推荐的是使用SD/TF卡方式进行IAP升级,操作更为简单些,只需要提供*.bin文件即可插卡升级。
当然SD卡升级的方式需要硬件上增加SD/TF卡座,需要SPI接口(3线,SCK,SDI,SDO),不过算起来这增加的硬件成本也不高,一个SD/TF卡座的硬件成本也就0.5RMB以内,唯一缺点是占用PCB空间较大。
然后说说软件该怎么改,由于读写SD/TF卡需要文件系统,特别是"读文件"操作比较占用FLASH空间,所以IAP段占用的地址空间就特别大,一般都要0x3000的空间,就算经过中等优化,也得0x2200。IAP段要占用12K空间,对于STM32F0xxF4之类只有16K FLASH来说,这确实够呛,所以至少需要32K或以上的FLASH空间才适合使用SD/TF卡的升级方式。
//------------------------------------------------------------------------------------------------------------------
SPI初始化: