新聞中心

        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字節。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 张北县| 永新县| 灵寿县| 达州市| 桐柏县| 西峡县| 孝昌县| 毕节市| 镇巴县| 泗阳县| 商河县| 阳谷县| 金阳县| 洱源县| 会宁县| 布尔津县| 泾川县| 瓮安县| 阳信县| 赤城县| 梁平县| 齐齐哈尔市| 壶关县| 宁强县| 周宁县| 绥化市| 凤翔县| 武冈市| 博湖县| 南部县| 锦州市| 饶平县| 仁布县| 舒兰市| 义马市| 宁远县| 沙河市| 大宁县| 抚顺县| 阜阳市| 图们市|