[STM32F4] 求助STM32F407VGT6写内部FLASH问题

[复制链接]
1638|6
 楼主| liweidxh 发表于 2019-4-4 10:17 | 显示全部楼层 |阅读模式
有个产品要远程升级功能,现在程序远程下发成功,校验也成功。
程序大致是将存储在外部RAM里面的程序,按照512byte一包,写入内部flash。
现在问题来了,我每写一包,然后再从flash里面读这包数据,都是正常,但是我再写下一包的时候,会把上一包数据擦除,最后用jflash查看内部flash时候,只剩下最后一包写入的数据,导致升级失败。
bootloader和app里面都使用了ucosiii。
不知道是什么原因,求助各位。

评论

void BSP_FLASH_Write(uint32_t WriteAddr,uint32_t *WriteBuf,uint32_t WriteNum) { FLASH_Status status = FLASH_COMPLETE; uint32_t addrx=0; uint32_t endaddr=0; if(WriteAddr<STM32_FLASH_BASE||WriteAddr%4) return; //非法地址 FL  发表于 2019-4-4 10:18
yklstudent 发表于 2019-4-4 10:58 | 显示全部楼层
这个需要整体先擦除,然后再接收一包写入一包

评论

前面有个升级前准备,已经擦除过了  发表于 2019-4-4 11:06
huzi2099 发表于 2019-4-4 11:22 | 显示全部楼层
你查一下手册,flash里不同地址段的擦除扇区是不一样的,前面块小后面块大,好像是128K字节一次一擦.

评论

@liweidxh :有关系,扇区大小不一样  发表于 2019-4-4 12:19
擦除是按扇区擦的,和大小没关系吧  发表于 2019-4-4 11:33
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

9

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部