新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于MC9S08QG8單片機(jī)的EEPROM虛擬技術(shù)

基于MC9S08QG8單片機(jī)的EEPROM虛擬技術(shù)

作者: 時(shí)間:2011-12-22 來(lái)源:網(wǎng)絡(luò) 收藏


使用C語(yǔ)言而不是匯編語(yǔ)言編寫這個(gè)函數(shù)是因?yàn)镃語(yǔ)言表達(dá)更清晰,另外目前的C編譯器能夠產(chǎn)生高效的匯編代碼。函數(shù)的入口參數(shù)cmd為Flash操作命令,具體命令內(nèi)容及其命令字節(jié)如表1所列;ProgAddr為待操作的Flash的地址,若是擦除操作則為Flash頁(yè)內(nèi)或者整個(gè)Flash內(nèi)的任意地址;buff-erAddr為緩沖區(qū)首地址;buff-ersize為待寫入的數(shù)據(jù)長(zhǎng)度。

2.2 存儲(chǔ)信息區(qū)的設(shè)計(jì)
存儲(chǔ)信息區(qū)由5個(gè)字節(jié)構(gòu)成。其中第一個(gè)字節(jié)為長(zhǎng)度信息,記錄的是空白Flash第一次被寫入的數(shù)據(jù)大小。另外四個(gè)字節(jié)為寫入控制信息,用來(lái)記錄Flash的寫入情況。每次寫入成功后,將該信息區(qū)按從低到高的順序?qū)?duì)應(yīng)的位由1變?yōu)?。這里需要提到的一點(diǎn)是:Flash被擦除后,每個(gè)字節(jié)的數(shù)據(jù)都變?yōu)?xFF,對(duì)Flash編程,其實(shí)是將Flash中每一位由“1”狀態(tài)變?yōu)椤癘”狀態(tài),或者保持“1”狀態(tài)。正是利用這一點(diǎn),控制信息可以記錄當(dāng)前Flash數(shù)據(jù)的寫入情況。例如,若長(zhǎng)度信息為16,則會(huì)用到控制信息的31位;若長(zhǎng)度信息為63,則僅用到低8位,寫入8次后,若要進(jìn)行下一次寫入操作,由于該頁(yè)剩余的長(zhǎng)度僅有3字節(jié)(512—5—63×8),小于63,所以需要擦除后才能進(jìn)行。為了減少擦除次數(shù),這里規(guī)定每次寫入的數(shù)組長(zhǎng)度不能超過(guò)63,同時(shí)由于控制信息位數(shù)的限制,數(shù)字長(zhǎng)度至少為16字節(jié)。



關(guān)鍵詞: MC9S08QG8 EEPROM虛擬技術(shù)

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉