《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 設計應用 > 利用基于閃存的MCU實現用戶數據存儲
利用基于閃存的MCU實現用戶數據存儲
摘要: 采用微控制器的大多數設備還需要某種機制來存儲在斷電時仍要被記住的那些設置數據。用戶希望喜愛的電臺、預設溫度、參數選擇和其他永久性信息能長久保存下來供每次開機時直接取用。 為了滿足這種用戶需求,設計師一般使用串行EEPROM。這些器件又小又便宜,具有很長的歷史,設計工程師用起來得心應手。但在今天對成本極其敏感的市場下,即使這樣一個廉價的器件也可能突破成本預算。因此許多設計師試圖尋求并利用已經包含在微控制器芯片中的資源:程序閃存中剩余的空間。
Abstract:
Key words :

采用微控制器的大多數設備還需要某種機制來存儲在斷電時仍要被記住的那些設置數據。例如,在更換電池后記不住預設電臺的收音機肯定不會在市場上取得很大的成功。用戶希望喜愛的電臺、預設溫度、參數選擇和其他永久性信息能長久保存下來供每次開機時直接取用。

為了滿足這種用戶需求,設計師一般使用串行EEPROM。這些器件又小又便宜,具有很長的歷史,設計工程師用起來得心應手。但在今天對成本極其敏感的市場下,即使這樣一個廉價的器件也可能突破成本預算。因此許多設計師試圖尋求并利用已經包含在微控制器芯片中的資源:程序閃存中剩余的空間。

過去,許多微控制器使用ROM或可紫外線擦除的EPROM來存儲程序指令。但現在越來越多的微控制器轉用閃存技術存儲代碼。選擇閃存的主要理由是,如果在程序代碼中發現錯誤,閃存數據很容易被擦除和更新。

大多數微控制器具有讀取程序空間中存儲數據的機制。基于馮·諾伊曼架構的處理器,如TI MSP430,可以使用任何尋址模式讀取程序閃存。哈佛架構處理器一般利用特殊的機制將數據從程序空間傳送到數據空間。具有閃存管理功能的其他MCU包括:

1. 包含MOVEC(移動常數)指令的非常流行的8051處理器系列;

2. 包含TBLRD和TBLWR(表讀和表寫)指令的Microchip PIC18系列;

3. 具有偽馮·諾伊曼架構的美信MAXQ微控制器系列,它們允許通過簡單的MOVE指令訪問閃存程序存儲空間(見圖1)。

圖1:在像美信MAXQ2000這樣的偽馮·諾伊曼MCU中采用的數據交換允許任何存儲器塊被用作代碼或數據存儲器。

但即使能夠從隨機閃存位置讀取數據,完整的非易失性存儲器子系統也必須能夠隨機修改閃存中的數據。這意味著需要解決兩個問題:首先,一旦某個閃存位置被寫入,那個位置的數據只能通過擦除整個閃存塊(通常128字節或以上)進行修改;其次,閃存的讀寫次數非常有限。

本文將介紹如何構建一個能夠解決這些問題、并使用閃存塊模擬隨機寫入的機制。雖然本文的用例是MAX2000,但原理適用于支持讀寫和擦除閃存的用戶代碼的任何處理器。本文討論的方案已經被用于采用MAXQ3180三相模擬前端和MAXQ2000的三相電表參考設計。

閃存管理的基本知識

閃存是一種電可擦除的存儲器,通常主要用于讀操作,也就是說,雖然是可寫的,但它不希望很頻繁地更新數據,因此對這種存儲器的操作大部分是讀操作。大多數閃存器件是以字(word)為單位寫入數據的,但一次只能擦除整個塊。這使得它們不適用于頻繁變化的存儲應用,只適合存儲那些永遠不變的常數表。

一共有兩種閃存:NAND閃存和NOR閃存。NAND閃存經常用于存儲卡和閃盤。一般來說,從NAND器件讀取數據需要幾個周期,并且大部分是用串行方式完成的。

因此NAND閃存不適于存儲程序代碼,因為存取時間太長。而NOR閃存更像是傳統的字節或字寬的存儲器。可以像讀ROM器件那樣讀NOR閃存中的數據:使片選和地址線有效,然后等待一段訪問時間后從總線上讀取數據。

閃存塊通常被擦除到“1”狀態,因此經過擦除后,塊中的每個位置都是0xFFFF。“編程”一個閃存位置是把某些位從“1”狀態改變為“0”狀態。為了使編程過的位返回到“1”狀態,整個塊必須被擦除。

任何電可擦除的存儲器件都面臨壽命的問題。根據所用技術的不同,一個閃存單元在永久失效以前可以承受的擦除-編程次數少則1000次,多則100萬次。使用閃存存儲數據的任何方案都必須確保寫入次數在整個單元陣列上獲得均勻分布,沒有一個位置會出現太多的擦除和編程次數。

大多數閃存器件都允許將前次編程中那些未被編程的位從“1”改為“0”狀態。例如,大多數器件允許用0xFFFE編程過的那個位置再用0x7FFE進行編程,因為這種操作不會將任何位從“0”改變到“1”。然而如圖1所示的處理器架構中使用的閃存不允許這樣做。這種寫入操作的結果是失敗,內存中的數據仍然是0xFFFE。

理由很簡單:因為要被編程的存儲塊主要用作代碼空間,通常禁止對前面寫過的位置作任何寫操作。因為指令0xFFFF代表的是無效的源子譯碼(source sub-decode),不可能出現在有效的代碼塊中。這樣,阻止向以前編過程的位置寫入數據有助于保持代碼塊的完整性。

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 亚洲第一页在线播放| 国产无遮挡吃胸膜奶免费看| 又湿又紧又大又爽a视频| 3d动漫精品啪啪一区二区中文| 打臀缝打肿扒开夹姜| 亚洲伊人色欲综合网| 窝窝免费午夜视频一区二区| 国产在热线精品视频国产一二| 97久久精品无码一区二区天美 | 欧美日韩亚洲国内综合网香蕉| 卡一卡二卡三在线入口免费| 精品一区二区视频在线观看| 在线播放无码高潮的视频| 中文字幕三级电影| 日韩在线免费电影| 亚洲国产精品线在线观看| 短篇丝袜乱系列集合嘉嘉| 国产一卡二卡≡卡四卡无人| 九九影院理论片在线观看一级| 国产视频久久久久| www.日本在线观看| 手机在线看片国产日韩生活片| 久久这里精品国产99丫e6| 欧美成人精品第一区二区三区| 免费人成网站在线观看欧美| 色婷婷在线精品国自产拍| 国产日韩在线亚洲字幕中文| 91免费国产在线观看| 奇米影视久久777中文字幕| 中文字幕乱码系列免费| 日韩三级电影院| 免费一级毛片女人图片| 视频一区精品自拍| 国产激情在线观看| 91热视频在线| 奇米第四色首页| 三色堂明星合成论坛| 欧美成人免费在线视频| 免费国产精品视频| 美女黄频a美女大全免费皮| 国产又粗又猛又爽又黄的免费视频|