由于项目需求,在网上溜了一大圈狗后发现IAP这个好东西,然后又从战舰版发现居然有例程,立马改成Mini版实验之
结果出现各种雷人事件,给雷得外焦内嫩
扔上附件,懒得看废话的直接下载玩就是了
出现问题1:
编译过程不断提示RAM超标
虽然在usart.h里面修改了USART_REC_LEN大小使之编译成功
但总觉得不舒服,只剩下12k左右的大小
解决方法:
没仔细看代码,不清楚此程序是先缓存到RAM然后再烧写到flash里面
如果需要直接烧写到flash需要使用协议,如
modbus
出现问题2:
烧写成功后,开始写入app,第一次写入可以正常运行
再次写入更新/全新app不能正常运行,需要重新烧写iap后才可使其正常
解决方法:
特么无力的解决方法,由于之前没做过flash模拟eeprom所以弯路绕了些
在stmflash.h中修改STM32_FLASH_SIZE大小为128即可解决
另外又把iap.c里面的烧写代码void iap_write_appbin(u32 appxaddr, u8 *appbuf, u32 appsize)修改了下
因为stm32f103rbt6(中容量)每页大小是1k,而stm32f103zet6(大容量)每页大小是2k
修改为宏定义,由stmflash.h中的STM32_FLASH_SIZE决定
按照stm的大中小容量划分写入方式
Tips:
IAP占用空间大小默认为:0x08005000,如果需要修改
APP中sys.c里面的MY_NVIC_SetVectorTable(NVIC_VectTab_FLASH,0X5000);(void MYRCC_DeInit(void)函)也需要相应修改
附件2修正了楼主附件的很多错误,主要是楼主的路径添加用的是 "sys/sys.h” 之类的,实际上,要加多../,改成: "../sys/sys.h” 就好了。
另外,楼主代码添加了一个ILI93XX.c文件,没用到,所以删掉就好了。
PS:我不知道谁给我编辑的帖子,程序本身是没有bug的
有问题的是我没说明清楚test.UV2那个我没修改(因为我没keil3,只有keil4)
直接用keil4开test.uvproj即可编译通过
附上截图说明
另外关于什么2.0跟3.5的库混用完全是扯淡,本程序是寄存器版本
(, 下载次数: 0)
上传
点击文件名下载附件
---------------------------------
感谢楼主的总结,终于实现了IAP了
一周热门 更多>