新聞中心

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



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 原平市| 安西县| 大安市| 简阳市| 贵港市| 静安区| 宝丰县| 连江县| 本溪| 祁连县| 延庆县| 嵊州市| 莱西市| 辉县市| 汪清县| 彰武县| 建德市| 高雄市| 高陵县| 宁蒗| 白朗县| 禹州市| 壶关县| 资源县| 兴城市| 博爱县| 阿尔山市| 古浪县| 莱芜市| 海原县| 五河县| 普安县| 东港市| 许昌县| 翁源县| 县级市| 时尚| 报价| 丰镇市| 玉山县| 明溪县|