|
CPU中的非易失性存儲(chǔ)器通常是按片區(qū)分的,即要擦擦一片,教你一個(gè)方案,供你參考:
1、開(kāi)辟一個(gè)區(qū)域存儲(chǔ)數(shù)據(jù),如2000-7FFFH,設(shè)其中有N個(gè)區(qū)擦除區(qū)(通常每區(qū)512字節(jié))。
2、循環(huán)覆蓋方式存儲(chǔ),這樣不至于盯著一個(gè)地方擦寫(xiě)。
3、每個(gè)區(qū)的前12個(gè)字節(jié)備用,第1個(gè)字節(jié)作為標(biāo)記,=FF,表示空區(qū)(該區(qū)擦過(guò)了),反之未用。
剩下的500個(gè)字節(jié)分成25個(gè)組,每組剛好存20個(gè)字節(jié)。
操作:
1、順序存入數(shù)據(jù),寫(xiě)滿(mǎn)后循環(huán)重頭開(kāi)始。
2、開(kāi)始:每次上電,從頭開(kāi)始找20個(gè)全是FF的組,就是開(kāi)始的地方。(各區(qū)前12個(gè)不用,格式就固定了)
3、擦除:先確認(rèn)本區(qū)是否為空(首字節(jié)是非為FF),不是FF就擦除本區(qū)。
4、跨區(qū)的技巧及要點(diǎn):要做兩件事。
第一件:擦除下個(gè)區(qū)!設(shè)區(qū)號(hào)是1,2,3,4,5……,當(dāng)前操作在2區(qū),當(dāng)2區(qū)結(jié)束,進(jìn)入3區(qū)時(shí),卻要擦除4區(qū)!!。即在任何時(shí)刻保證下一個(gè)區(qū)一定是空的(全FF),目的:防止循環(huán)重復(fù)時(shí),開(kāi)機(jī)后找不到空位置(20個(gè)全FF)的情況出現(xiàn)。
第二件:清除新區(qū)的標(biāo)記,即將3區(qū)的首字節(jié)FF,改為xx(你定義一個(gè)非FF值,表示本區(qū)開(kāi)始起用),再?gòu)牡?2個(gè)單元開(kāi)始存數(shù)據(jù)。 |
|