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