各位,
我参考stm32f4_iap_using_usart把FLASH擦写的代码移植到自己的产品里面,希望能够开机自动把TF卡的bin文件烧录到SPI-FLASH里面。
boot—-0x8000000~0x8004000
APP—-0x8004000~0x080FFFFF
测试发现:
1)FLASH_If_Erase(APPLICATION_ADDRESS);会卡死
2)使用FLASH_If_Write(&flashdestination, (uint32_t*) ramsource, (uint16_t) packet_length/4) 升级和烧录到SPI-FLASH里面一样的rtthread.bin没有问题,但是升级不一样的rtthread.bin则直接出错。
请问是什么原因?如何解决呢?我们需要做TF卡升级APP,希望开机自动检测TF卡上是否有升级文件,有则自动擦写升级。
补充:rtthread.bin采用的是romfs。
感谢回复,我的意思就是说目前STM32F4板子上面的SPI-FLASH有Boot区域+APP区域,然后希望板子启动之到APP之后,能够mount TF卡,检测是否有升级文件rtthread.bin,有的话,则循环读取该文件,每次读256bytes,擦写到APP区域,全部擦写完毕,则跳转重启。
目前碰到的问题是:循环读取该文件,擦写到APP区域,FLASH_If_Write就挂掉了。
APP启动之后,能否自己擦写自己?
补充:
1)TF卡里面的rtthread.bin文件和烧入到APP一样,则反复写都没问题;一旦TF卡里面的rtthread.bin文件和烧入到APP不一样,则挂了。
2)APP是采用romfs,TF卡是fat32文件系统
3)附上代码: