<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

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


          使用C語言而不是匯編語言編寫這個(gè)函數(shù)是因?yàn)镃語言表達(dá)更清晰,另外目前的C編譯器能夠產(chǎn)生高效的匯編代碼。函數(shù)的入口參數(shù)cmd為Flash操作命令,具體命令內(nèi)容及其命令字節(jié)如表1所列;ProgAddr為待操作的Flash的地址,若是擦除操作則為Flash頁內(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é)為寫入控制信息,用來記錄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)行下一次寫入操作,由于該頁剩余的長(zhǎng)度僅有3字節(jié)(512—5—63×8),小于63,所以需要擦除后才能進(jìn)行。為了減少擦除次數(shù),這里規(guī)定每次寫入的數(shù)組長(zhǎng)度不能超過63,同時(shí)由于控制信息位數(shù)的限制,數(shù)字長(zhǎng)度至少為16字節(jié)。



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

          評(píng)論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();