《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 設計應用 > 使用帶有雙組閃存的MCU優點
使用帶有雙組閃存的MCU優點
摘要: Flash受歡迎主要有兩個原因:一是隨著扇區的增加,其擦除流程與典型的EEPROM相比,速度更快。減少了對設備進行編程的時間,因此也減少了制造流程所需的時間。另一個原因是Flash存儲器的造價低于EEPROM,因此構建有許多Flash存儲器的MCU可實現更高的成本效益。
關鍵詞: MCU Flash EEPROM
Abstract:
Key words :

        MCU(微控制器)在過去幾十年里在CPU性能、通信接口、模數和數模外設、內存大小及讀寫次數等方面呈指數發展。我們專注于帶有非易失性嵌入式存儲器的MCU(我們在USB閃存驅動器、存儲器等內擁有閃存),從首批帶有一次性編程(OTP)的器件到EPROM(電可編程只讀存儲器),再到EEPROM (在方程中增加了“可擦”一詞,能夠在不需要紫外線燈的情況下擦除它),到現在的嵌入式閃存(在某些情況下稱為Flash EEPROM),這是目前最常用的閃存。

  EEPROM和Flash在概念上類似,兩者都是可電擦除和寫入的存儲器,但是它們之間也存在某些差異。最初Flash只能在大數據塊上寫入,但是現在兩者比較接近了,一個單字節、詞或雙詞都可以寫入,取決于架構是支持8位、16位還是32位寫入操作,是否需要與偶數地址對齊,因此主要的區別是擦除過程。EEPROM的擦除大小很小(在大多數情況下,只能擦除一個單字節),而Flash需要在大扇區中(在某些情況下為數據塊或頁面)擦除,而且還取決于所使用的器件,扇區可以是幾個字節或是幾千個字節。

Flash受歡迎主要有兩個原因:一是隨著扇區的增加,其擦除流程與典型的EEPROM相比,速度更快。使用EEPROM工作時,擦除過程很慢,通常一個字節以ms為單位。盡管Flash的擦除時間大致相同,但是它適用于擦除整個扇區。這樣,減少了對設備進行編程的時間,因此也減少了制造流程所需的時間。另一個原因是Flash存儲器的造價低于EEPROM,因此構建有許多Flash存儲器的MCU可實現更高的成本效益。

  帶有嵌入式閃存的MCU支持系統內編程。這意味著MCU可以在用于最終應用的印刷電路板(PCB)上進行編程。在某些情況下,需要增加一些額外電路,以進入或退出編程模式,但是能夠在不移除設備的情況下進行或先在套接字中進行編程是值得的,這意味著即使軟件開發沒有完成,板卡也能夠完全填充。還可以在原始版本出來后升級軟件而不更改硬件,從而加快面市速度,因為基于OTP或ROM的設備需要完整的軟件版本才能夠推出。

  演進的下一步是向MCU的Flash存儲器添加自編程功能,允許MCU在運行時執行寫入/擦除操作。這樣會帶來兩大好處:一是代碼本身可以包含再次對整個應用進行編程的例程,允許通過外設進行遠程更新(這些通常稱為引導程序,所使用的外設通常是串行接口),因此具有很高的靈活性,能夠在安裝后更新設計;二是能夠在運行時存儲非易失性數據,如空調的溫度或電視上編程后的頻道。

  Flash自編程

  下面闡述了在沒有雙閃存陣列的情況下如何在系統中和運行時寫入閃存。

  要在運行時進行寫入和擦除流程,則需要對任何一側施加較高電壓或清除各個位。當對Flash庫施加高電壓時,無法讀取整個存儲器,因此有兩種典型的替代方案讓系統保持工作:一種是其它存儲器運行寫入/擦除(通常是RAM)Flash的代碼,第二種方法是在執行Flash操作時,為CPU提供一種拖延代碼執行的方法。

這兩種方法都另有一個限制:由于中斷矢量通常位于Flash存儲器,因此在執行Flash命令時需要禁用中斷功能,因為CPU在那段時間無法讀取Flash,而且在需要時,也不能獲取中斷矢量。在使用I2C、UART或USB等串行外設運行的系統中,這些外設可以每秒數kB(如UART或I2C總線)或每秒數MB(如USB)的速率交流信息;禁用中斷功能幾毫秒便可能導致丟失大量信息。因此,系統需要設計成在修改Flash時允許停止這些串行通信,然后當中斷功能再次啟用時,恢復所有信息。

  雙組Flash實施方案

  雙組Flash意味著同一器件中有兩個不同的Flash塊。本文從這里開始以飛思卡爾MC9S08MM128 MCU為例進行闡述。該器件擁有128kB的Flash存儲器,分成兩個64kB的陣列。上一章解釋過在寫入或擦除Flash的這段時間,整個Flash塊都不能讀取。提到有兩種替代方法來執行Flash操作:CPU拖延或從RAM運行。同一邏輯適用于一個雙組Flash,但是由于現在有兩個不同的組,因此代碼可以在Flash A中運行以寫入或擦除Flash B,反之亦然。

        當使用非易失性存儲器來存儲變量時,雙組Flash可以設計為將所有非易失性變量都存儲在一個Flash組中,即:一個塊用作偽EEPROM,代碼在另一個組中。例如,所有數據都將存儲在Flash B中,寫入和擦除存儲器的代碼將在Flash A中,以便更加高效地使用RAM和堆棧。在雙組Flash MCU中也不需要CPU 拖延。系統可以保持運行,因為只有一半的存儲器需要高電壓,另一半可以繼續正常的代碼執行。當構建應用來避免阻塞代碼時,這尤為重要(代碼的各部分,要么停止CPU,或在環路等待事件發生以繼續代碼執行,在這種情況下等待Flash命令完成)。

  將數據保存在Flash B中的另一個好處是不需要禁用中斷功能,因為中斷矢量表是Flash A的一部分。這意味著所有串行通信、模數轉換、定時器等都可以保持運行,啟用中斷功能,代碼可以在命令執行的過程中進行跳轉,提取中斷矢量,執行中斷服務例程,并返回,以驗證Flash操作是否完成,以及是否需要啟動新操作。

  另外一個特點是向執行整個設計遠程升級的應用添加故障容忍功能。可以將新項目版本保存在一個Flash組中,在另一個組中作為備份進行保存。一旦上傳了新版本并通過了驗證,那么以前的版本便可以擦除。在系統設計級,可以總是使用Flash A在Flash B中寫入新版本,反之亦然。這樣,即使在更新過程中發生了故障,也不會丟失工作版本。

  EEPROM仿真

  使用Flash存儲非易失性信息的一個限制是字節必須處于已擦除狀態(所有位都設為邏輯“1”)才能夠寫入。這意味著擦除操作將所有位都從扇區轉換為“1”,而寫入操作將某些或全部位都改為“0”。這樣產生的問題是,如果一個變量發生了改變,需要進行非易失性備份,那么首先需要擦除字節,但是由于Flash不能逐個字節擦除,因此需要擦除整個扇區。

  執行EEPROM仿真的例程旨在使用Flash而不是單字節寫入和擦除功能來提供EEPROM功能。一般做法是使用需要存儲在Flash中的所有變量創建一個結構;該結構添加一個字段,指示該扇區是否活動(這應該是寫入的最后一個字節,以驗證所有數據是否已經正確寫入)。當需要在Flash中更新某些信息時,復制整個結構。每當字節改變時都進行非易失性更新,或根據定時器持續進行備份作為應用執行的一部分。

  根據應用類型,可能進行某些改變,以減少執行EEPROM仿真或增加系統強勁性所需的Flash容量。例如,如果使用一個Flash扇區,非易失性結構將寫入同一扇區,只要適合扇區大小,能寫入多少次就寫多少次(因此,建議結構大小適合扇區內的準確次數,通常是兩種大小的功率)。在Flash扇區填滿后,代碼需要擦除扇區并重新開始。這種方法的好處是只使用一個Flash扇區,限制是如果在扇區擦除步驟發生斷電,那么所有信息都會丟失。另外,Flash耐用性也將加倍。

  另一種方法是使用兩個扇區進行EEPROM仿真。只有在把信息寫入新扇區后才擦除一個扇區,因此在Flash中總是有信息的有效副本,從而更加強韌,能夠確保即使在擦除或寫入過程中發生掉電,信息也不會丟失,還增加了存儲非易失性信息所需的Flash容量。根據應用要求來確定應該使用哪種方法。

  案例研究: 如何在飛思卡爾S08系列中寫入/擦除Flash

  在S08系列中執行寫入或擦除操作的步驟與此類似。如果要獨立進行寫入、突發寫入、擦除或整體擦除,第一步是用一些數據寫入Flash位置(區別在于如果命令是擦除或整體擦除,那么所寫入的數據是沒有影響的)。之后,寄存器FCMD(Flash命令)需要寫入要執行的操作,然后在Flash狀態寄存器中寫入一個位來下發命令,代碼需要檢查下發的Flash命令是否會產生錯誤。在單組Flash部署中,代碼需要等待設置Flash命令完成標志,以便它可以返回正常的代碼執行,對于雙組Flash,在檢查了下發Flash命令沒有導致錯誤產生后將立即返回執行其它代碼部分。建議在下發新命令前,代碼總是檢查以前的命令是否已經完成,以避免潛在的問題。

  下面的文本框是關于如何為MCU部署Flash命令的代碼示例。

  #define Flash_Busy() FSTAT_FCCF

  #define EraseSectorFlashB(Addr) FlashB_Command(Addr, 0xff, FLASH_ERASE_CMD)

  #define WriteByteFlashB(Addr, Data) FlashB_Command(Addr, Data, FLASH_PROGRAM_CMD)

  void main(void)

  {

  unsigned char FlashErasedAddress = 0x4000;

  unsigned char FlashWrittenAddress = 0x4000;

  unsigned char FlashWrittenData = 'A';

  if (!Flash_Busy())

  {

  EraseSectorFlashB(FlashErasedAddress);

  }

  if (!Flash_Busy())

  {

  WriteByteFlashB(FlashWrittenAddress, FlashWrittenData);

  }

  對于雙組Flash:

  本節顯示了Flash B部分主要文件調用擦除和單字節寫入例程的典型實施方案。宏定義允許為兩種目的使用相同的例程,因為這兩種操作非常相似。下面是一種推薦的寫入/擦除Flash例程的部署方法。

  #pragma CODE_SEG FLASH_A

  unsigned char FlashB_Command(unsigned int FlashAddress, unsigned char FlashData, unsigned char Command)

  {

  /* Write Data into Flash*/

  (*(volatile unsigned char *)(FlashAddress)) = FlashData;

  /* Write Command */

  FCMD = Command;

  /* Launch command by setting FSTAT.FCBEF to 1 */

  FSTAT = 0x80;

  /* Wait at least 4 cycles to read the Error Flags */

  _asm NOP;

  _asm NOP;

  _asm NOP;

  _asm NOP;

  /* Check if Flash Access Error or Protection Violation Error are Set */

  if (FSTAT & (FSTAT_FACCERR_MASK|FSTAT_FPVIOL_MASK))

  {

  /* If so, finish the function returning FLASH_ERROR to indicate error */

  FlashClearErrorFlags();

  return (FLASH_ERROR);

  }

  /* Return FLASH_OK to indicate that the function executed Ok */

  return (FLASH_OK);

  }

  #pragma CODE_SEG DEFAULT

  所有寄存器和位名稱對應于飛思卡爾S08系列MCU中現有的名稱。

  結論

  飛思卡爾雙組Flash是一個簡單的想法,通過增強性能、避免CPU拖延情況、在代碼執行過程中保持中斷服務例程、不需要把例程復制到RAM,簡化了應用設計。有了這些功能,可以更容易地設計和部署在代碼執行過程中需要寫入或擦除Flash存儲器的最終應用。

  引導程序或EEPROM仿真等應用通過考慮正確的存儲器分配并消除一些限制(如在Flash例程執行過程中停止通信外設),利用該功能,從而提高效率。

此內容為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>
          在线欧美三区| 亚洲黄色大片| 在线一区日本视频| 91久久在线视频| 欧美夫妇交换俱乐部在线观看| 久久精品国产精品亚洲| 欧美亚洲专区| 鲁大师成人一区二区三区| 欧美在线你懂的| 亚洲国产女人aaa毛片在线| 狠狠色狠狠色综合日日小说| 欧美精品在线观看播放| 欧美怡红院视频| 国产一二三精品| 日韩亚洲视频在线| 欧美精品日韩一区| 激情伊人五月天久久综合| 免费不卡在线观看av| 性欧美8khd高清极品| 亚洲美女视频网| 99riav1国产精品视频| 国产精品国产精品国产专区不蜜| 欧美黄免费看| 久久久精品2019中文字幕神马| 99re热这里只有精品免费视频| 精品88久久久久88久久久| 亚洲激情av在线| 在线观看国产精品网站| 欧美网站大全在线观看| 欧美激情第一页xxx| 欧美mv日韩mv国产网站| 一区二区三区日韩欧美精品| 麻豆国产va免费精品高清在线| 欧美视频在线播放| 日韩一级裸体免费视频| 国产精品狠色婷| 国内外成人免费激情在线视频网站| 国产精品你懂得| 国产精品综合久久久| 黄色日韩网站视频| 女人香蕉久久**毛片精品| 亚洲精品视频一区二区三区| 久久亚洲一区二区| 99在线视频精品| 免费在线视频一区| 黄色成人在线观看| 亚洲欧美色一区| 一区二区三区产品免费精品久久75| 麻豆久久婷婷| 久久国产视频网站| 国产精品亚洲欧美| 久久人人97超碰国产公开结果| 影音先锋中文字幕一区二区| 国产精品igao视频网网址不卡日韩| 美女图片一区二区| 久久久久一区二区三区四区| 欧美精品在线看| 极品尤物av久久免费看| 欧美国产日韩精品| 欧美亚洲视频在线观看| 伊人久久大香线蕉av超碰演员| 伊人久久成人| 欧美日韩第一区日日骚| 国产精品卡一卡二| 亚洲欧美一区二区三区在线| 久久一综合视频| 正在播放欧美一区| 性欧美1819sex性高清| 美国十次了思思久久精品导航| 欧美黄色小视频| 麻豆91精品| 欧美三级在线播放| 亚洲一区二区影院| 亚洲精品视频在线观看免费| 亚洲欧美日韩国产一区二区三区| 国产精品久久| 国产精品美女久久久浪潮软件| 久久综合伊人77777尤物| 男女激情久久| 亚洲欧美视频一区二区三区| 国产日韩精品一区| 国产精品一区久久| 亚洲福利精品| 亚洲国产日韩欧美综合久久| 在线日韩av| 欧美亚洲在线播放| 久久久精品国产免费观看同学| 玖玖玖免费嫩草在线影院一区| 国产资源精品在线观看| 亚洲一区二区三区久久| 欧美精品videossex性护士| 国产精品久久夜| 亚洲巨乳在线| 午夜精品久久久久久久99水蜜桃| 国产亚洲精品久久久久动| 欧美福利视频一区| 国产午夜一区二区三区| 一区二区福利| 99av国产精品欲麻豆| 亚洲乱码国产乱码精品精98午夜| 亚洲二区在线| 久久久久女教师免费一区| 亚洲一卡二卡三卡四卡五卡| 亚洲精品视频一区二区三区| 欧美午夜国产| 国产精品海角社区在线观看| 性久久久久久久久久久久| 亚洲欧美中文日韩在线| 国产精品毛片a∨一区二区三区|国| 久久久久久69| 亚洲男女自偷自拍图片另类| 久久免费偷拍视频| 精品96久久久久久中文字幕无| 国产午夜精品福利| 欧美视频一区二区三区在线观看| 国产亚洲欧美另类一区二区三区| 99视频精品免费观看| 欧美精品99| 免费观看成人鲁鲁鲁鲁鲁视频| 国产精品女主播在线观看| 国产精品xxxxx| 欧美日韩黄色大片| 亚洲第一福利视频| 欧美国产日韩免费| 久久视频在线看| 91久久精品国产91性色tv| 欧美日韩一区二区三区高清| 亚洲一区二区在线视频| 国产日韩视频一区二区三区| 欧美.www| 欧美啪啪一区| 老色鬼精品视频在线观看播放| a91a精品视频在线观看| 亚洲激情不卡| 亚洲国产精品久久久久秋霞蜜臀| 欧美三级在线视频| 国产亚洲精品高潮| 久久久噜噜噜久久| 国产精品一区二区三区观看| 国产精品天天摸av网| 国产一区二区三区的电影| 亚洲国产精品t66y| 伊人久久大香线| 国产九色精品成人porny| 欧美国产日韩亚洲一区| 亚洲少妇最新在线视频| 在线看片一区| 狠狠色伊人亚洲综合网站色| 另类尿喷潮videofree| 久久精品视频免费观看| 欧美激情精品久久久久久大尺度| 国产九九精品| 欧美成人xxx| 欲香欲色天天天综合和网| 久久久久国产精品www| 亚洲国产欧美久久| 亚洲国产精品专区久久| 国产精品人人爽人人做我的可爱| 欧美精品一卡二卡| 鲁鲁狠狠狠7777一区二区| 国产亚洲成av人片在线观看桃| 国产伦精品一区| 亚洲欧洲综合另类在线| 亚洲视频免费看| 亚洲欧美日韩国产综合| 伊人久久久大香线蕉综合直播| 欧美高清一区二区| 国产精品高潮视频| 一区二区三区中文在线观看| 亚洲片在线观看| 欧美午夜精品理论片a级按摩| 黄色成人小视频| 国产精品高清一区二区三区| 亚洲国产精品第一区二区| 国产精品国产三级国产普通话蜜臀| 亚洲欧美日本伦理| 欧美高清视频一二三区| 国产精品亚洲片夜色在线| 欧美性jizz18性欧美| 亚洲第一精品福利| 久久婷婷人人澡人人喊人人爽| 在线日韩欧美视频| 亚洲欧美国产精品专区久久| 久久精品视频免费播放| 欧美午夜不卡影院在线观看完整版免费| 91久久国产自产拍夜夜嗨| 欧美日韩免费看| 亚洲一区在线看| 欧美激情视频一区二区三区免费| 久久精品亚洲乱码伦伦中文| 亚洲欧美日韩精品综合在线观看| 欧美一区二区三区视频在线观看| 最近中文字幕日韩精品| 欧美sm重口味系列视频在线观看| 久久婷婷人人澡人人喊人人爽| 尤物九九久久国产精品的特点| 亚洲福利精品| 国产喷白浆一区二区三区| 亚洲免费观看在线观看| 亚洲精品视频啊美女在线直播| 日韩视频第一页| 亚洲一区二区免费视频| 国产欧美精品va在线观看| 一区二区三区欧美亚洲| 亚洲激情在线观看| 国产精品成人免费视频| 久久久久久电影| 国产免费亚洲高清| 国产在线拍偷自揄拍精品| 国产精品久久夜| 欧美理论电影在线观看| 亚洲激情在线观看| 亚洲国产综合视频在线观看| 欧美裸体一区二区三区| 久久久久久久综合日本| 一区二区三区成人精品| 久久精品女人的天堂av| 国产性色一区二区| 亚洲午夜羞羞片| 国产精品日产欧美久久久久| 日韩午夜精品视频| 国内精品视频在线观看| 欧美国产三级| 亚洲视频专区在线| 国产精品黄色| 国产一区二区三区无遮挡| 国产精品系列在线| 欧美伊人久久久久久久久影院| 国产精品日韩精品| 国产精品专区一| 国产麻豆成人精品| 亚洲在线观看| 欧美视频福利| 欧美日韩视频在线观看一区二区三区| 欧美日本亚洲视频| 欧美午夜精品久久久久久孕妇| 在线一区观看| 欧美资源在线| 久久精品久久99精品久久| 欧美日韩在线一区| 欧美一区二区三区另类| 欧美黑人一区二区三区| 精品不卡在线| 国内精品久久久久影院 日本资源| 午夜精品久久久99热福利| 91久久精品一区二区三区| 亚洲精品免费电影| 伊人久久亚洲美女图片| 亚洲激情自拍| 亚洲福利一区| 国产免费成人在线视频| 亚洲激情一区二区三区| 国产一区二区三区成人欧美日韩在线观看| 国内精品伊人久久久久av一坑| 欧美日韩在线视频首页| 欧美激情bt| 国产区欧美区日韩区| 欧美日韩亚洲三区| 久久精品国产精品| 99视频+国产日韩欧美| 激情久久一区| 麻豆国产精品va在线观看不卡| 欧美福利视频| 欧美性猛交视频| 麻豆国产精品777777在线| 欧美丝袜一区二区三区| 久久成人免费网| 黄色成人在线| 国产精品欧美一区二区三区奶水| 激情一区二区三区| 欧美日韩直播| 久久精品一本久久99精品| 精品av久久707| 亚洲免费视频网站| 亚洲精选一区| 今天的高清视频免费播放成人| 欧美精品性视频| 午夜国产精品视频免费体验区| 玖玖玖国产精品| 国产精品视频免费在线观看| 免费视频一区二区三区在线观看| 一区二区三区欧美日韩| 国产精品日产欧美久久久久| 欧美一区国产在线| 国内成人精品2018免费看| 欧美日韩一区二区三区高清| 激情久久综合| 欧美日韩中文字幕综合视频| 欧美精品一区在线播放| 欧美日韩亚洲一区二区三区在线| 国产精品福利av| 国产精品成人免费| 亚洲深夜福利网站| 久久久精品2019中文字幕神马| 亚洲精品孕妇| 亚洲精选视频免费看| 日韩午夜免费| 国产婷婷色一区二区三区在线| 欧美日本精品在线| 韩国av一区| 亚洲香蕉网站| 欧美+亚洲+精品+三区| 欧美国产在线观看| 免费在线亚洲| 亚洲观看高清完整版在线观看| 久久久国产精品亚洲一区| 国产午夜亚洲精品羞羞网站| 欧美大片在线观看一区| 在线免费一区三区| 国产偷自视频区视频一区二区| 亚洲电影在线看| 欧美日韩成人精品| 欧美黄在线观看| 99视频在线精品国自产拍免费观看| 99精品欧美一区二区三区综合在线| 欧美激情一区二区三区高清视频| 欧美亚洲尤物久久| 蜜桃av久久久亚洲精品| 奶水喷射视频一区| 国产精品青草久久久久福利99| 午夜国产精品视频免费体验区| 日韩视频亚洲视频| 欧美va亚洲va香蕉在线| 女人色偷偷aa久久天堂| 国产精品一区久久久久| 国产主播一区| 欧美激情免费在线| 国产精品亚洲人在线观看|