• <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虛擬技術

    作者: 時間:2009-01-13 來源:網絡 收藏


    使用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字節。存儲信息區的結構如下:



    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 景东| 肃宁县| 南郑县| 雷州市| 静海县| 日照市| 天柱县| 平和县| 合作市| 阜南县| 岳阳县| 灵川县| 丁青县| 竹北市| 宝兴县| 衡山县| 满洲里市| 布尔津县| 自贡市| 通山县| 尼玛县| 丹棱县| 夹江县| 明溪县| 浦东新区| 天门市| 福安市| 磐安县| 凉山| 弥勒县| 合江县| 伊春市| 崇信县| 宜章县| 闸北区| 巴南区| 吉林市| 太康县| 修文县| 峨眉山市| 通化市|