写EEPROM,写FLASH经验记录
扫描二维码
随时随地手机看文章
最近在做一款产品移植。用户数据一共7块内容。老产品都是用EEPROM的读写方式通信,内在的东西不熟悉,看不到。
然而在STM32105里面,自己开始琢磨用户数据的保存,开始搬迁。首次玩此款芯片,经验不多经历了很多坎坷,写篇文章记录:
1、明确需求很重要。我的数据有4块是小数据而且经常要改动,有1块 数据不常用,内容几十字节。有1块数据接近2K,有1块数据大于2K。
2、明确平台资源。STM32105RC, 64KRAM,256KROM, flash的页大小2K一页。
3、寻找轮子,向前进。官网模拟EEPROM的例程:STM32F10x_AN2594_FW_V3.1.0优化(FLASH模拟EEPROM)
4、耐心磨刀。特别是经验不足的新手(我)。
a.在第1调需求没明确,导致个别区块大小定义不准确。同样影响常用数据分类,数据大小分类的准确性
b.七块数据保守估计4K,没理解透第2条,天真的去申请操作4K的数据。
c.没理解号轮子的特性,竟然误解优化的方法,想拿掉;竟然以为模拟EEPROM,一页可以存2K数据;实际上优化的方法方便读写数据的速度,模拟EEPROM,一半存的是虚拟地址,一半存的数据,准确来说还要预留4个字节存页状态,实际数据不足1K每页。
d.实战经验缺乏,乱搞了很多次。例如模拟EEPROM写满一页需要回收有效数据,然后转移到新页
e.折腾了好机会,开始独创新模式,采用模拟EEPROM的原则、理论、方法,单独定义页面来存储接近2K的数据,大于2K的块数据。无奈换页的时候,要么内存数据会被影响,要么换页数据不准确,大小 不到位。不过好事多磨还是解决 了。
总结:再好的记忆也比不上一个烂笔头。数据模型,FLASH存储,MEM申请和释放,数据编辑和换页操作。这4快都是要一笔一划清晰用笔头描绘出来。