《電子技術應用》
您所在的位置:首頁 > 微波|射頻 > 設計應用 > 基于AVR的E2PROM的數據動態存儲策略
基于AVR的E2PROM的數據動態存儲策略
摘要: 本文以AVR系列單片機中的ATmega8為例,從程序設計角度出發,提出一種切實可行的E2PROM數據存儲策略,最大限度地提高片內E2PROM空間的利用率,從而解決上面提到的問題。
Abstract:
Key words :

  在一個單片機系統中,往往要求系統能夠為用戶保存一些參數或數值。這些數據被要求在系統斷電后不會“消失”,并在下一次開機后能夠被讀取和修改。

  隨著單片機內部集成功能的不斷增加,使用片外數據存儲器的做法逐漸被含有片內可擦寫存儲單元的單片機所取代。早期用戶可將需要保存的數據存放在片內Flash內,但這種做法對Flash 內程序代碼乃至整個系統存在安全性隱患,在片內集成獨立的數據存儲區成了單片機芯片設計的必然趨勢。例如Atmel 公司在AVR 系列單片機產品中,就融入了先進的E2 PROM 電可擦除技術,使該公司的單片機具備了優秀的品質,在結構、性能和功能等方面都有明顯的優勢。但不管是將數據保存在Flash 內還是保存在E2PROM 內,都存在一個存儲單元可擦寫次數的上限。通常芯片廠家標明的是1 000 000 次以上;而對于單片機系統的設計者來說,有部分保存在E2PROM 內的數據在系統運行過程中是需要被頻繁擦寫的。當存放這些數據的片內存儲單元達到擦寫次數上限時,這個存儲單元就不能再使用了,從而會導致系統出現故障。

  另外,單片機內部的E2PROM 空間相對于有待保存的數據量來說是有很大富余的。也就是說,當單片機由于

  內部E2PROM 擦寫次數超過極限而不能正常工作時,片內仍然有較多的E2PROM 空間沒有被利用過,因而產生單片機內部資源的極大浪費。

  本文以AVR 系列單片機中的ATmega8 為例,從程序設計角度出發,提出一種切實可行的E2PROM 數據存儲策略,最大限度地提高片內E2 PROM 空間的利用率,從而解決上面提到的問題。

  1、E2PROM數據動態存儲的基本要求

  一般,把數據存儲方式設定為靜態,即為固定的地址指定惟一的變量,任何時候讀取和改寫此地址內數據的操作均視為對該變量的讀取和改寫。然而這樣的存儲方式若被用于E2PROM 內的數據存儲,當E2PROM 的某一單元因過量擦寫而失效后,這個固定地址內所存放的變量就失去了有效的對應物理空間,這是在做E2PROM 數據存儲時不愿意看到的。

  解決上述問題的有效方法是對E2PROM 數據實行動態存儲。其基本要求和目標是:

 ?、?在整個系統使用壽命內,使E2PROM 空間得到最大利用;

 ?、?系統能夠辨別不能使用的E2PROM 單元,從而保障數據安全。

  2 、策略分析

  為方便敘述,將整個E2PROM 空間分為以下幾個部分:統稱已經分配給用戶使用的地址連續的E2PROM 區

  域為“占用塊”;稱未曾分配的地址連續的E2PROM 區域為“可利用塊”或“空閑塊”。另外,為記錄占用塊的使用情況,還要在E2PROM 內劃定一個地址連續的區域作為“目錄表”。這個目錄表記錄的是占用塊中實際占用空間的地址。與此對應的, 占用塊中另外的部分就是廢棄空間(單元) 。

  采取這樣的策略,在高地址的空閑塊中先放入目錄表。該目錄表的大小決定于占用塊中實際占用單元的多少,目錄表記錄實際占用單元的地址;占用塊從低地址的空閑塊開始分配,系統不再回收已經分配的占用塊,一直到占用塊中出現廢棄單元,系統就為其把現有的占用塊擴大,同時修改目錄表中的相關地址信息。

  在系統運行初期,如果地址信息與數據信息同類型,那么占用塊和目錄表所占空間大小是一樣的,且目錄表是

  一個低地址的序列。如圖1 所示,如果單片機內有N個E2PROM 存儲單元內,則在高地址開辟一個目錄表空間,記錄m 個實際占用單元的地址,即0 ,1 ,2 , …,m-1 。

  

  當系統運行到一定時間后,占用塊中的某一個單元會因為E2PROM 數據擦寫次數超過限次而失效被廢棄,不妨假設這個單元地址是002H ,那么,系統就開始查找當前目錄表中所記錄的最大地址值,如圖2 所示。這個最大地址值加1 ,便是為廢棄單元在空閑塊重新分配單元的地址,這里是(m-1)+1 = m。同時,目錄表所記錄的該內容的地址也做出相應修改。

  

  可以預想的是,接著系統在一定時間后,會出現第2個廢棄單元,假設這個單元地址是000H。依次類推,如圖3 所示,系統會為D0 分配地址m+1 所指向的空間,同時目錄表內原先表示D0 所在的地址值會被更改為m+1 。

  

  隨著E2PROM 內廢棄單元的逐漸增加,空閑塊的大小不斷縮小。當出現新的廢棄單元而沒有空閑塊可以利用時,系統會出現故障。采用這樣的策略后,相對于首次出現廢棄單元系統便被摧毀來說,實際上這個出現故障的時間已經被大大延緩了。

  設Di 在固定E2 PROM 單元可存放的壽命為ti 。這個值與系統中要求Di 被修改的平均次數有關,其中i = 0 ,1 ,2 , …, m - 1 。

  

  

  在一個單片機系統中,往往要求系統能夠為用戶保存一些參數或數值。這些數據被要求在系統斷電后不會“消失”,并在下一次開機后能夠被讀取和修改。

  隨著單片機內部集成功能的不斷增加,使用片外數據存儲器的做法逐漸被含有片內可擦寫存儲單元的單片機所取代。早期用戶可將需要保存的數據存放在片內Flash內,但這種做法對Flash 內程序代碼乃至整個系統存在安全性隱患,在片內集成獨立的數據存儲區成了單片機芯片設計的必然趨勢。例如Atmel 公司在AVR 系列單片機產品中,就融入了先進的E2 PROM 電可擦除技術,使該公司的單片機具備了優秀的品質,在結構、性能和功能等方面都有明顯的優勢。但不管是將數據保存在Flash 內還是保存在E2PROM 內,都存在一個存儲單元可擦寫次數的上限。通常芯片廠家標明的是1 000 000 次以上;而對于單片機系統的設計者來說,有部分保存在E2PROM 內的數據在系統運行過程中是需要被頻繁擦寫的。當存放這些數據的片內存儲單元達到擦寫次數上限時,這個存儲單元就不能再使用了,從而會導致系統出現故障。

  另外,單片機內部的E2PROM 空間相對于有待保存的數據量來說是有很大富余的。也就是說,當單片機由于

  內部E2PROM 擦寫次數超過極限而不能正常工作時,片內仍然有較多的E2PROM 空間沒有被利用過,因而產生單片機內部資源的極大浪費。

  本文以AVR 系列單片機中的ATmega8 為例,從程序設計角度出發,提出一種切實可行的E2PROM 數據存儲策略,最大限度地提高片內E2 PROM 空間的利用率,從而解決上面提到的問題。

  1、E2PROM數據動態存儲的基本要求

  一般,把數據存儲方式設定為靜態,即為固定的地址指定惟一的變量,任何時候讀取和改寫此地址內數據的操作均視為對該變量的讀取和改寫。然而這樣的存儲方式若被用于E2PROM 內的數據存儲,當E2PROM 的某一單元因過量擦寫而失效后,這個固定地址內所存放的變量就失去了有效的對應物理空間,這是在做E2PROM 數據存儲時不愿意看到的。

  解決上述問題的有效方法是對E2PROM 數據實行動態存儲。其基本要求和目標是:

  ① 在整個系統使用壽命內,使E2PROM 空間得到最大利用;

  ② 系統能夠辨別不能使用的E2PROM 單元,從而保障數據安全。

  2 、策略分析

  為方便敘述,將整個E2PROM 空間分為以下幾個部分:統稱已經分配給用戶使用的地址連續的E2PROM 區

  域為“占用塊”;稱未曾分配的地址連續的E2PROM 區域為“可利用塊”或“空閑塊”。另外,為記錄占用塊的使用情況,還要在E2PROM 內劃定一個地址連續的區域作為“目錄表”。這個目錄表記錄的是占用塊中實際占用空間的地址。與此對應的, 占用塊中另外的部分就是廢棄空間(單元) 。

  采取這樣的策略,在高地址的空閑塊中先放入目錄表。該目錄表的大小決定于占用塊中實際占用單元的多少,目錄表記錄實際占用單元的地址;占用塊從低地址的空閑塊開始分配,系統不再回收已經分配的占用塊,一直到占用塊中出現廢棄單元,系統就為其把現有的占用塊擴大,同時修改目錄表中的相關地址信息。

  在系統運行初期,如果地址信息與數據信息同類型,那么占用塊和目錄表所占空間大小是一樣的,且目錄表是

  一個低地址的序列。如圖1 所示,如果單片機內有N個E2PROM 存儲單元內,則在高地址開辟一個目錄表空間,記錄m 個實際占用單元的地址,即0 ,1 ,2 , …,m-1 。

  

  當系統運行到一定時間后,占用塊中的某一個單元會因為E2PROM 數據擦寫次數超過限次而失效被廢棄,不妨假設這個單元地址是002H ,那么,系統就開始查找當前目錄表中所記錄的最大地址值,如圖2 所示。這個最大地址值加1 ,便是為廢棄單元在空閑塊重新分配單元的地址,這里是(m-1)+1 = m。同時,目錄表所記錄的該內容的地址也做出相應修改。

  

  可以預想的是,接著系統在一定時間后,會出現第2個廢棄單元,假設這個單元地址是000H。依次類推,如圖3 所示,系統會為D0 分配地址m+1 所指向的空間,同時目錄表內原先表示D0 所在的地址值會被更改為m+1 。

  

  隨著E2PROM 內廢棄單元的逐漸增加,空閑塊的大小不斷縮小。當出現新的廢棄單元而沒有空閑塊可以利用時,系統會出現故障。采用這樣的策略后,相對于首次出現廢棄單元系統便被摧毀來說,實際上這個出現故障的時間已經被大大延緩了。

  設Di 在固定E2 PROM 單元可存放的壽命為ti 。這個值與系統中要求Di 被修改的平均次數有關,其中i = 0 ,1 ,2 , …, m - 1 。

  

  

  3、實現流程

  圖4 為實現上述策略的程序流程。

  

  在每一次E2PROM 數據存儲的過程中,首先都需要從目錄表中查找該數據在占用塊內的地址add[ i ] ,然后將新數據D[i]寫入該地址。單從算法的角度考慮,認為不存在寫失敗或讀失敗的情況,那么隨后將寫好的數據再讀出,通過驗證數據的正確性就可以判別該占用單元是不是應該廢棄。如果驗證通過,修改操作完成;如果驗證沒有通過,則廢棄該地址空間,并通過查詢目錄表,向后開辟新的占用單元,之后重復存儲過程。

  4、示例

  AVR 單片機在片內集成了可以擦寫1 000 000 次的E2PROM 數據存儲器,用于保存系統的設定參數、固定表格和掉電后的數據保存,方便使用,減少系統的空間,又大大提高了系統的保密性。下面以AVR 系列中的ATmega8為例,介紹上述的E2 PROM 動態存儲策略的C語言程序實現。

  

  

  結 語

  集成獨立E2 PROM 數據存儲器是單片機設計的必然發展趨勢。對于單片機的用戶來說,怎樣更合理、更科學地利用好單片機的這些內部資源,需要不斷地探索和總結。本文在這方面作了一些努力和有益的嘗試。

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          亚洲一区二区三区免费视频| 亚洲乱码国产乱码精品精天堂| 久久夜精品va视频免费观看| 欧美日韩午夜在线视频| 亚洲一区二区在| 91久久黄色| 亚洲久久一区| 暖暖成人免费视频| 国产欧美日韩综合| 欧美激情2020午夜免费观看| 国产亚洲成av人在线观看导航| 欧美一区二区免费观在线| 亚洲一区视频在线观看视频| 欧美国产日韩在线| 欧美福利在线观看| 一区二区三区|亚洲午夜| 欧美国产日韩一区二区| 国产精品久久久久aaaa| 一区二区三区在线免费播放| 欧美国产国产综合| 国产欧美在线观看一区| 欧美久久九九| 国产精品一区视频| 久久伊人一区二区| 国产精品黄色在线观看| 精品99一区二区| 欧美日韩一区在线观看| 国产色产综合色产在线视频| 免费日韩精品中文字幕视频在线| 影音先锋久久精品| 国内一区二区三区| 国产午夜精品理论片a级探花| 一区二区亚洲欧洲国产日韩| 性亚洲最疯狂xxxx高清| 亚洲自拍偷拍一区| 欧美一级艳片视频免费观看| 一区在线播放| 制服丝袜激情欧洲亚洲| 亚洲欧美另类国产| 欧美韩日精品| 欧美另类69精品久久久久9999| 亚洲欧美激情视频在线观看一区二区三区| 欧美国产乱视频| 国产日韩欧美在线播放不卡| 亚洲国产成人tv| 亚洲一区二区在线播放| 亚洲乱码国产乱码精品精98午夜| 亚洲夫妻自拍| 久久精品国产第一区二区三区| 一区二区三区在线视频播放| 国产精品日韩欧美| 亚洲欧美日韩国产成人精品影院| 欧美日韩精品福利| 一区二区三区高清在线观看| 亚洲精选国产| 欧美日韩专区| 一区二区三区在线高清| 欧美亚洲一区在线| 一区二区国产精品| 免费欧美在线| 亚洲国产精品久久久久秋霞蜜臀| 99re国产精品| 一本色道久久88精品综合| 99re6热在线精品视频播放速度| 国产精品va在线播放我和闺蜜| 免费黄网站欧美| 国产日韩在线播放| 一本大道久久精品懂色aⅴ| 午夜日本精品| 国产精品久久久久久久久动漫| 欧美顶级艳妇交换群宴| 欧美日韩亚洲视频| 一本久久青青| 免费久久久一本精品久久区| 国产精品视频一区二区三区| 欧美另类变人与禽xxxxx| 亚洲国产美国国产综合一区二区| 亚洲天堂成人在线观看| 国产亚洲毛片在线| 国产亚洲a∨片在线观看| 亚洲一区中文字幕在线观看| 亚洲三级影院| 亚洲人成网站精品片在线观看| 一区二区三区日韩欧美精品| 这里只有精品视频在线| 亚洲视频自拍偷拍| 亚洲深爱激情| 午夜视频一区二区| 久久综合给合久久狠狠狠97色69| 在线观看视频一区| 亚洲欧美日韩一区二区三区在线| 欧美激情久久久久| 国产精品你懂的在线| 欧美日韩国产成人高清视频| 欧美亚洲动漫精品| 国产精品高潮久久| 欧美有码在线视频| 欧美午夜一区二区三区免费大片| 激情综合网址| 一本一本a久久| 欧美亚洲视频在线观看| 欧美一区二区三区视频免费| 日韩视频在线观看一区二区| 欧美精品九九99久久| 欧美片第1页综合| 欧美午夜在线一二页| 午夜影视日本亚洲欧洲精品| 欧美国产综合一区二区| 欧美日韩免费观看一区三区| 欧美国产日韩一区二区在线观看| 欧美精品一区二区三区很污很色的| 国产精品麻豆成人av电影艾秋| 亚洲精品免费一二三区| 久久精品夜色噜噜亚洲a∨| 亚洲欧美一区二区精品久久久| 夜夜嗨av一区二区三区| 亚洲欧美精品| 伊人久久亚洲美女图片| 国产精品av一区二区| 久久人人97超碰人人澡爱香蕉| 亚洲美女视频网| 亚洲精品资源| 国产精品视频在线观看| 欧美黄网免费在线观看| 欧美亚州在线观看| 欧美麻豆久久久久久中文| 91久久国产自产拍夜夜嗨| 欧美日韩视频在线一区二区| 亚洲综合欧美日韩| 亚洲校园激情| 最近中文字幕日韩精品| 欧美日本国产一区| 亚洲影视在线播放| 久久爱www| 国内精品模特av私拍在线观看| 国产亚洲成年网址在线观看| 国产在线视频欧美一区二区三区| 亚洲一区二区三区激情| 99精品久久| 国产一区二区三区自拍| 久久久久久九九九九| 在线天堂一区av电影| 国产亚洲精品bv在线观看| 亚洲午夜久久久久久尤物| 亚洲一区二区视频在线观看| 亚洲日本中文字幕区| 久久黄色级2电影| 看欧美日韩国产| 狠狠久久五月精品中文字幕| 99在线精品免费视频九九视| 国产精品人人做人人爽人人添| 久久夜色精品一区| 99国内精品久久久久久久软件| 亚洲无限乱码一二三四麻| 国产精品免费网站在线观看| 欧美三级在线视频| 亚洲欧美在线免费| 国产精品午夜电影| 国产精品视频一| 亚洲一区二区在线视频| 夜夜精品视频一区二区| 欧美成人精品在线视频| 美国成人毛片| 在线免费观看一区二区三区| 激情五月综合色婷婷一区二区| 久久久999精品| 国产欧美精品国产国产专区| 国产欧美日韩一区二区三区在线观看| 国产欧美另类| 亚洲成人资源网| 91久久久久久国产精品| 最新国产の精品合集bt伙计| 欧美日韩卡一卡二| 亚洲激情电影中文字幕| 国产日韩欧美在线播放| 亚洲精品一区二区三区四区高清| 久久在线视频| 国产精品欧美日韩| 久久精品人人做人人综合| 午夜免费电影一区在线观看| 好看的日韩视频| 欧美激情精品| 亚洲欧美日韩一区二区三区在线观看| 国产精品成人免费精品自在线观看| 夜夜嗨一区二区| 国产婷婷一区二区| 性做久久久久久免费观看欧美| 国产日韩欧美综合在线| 亚洲在线视频网站| 亚洲精品一区二区网址| 国产精品视频yy9299一区| 欧美黄色aa电影| 久久综合中文| 国产美女精品视频| 一二三区精品| 亚洲激精日韩激精欧美精品| 国产欧美在线观看一区| 亚洲第一级黄色片| 欧美日韩国产天堂| 亚洲色诱最新| 欧美日韩国产一区| 亚洲天堂成人在线观看| 国产综合婷婷| 欧美色道久久88综合亚洲精品| 亚洲网友自拍| 亚洲国产第一| 久久久之久亚州精品露出| 狠色狠色综合久久| 国产麻豆精品在线观看| 美日韩丰满少妇在线观看| 欧美日韩一区二区三区四区五区| 欧美xx69| 欧美精品成人一区二区在线观看| 乱人伦精品视频在线观看| 国产精品色一区二区三区| 亚洲国产精品123| 中文日韩电影网站| 亚洲伦理精品| 欧美高清在线| 亚洲视频在线观看视频| 国产亚洲视频在线观看| 国产区在线观看成人精品| 噜噜噜久久亚洲精品国产品小说| 亚洲一区二区三区成人在线视频精品| 性欧美大战久久久久久久久| 久久久久一区二区三区| 欧美日韩一区二区在线| 国产精品视频一二| 国产亚洲人成a一在线v站| 欧美日本一区二区视频在线观看| 亚洲欧美日韩在线综合| 欧美日韩在线视频首页| 日韩午夜在线| 日韩香蕉视频| 欧美在线观看天堂一区二区三区| 欧美xxx在线观看| 久久精品国产2020观看福利| 久久蜜桃av一区精品变态类天堂| 亚洲高清成人| 国产日韩欧美麻豆| 久久激情五月丁香伊人| 亚洲女人天堂av| 久久免费精品日本久久中文字幕| 欧美亚洲第一页| 老牛嫩草一区二区三区日本| 国产亚洲综合精品| 亚洲国产精品成人综合色在线婷婷| 亚洲精品国产精品国自产观看| 国产欧美一区二区精品忘忧草| aⅴ色国产欧美| 欧美三级电影一区| 欧美大片免费观看| 欧美日韩国产在线播放| 欧美日韩国产区| 久久国产精品亚洲77777| 欧美精品电影在线| 免费在线视频一区| 久久久精品日韩| 国产综合久久久久久鬼色| 影音先锋欧美精品| 久久久久久亚洲综合影院红桃| 欧美在线观看一二区| 国产欧美日韩视频在线观看| 国产日韩欧美夫妻视频在线观看| 亚洲国产精品精华液网站| 午夜在线电影亚洲一区| 亚洲精品网站在线播放gif| 99国产成+人+综合+亚洲欧美| 亚洲午夜激情免费视频| av成人免费观看| 亚洲手机视频| 国产伦精品一区二区三区视频黑人| 宅男精品导航| 国产亚洲欧美一级| 欧美性猛交一区二区三区精品| 国产日韩欧美| 欧美三区视频| 欧美成人视屏| 蜜臀av一级做a爰片久久| 亚洲大胆女人| 一区二区三区在线观看视频| 国产精品成人一区二区三区吃奶| 亚洲激情网站免费观看| 男男成人高潮片免费网站| 欧美性jizz18性欧美| 亚洲二区三区四区| 欧美日韩亚洲精品内裤| 国产精品乱码人人做人人爱| 可以看av的网站久久看| 亚洲激情在线观看视频免费| 欧美日韩视频在线观看一区二区三区| 久久偷看各类wc女厕嘘嘘偷窃| 亚洲无亚洲人成网站77777| 国产精品你懂的在线欣赏| 亚洲一区二区精品在线观看| 久久久久国产一区二区三区四区| 亚洲综合导航| 久久婷婷人人澡人人喊人人爽| 亚洲激情图片小说视频| 亚洲一区二区成人| 一区二区欧美视频| 激情欧美一区二区三区| 欧美精彩视频一区二区三区| 韩国一区二区三区在线观看| 一区二区三区日韩精品| 国产精品成人一区二区三区夜夜夜| 午夜天堂精品久久久久| 久久丁香综合五月国产三级网站| 禁断一区二区三区在线| 日韩视频一区二区三区在线播放免费观看| 国内视频一区| 麻豆9191精品国产| 狠狠色综合网| 国产精品网红福利| 午夜精品一区二区三区在线| 99v久久综合狠狠综合久久| 亚洲国产mv| 亚洲免费观看在线观看| 欧美激情欧美狂野欧美精品| 国产精品第三页| 欧美日韩国产999| 欧美成人性生活| 久久久久久久性| 国产精品一区二区久久国产| 国产午夜精品久久久久久免费视| 亚洲人精品午夜| 亚洲日本欧美天堂| 亚洲精品久久久久久一区二区|