<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)內(nèi)的Flash與EEPROM作用及區(qū)別

          單片機(jī)內(nèi)的Flash與EEPROM作用及區(qū)別

          作者: 時(shí)間:2016-11-25 來(lái)源:網(wǎng)絡(luò) 收藏
          最近對(duì)各種單片機(jī)狂熱,近期在看AVR單片機(jī),發(fā)現(xiàn)單片機(jī)內(nèi)除了FALSH,和SRAM還有片內(nèi)EEPROM這個(gè)東西沒(méi)有遇到過(guò)啊,好像沒(méi)有用啊,一般感覺(jué)都是外接IIC的EEPROM的來(lái)進(jìn)行數(shù)據(jù)的保存。

          查了下總結(jié)下:

          本文引用地址:http://www.ex-cimer.com/article/201611/321347.htm
          flash是用來(lái)放程序的,可以稱(chēng)之為程序存儲(chǔ)器,可以擦出寫(xiě)入但是基本都是整個(gè)扇區(qū)進(jìn)行的.
          一般來(lái)說(shuō) 單片機(jī)里的flash都用于存放運(yùn)行代碼,在運(yùn)行過(guò)程中不能改;

          EEPROM是用來(lái)保存用戶(hù)數(shù)據(jù),運(yùn)行過(guò)程中可以改變,比如一個(gè)時(shí)鐘的鬧鈴時(shí)間初始化設(shè)定為12:00,后來(lái)在運(yùn)行中改為6:00,這是保存在EEPROM里,不怕掉電,就算重新上電也不需要重新調(diào)整到6:00
          下面是網(wǎng)上詳細(xì)的說(shuō)法,感覺(jué)不錯(cuò):
          FLASH 和EEPROM的最大區(qū)別是FLASH按扇區(qū)操作,EEPROM則按字節(jié)操作,二者尋址方法不同,存儲(chǔ)單元的結(jié)構(gòu)也不同,F(xiàn)LASH的電路結(jié)構(gòu)較簡(jiǎn)單,同樣容量占芯片面積較小,成本自然比EEPROM低,因而適合用作程序存儲(chǔ)器,EEPROM則更多的用作非易失的數(shù)據(jù)存儲(chǔ)器。當(dāng)然用FLASH做數(shù)據(jù)存儲(chǔ)器也行,但操作比EEPROM麻煩的多,所以更“人性化”的MCU設(shè)計(jì)會(huì)集成FLASH和EEPROM兩種非易失性存儲(chǔ)器,而廉價(jià)型設(shè)計(jì)往往只有 FLASH,早期可電擦寫(xiě)型MCU則都是EEPRM結(jié)構(gòu),現(xiàn)在已基本上停產(chǎn)了。
          在芯片的內(nèi)電路中,F(xiàn)LASH和EEPROM不僅電路不同,地址空間也不同,操作方法和指令自然也不同,不論馮諾伊曼結(jié)構(gòu)還是哈佛結(jié)構(gòu)都是這樣。技術(shù)上,程序存儲(chǔ)器和非易失數(shù)據(jù)存儲(chǔ)器都可以只用FALSH結(jié)構(gòu)或EEPROM結(jié)構(gòu),甚至可以用“變通”的技術(shù)手段在程序存儲(chǔ)區(qū)模擬“數(shù)據(jù)存儲(chǔ)區(qū)”,但就算如此,概念上二者依然不同,這是基本常識(shí)問(wèn)題。
          EEPROM:電可擦除可編程只讀存儲(chǔ)器,Flash的操作特性完全符合EEPROM的定義,屬EEPROM無(wú)疑,首款Flash推出時(shí)其數(shù)據(jù)手冊(cè)上也清楚的標(biāo)明是EEPROM,現(xiàn)在的多數(shù)Flash手冊(cè)上也是這么標(biāo)明的,二者的關(guān)系是“白馬”和“馬”。至于為什么業(yè)界要區(qū)分二者,主要的原因是 Flash EEPROM的操作方法和傳統(tǒng)EEPROM截然不同,次要的原因是為了語(yǔ)言的簡(jiǎn)練,非正式文件和口語(yǔ)中Flash EEPROM就簡(jiǎn)稱(chēng)為Flash,這里要強(qiáng)調(diào)的是白馬的“白”屬性而非其“馬”屬性以區(qū)別Flash和傳統(tǒng)EEPROM。
          Flash的特點(diǎn)是結(jié)構(gòu)簡(jiǎn)單,同樣工藝和同樣晶元面積下可以得到更高容量且大數(shù)據(jù)量下的操作速度更快,但缺點(diǎn)是操作過(guò)程麻煩,特別是在小數(shù)據(jù)量反復(fù)重寫(xiě)時(shí),所以在MCU中Flash結(jié)構(gòu)適于不需頻繁改寫(xiě)的程序存儲(chǔ)器。
          很多應(yīng)用中,需要頻繁的改寫(xiě)某些小量數(shù)據(jù)且需掉電非易失,傳統(tǒng)結(jié)構(gòu)的EEPROM在此非常適合,所以很多MCU內(nèi)部設(shè)計(jì)了兩種EEPROM結(jié)構(gòu),F(xiàn)LASH的和傳統(tǒng)的以期獲得成本和功能的均衡,這極大的方便了使用者。隨著ISP、IAP的流行,特別是在程序存儲(chǔ)地址空間和數(shù)據(jù)存儲(chǔ)地址空間重疊的MCU系中,現(xiàn)在越來(lái)越多的MCU生產(chǎn)商用支持IAP的程序存儲(chǔ)器來(lái)模擬EEPROM對(duì)應(yīng)的數(shù)據(jù)存儲(chǔ)器,這是低成本下實(shí)現(xiàn)非易失數(shù)據(jù)存儲(chǔ)器的一種變通方法。為在商業(yè)宣傳上取得和雙EEPROM工藝的“等效”性,不少采用Flash程序存儲(chǔ)器“模擬”(注意,技術(shù)概念上并非真正的模擬)EEPROM數(shù)據(jù)存儲(chǔ)器的廠家紛紛宣稱(chēng)其產(chǎn)品是帶EEPROM的,嚴(yán)格說(shuō),這是非常不嚴(yán)謹(jǐn)?shù)?,但商人有商人的目的和方法,用Flash“模擬”EEPROM可以獲取更大商業(yè)利益,所以在事實(shí)上,技術(shù)概念混淆的始作俑者正是他們。
          從成本上講,用Flash“模擬”EEPROM是合算的,反之不會(huì)有人干,用EEPROM模擬Flash是怎么回事呢?這可能出在某些程序存儲(chǔ)空間和數(shù)據(jù)存儲(chǔ)空間連續(xù)的MCU上。這類(lèi)MCU中特別是存儲(chǔ)容量不大的低端MCU依然采用EEPROM作為非易失存儲(chǔ)器,這在成本上反而比采用Flash和傳統(tǒng)EEPROM雙工藝的設(shè)計(jì)更低,但這種現(xiàn)象僅僅限于小容量前提下。因Flash工藝的流行,現(xiàn)在很多商人和不夠嚴(yán)謹(jǐn)?shù)募夹g(shù)人員將程序存儲(chǔ)器稱(chēng)為Flash,對(duì)于那些僅采用傳統(tǒng)EEPROM工藝的MCU而言,他們不求甚解,故而錯(cuò)誤的將EEPROM程序存儲(chǔ)器稱(chēng)為“ 模擬Flash”,根本的原因是他們未理解Flash只是一種存儲(chǔ)器結(jié)構(gòu)而非存儲(chǔ)器的用途,錯(cuò)誤的前提自然導(dǎo)致錯(cuò)誤的結(jié)論。商業(yè)上講,用EEPROM模擬 Flash是不會(huì)有人真去做的愚蠢行為,這違背商業(yè)追求最大利益的原則,技術(shù)上也不可行,而對(duì)于技術(shù)人員而言。本質(zhì)的問(wèn)題是Flash是一種存儲(chǔ)器類(lèi)型而非MCU中的程序存儲(chǔ)器,即使MCU的程序存儲(chǔ)器用的是Flash,但其逆命題不成立。


          關(guān)鍵詞: 單片機(jī)FlashEEPRO

          評(píng)論


          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();