关于IAP实现flash方式更新程序

2019-07-20 19:05发布

小弟想实现一个IAP远程升级,通过局域网TCP/IP方式实现.下面是我的设计思路:
1>使用单片机内部flash,额,stm32f4zgt6内部的flash多达1M,不使用不是很浪费?
2>如下是小弟对flash资源的分配方式,大神觉得合理吧???(因为bootloder和APP都是采用lwip+ucos,比较大,所以各个分配了384KB字节空间).
0.jpg
3>大概我想使用10M字节作为缓存,一次从网口读取10M字节,然后写入单片机flash.
4>问题来了,内部flash前4个扇区是16KB,第i5个扇区是64KB,后面的就是128KB,那我假如每次写入10KB,那第二次写入数据不是会把第一次写入
的数据给删除了嘛?这个如何破(flash只能在擦除之后才能写,如果是采用扇区擦除,那10KB缓存还不够写满一个扇区,我又没有太大的ram,所以
不能采用原子的那种很粗暴的一次完全写入方式)?恳请大神指教~~~
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
dengxiaojun12
1楼-- · 2019-07-20 21:57
 精彩回答 2  元偷偷看……
liuchang
2楼-- · 2019-07-20 22:16
给自己顶下
liuchang
3楼-- · 2019-07-21 00:43
dengxiaojun12 发表于 2016-11-4 09:27
擦除之后才能写的意思是
当你要写的位是1的时候,你想把这个位写成0,就需要擦除,但是当这个位本身就是0的时 ...

大神,感谢指教,明白了大神的意思,万分感谢
只是flash上擦除是写1.额,不管是内部flash,还是外部flash,都会这样的吧
dengxiaojun12
4楼-- · 2019-07-21 04:27
dengxiaojun12 发表于 2016-11-4 09:27
擦除之后才能写的意思是
当你要写的位是1的时候,你想把这个位写成0,就需要擦除,但是当这个位本身就是0的时 ...

大神,感谢指教,明白了大神的意思,万分感谢
只是flash上擦除是写1.额,不管是内部flash,还是外部flash,都会这样的吧

一周热门 更多>