• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > 基于MC9S08QG8單片機的EEPROM虛擬技術

    基于MC9S08QG8單片機的EEPROM虛擬技術

    作者: 時間:2011-12-22 來源:網絡 收藏


    使用C語言而不是匯編語言編寫這個函數是因為C語言表達更清晰,另外目前的C編譯器能夠產生高效的匯編代碼。函數的入口參數cmd為Flash操作命令,具體命令內容及其命令字節如表1所列;ProgAddr為待操作的Flash的地址,若是擦除操作則為Flash頁內或者整個Flash內的任意地址;buff-erAddr為緩沖區首地址;buff-ersize為待寫入的數據長度。

    2.2 存儲信息區的設計
    存儲信息區由5個字節構成。其中第一個字節為長度信息,記錄的是空白Flash第一次被寫入的數據大小。另外四個字節為寫入控制信息,用來記錄Flash的寫入情況。每次寫入成功后,將該信息區按從低到高的順序將對應的位由1變為0。這里需要提到的一點是:Flash被擦除后,每個字節的數據都變為0xFF,對Flash編程,其實是將Flash中每一位由“1”狀態變為“O”狀態,或者保持“1”狀態。正是利用這一點,控制信息可以記錄當前Flash數據的寫入情況。例如,若長度信息為16,則會用到控制信息的31位;若長度信息為63,則僅用到低8位,寫入8次后,若要進行下一次寫入操作,由于該頁剩余的長度僅有3字節(512—5—63×8),小于63,所以需要擦除后才能進行。為了減少擦除次數,這里規定每次寫入的數組長度不能超過63,同時由于控制信息位數的限制,數字長度至少為16字節。



    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 汽车| 防城港市| 丹江口市| 南雄市| 镇巴县| 丰原市| 织金县| 忻州市| 芒康县| 普格县| 台安县| 梓潼县| 金秀| 龙门县| 焉耆| 武冈市| 天等县| 枞阳县| 宁武县| 阿坝县| 灵山县| 科技| 开江县| 安平县| 固原市| 东海县| 威远县| 屏边| 霍城县| 苍山县| 盐城市| 广宁县| 开封县| 绥化市| 陈巴尔虎旗| 常宁市| 潜江市| 昌黎县| 南乐县| 敦煌市| 孟州市|