[發(fā)明專利]一種利用MCU內部數據Flash存儲非易失性數據的方法有效
| 申請?zhí)枺?/td> | 201210074452.5 | 申請日: | 2012-03-20 |
| 公開(公告)號: | CN102662852A | 公開(公告)日: | 2012-09-12 |
| 發(fā)明(設計)人: | 馬建輝;王知學;劉源楊;李研強 | 申請(專利權)人: | 山東省科學院自動化研究所 |
| 主分類號: | G06F12/06 | 分類號: | G06F12/06 |
| 代理公司: | 濟南圣達知識產權代理有限公司 37221 | 代理人: | 張勇 |
| 地址: | 250014 山*** | 國省代碼: | 山東;37 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 利用 mcu 內部 數據 flash 存儲 非易失性 方法 | ||
?
技術領域
本發(fā)明屬于嵌入式系統(tǒng)技術領域,更具體的說是一種利用MCU內部數據Flash存儲非易失性數據的方法。
背景技術
在嵌入式系統(tǒng)設計中,經常需要存儲一些非易失性的數據,如果采用支持對字節(jié)讀寫的EEPROM實現數據存儲,操作起來和RAM一樣簡單方便,但同時會在大批量產品的生產中帶來成本問題和維護問題。在有數據Flash的MCU中,采用數據Flash代替EEPROM實現非易失性的存儲,便可以節(jié)約成本且無需維護。
用Flash存儲數據的傳統(tǒng)方式是為每個數據分配固定的存儲地址,由于Flash在進行寫操作時需要先擦除數據所在的整個扇區(qū),對一個數據進行寫操作便會造成對扇區(qū)內其他數據的擦除,由于擦除操作耗時較長,不僅效率低,影響嵌入式系統(tǒng)的實時性,而且為了避免丟失其他數據需要相當復雜的處理,對MCU的RAM空間也有一定的要求。如果寫入數據失敗,會造成所寫入數據的丟失,如果在擦除扇區(qū)后發(fā)生掉電,便會造成扇區(qū)內所有數據的丟失。不僅如此,由于每次寫入操作都需要先擦除扇區(qū),以擦除次數表征的Flash使用壽命也無法滿足產品生命周期的要求。
發(fā)明內容
本發(fā)明的目的就是為解決上述問題,提供一種利用MCU內部數據Flash存儲非易失性數據的方法,它不僅操作方便,應用接口簡單,而且可以盡量避免扇區(qū)擦除操作,提高存儲效率,同時提高MCU內部數據Flash的使用壽命。
為實現上述目的,本發(fā)明采用如下技術方案:
一種利用MCU內部數據Flash存儲非易失性數據的方法,將所有非易失性數據條目組織在一個分區(qū)中,將數據Flash的若干扇區(qū)劃分為多個數據分區(qū),不同數據分區(qū)存儲數據在不同歷史時間的拷貝;當前數據分區(qū)存儲最新的數據拷貝;在數據讀操作進行時,計算最新數據拷貝的Flash存儲位置,直接讀取該地址;在數據寫操作進行時,判斷數據寫入位置是否已經被擦除,如果寫入位置未擦除,進行分區(qū)拷貝操作,即將數據寫入下一個分區(qū),同時將當前分區(qū)中的其他數據依次復制到下一個分區(qū);如果寫入位置已經擦除,直接將數據寫入當前分區(qū)中,其他數據保持不變。
本發(fā)明數據分區(qū)的存儲結構為分區(qū)狀態(tài)字+data?id?1+data?1+data?id?2+data?2…,每個數據都可以很方便地進行尋址。按照存儲歷史時間,數據均勻地存儲在多個數據分區(qū)上,而不是固定的存儲地址,單個數據的頻繁存儲操作不會造成對固定扇區(qū)的反復擦除,這樣便可以提高Flash的使用壽命,以滿足產品生命周期的要求。
所述數據分區(qū)大小和個數取值均為2的冪次方,且分區(qū)個數不大于256,分區(qū)大小*分區(qū)個數等于扇區(qū)大小*扇區(qū)個數。扇區(qū)個數至少為2,這樣當存在分區(qū)拷貝操作需要擦除分區(qū)所在的扇區(qū)時,仍能保留至少一個扇區(qū)的歷史數據,這樣可以避免分區(qū)拷貝操作期間發(fā)生掉電而造成所有數據的丟失,以滿足實現掉電恢復功能的需要。
所述數據分區(qū)設置有狀態(tài)字,大小為單字節(jié),位置在分區(qū)起始地址,標識分區(qū)數據的存儲歷史時間,最新數據分區(qū)狀態(tài)字代表的分區(qū)為最新數據分區(qū)。數據分區(qū)狀態(tài)字在分區(qū)擦除后執(zhí)行完第一次寫操作后更新,之后本分區(qū)內的寫操作不影響分區(qū)狀態(tài)字。當發(fā)生分區(qū)拷貝時,最新數據分區(qū)狀態(tài)字遞增且不等于0xff,當遞增到0xff時,設置狀態(tài)字為0。通過在寫操作完成后進行分區(qū)狀態(tài)字的更新,保證了即使在分區(qū)拷貝期間發(fā)生掉電,上電時查找到的最新數據仍為掉電之前備份的那個分區(qū),這樣便實現了掉電恢復功能。
當存在取值為0的分區(qū)狀態(tài)字時,小于分區(qū)數的最大狀態(tài)字代表的分區(qū)為最新數據分區(qū),當不存在取值為0的分區(qū)狀態(tài)字時,最大狀態(tài)字代表的分區(qū)為最新數據分區(qū)。
將所有非易失性數據條目組織在一個分區(qū)中是指數據分區(qū)中數據條目的組織是以固定序列的形式進行的,每個數據條目都有固定的偏移地址,數據條目地址=分區(qū)起始地址+偏移地址。
所述的數據條目格式為data?id+data,data?id,它為單字節(jié)大小,唯一標識該數據,data為數據內容,長度由所表示的含義決定。
所述數據條目中的data?id,其取值區(qū)間為[0,254]的整型數據,不僅唯一標識數據,同時將其地址作為數據條目狀態(tài)字的存儲地址。由于Flash擦除后其數據為0xff,通過限定data?id的取值范圍不等于255即0xff,則可以用于判斷該數據條目在當前分區(qū)中的地址是否已經被擦除。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于山東省科學院自動化研究所,未經山東省科學院自動化研究所許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業(yè)授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201210074452.5/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種數據加解密方法以及裝置
- 下一篇:通過用戶標識符重新建立推送通知信道
- 數據顯示系統(tǒng)、數據中繼設備、數據中繼方法、數據系統(tǒng)、接收設備和數據讀取方法
- 數據記錄方法、數據記錄裝置、數據記錄媒體、數據重播方法和數據重播裝置
- 數據發(fā)送方法、數據發(fā)送系統(tǒng)、數據發(fā)送裝置以及數據結構
- 數據顯示系統(tǒng)、數據中繼設備、數據中繼方法及數據系統(tǒng)
- 數據嵌入裝置、數據嵌入方法、數據提取裝置及數據提取方法
- 數據管理裝置、數據編輯裝置、數據閱覽裝置、數據管理方法、數據編輯方法以及數據閱覽方法
- 數據發(fā)送和數據接收設備、數據發(fā)送和數據接收方法
- 數據發(fā)送裝置、數據接收裝置、數據收發(fā)系統(tǒng)、數據發(fā)送方法、數據接收方法和數據收發(fā)方法
- 數據發(fā)送方法、數據再現方法、數據發(fā)送裝置及數據再現裝置
- 數據發(fā)送方法、數據再現方法、數據發(fā)送裝置及數據再現裝置





