寫(xiě)EEPROM,寫(xiě)FLASH經(jīng)驗(yàn)記錄
最近在做一款產(chǎn)品移植。用戶(hù)數(shù)據(jù)一共7塊內(nèi)容。老產(chǎn)品都是用EEPROM的讀寫(xiě)方式通信,內(nèi)在的東西不熟悉,看不到。
然而在STM32105里面,自己開(kāi)始琢磨用戶(hù)數(shù)據(jù)的保存,開(kāi)始搬遷。首次玩此款芯片,經(jīng)驗(yàn)不多經(jīng)歷了很多坎坷,寫(xiě)篇文章記錄:
1、明確需求很重要。我的數(shù)據(jù)有4塊是小數(shù)據(jù)而且經(jīng)常要改動(dòng),有1塊 數(shù)據(jù)不常用,內(nèi)容幾十字節(jié)。有1塊數(shù)據(jù)接近2K,有1塊數(shù)據(jù)大于2K。
2、明確平臺(tái)資源。STM32105RC, 64KRAM,256KROM, flash的頁(yè)大小2K一頁(yè)。
3、尋找輪子,向前進(jìn)。官網(wǎng)模擬EEPROM的例程:STM32F10x_AN2594_FW_V3.1.0優(yōu)化(FLASH模擬EEPROM)
4、耐心磨刀。特別是經(jīng)驗(yàn)不足的新手(我)。
a.在第1調(diào)需求沒(méi)明確,導(dǎo)致個(gè)別區(qū)塊大小定義不準(zhǔn)確。同樣影響常用數(shù)據(jù)分類(lèi),數(shù)據(jù)大小分類(lèi)的準(zhǔn)確性
b.七塊數(shù)據(jù)保守估計(jì)4K,沒(méi)理解透第2條,天真的去申請(qǐng)操作4K的數(shù)據(jù)。
c.沒(méi)理解號(hào)輪子的特性,竟然誤解優(yōu)化的方法,想拿掉;竟然以為模擬EEPROM,一頁(yè)可以存2K數(shù)據(jù);實(shí)際上優(yōu)化的方法方便讀寫(xiě)數(shù)據(jù)的速度,模擬EEPROM,一半存的是虛擬地址,一半存的數(shù)據(jù),準(zhǔn)確來(lái)說(shuō)還要預(yù)留4個(gè)字節(jié)存頁(yè)狀態(tài),實(shí)際數(shù)據(jù)不足1K每頁(yè)。
d.實(shí)戰(zhàn)經(jīng)驗(yàn)缺乏,亂搞了很多次。例如模擬EEPROM寫(xiě)滿(mǎn)一頁(yè)需要回收有效數(shù)據(jù),然后轉(zhuǎn)移到新頁(yè)
e.折騰了好機(jī)會(huì),開(kāi)始獨(dú)創(chuàng)新模式,采用模擬EEPROM的原則、理論、方法,單獨(dú)定義頁(yè)面來(lái)存儲(chǔ)接近2K的數(shù)據(jù),大于2K的塊數(shù)據(jù)。無(wú)奈換頁(yè)的時(shí)候,要么內(nèi)存數(shù)據(jù)會(huì)被影響,要么換頁(yè)數(shù)據(jù)不準(zhǔn)確,大小 不到位。不過(guò)好事多磨還是解決 了。
總結(jié):再好的記憶也比不上一個(gè)爛筆頭。數(shù)據(jù)模型,F(xiàn)LASH存儲(chǔ),MEM申請(qǐng)和釋放,數(shù)據(jù)編輯和換頁(yè)操作。這4快都是要一筆一劃清晰用筆頭描繪出來(lái)。
??