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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > C8051F35X單片機(jī)內(nèi)部Flash存儲(chǔ)器的擦寫方法

          C8051F35X單片機(jī)內(nèi)部Flash存儲(chǔ)器的擦寫方法

          作者: 時(shí)間:2010-04-14 來源:網(wǎng)絡(luò) 收藏

          2 的鎖定與解鎖
          操作之前,必須按順序向鎖定和關(guān)鍵碼寄存器(FLKEY)寫入正確的關(guān)鍵碼,該關(guān)鍵碼禁止對知識(shí)產(chǎn)權(quán)信息(以程序或常數(shù)形式存儲(chǔ)在Flash中)進(jìn)行未經(jīng)授權(quán)訪問或防止用戶無意修改程序代碼以及因系統(tǒng)條件異常導(dǎo)致代碼改變。寫關(guān)鍵碼時(shí)必須按順序?qū)?,否則Flash寫入或擦除操作被禁止,直到下一次系統(tǒng)復(fù)位。存儲(chǔ)在Flash用戶空間的最后一個(gè)字節(jié)的安全鎖定字節(jié)保護(hù)Flash,使其不被非保護(hù)代碼或通過硬件接口讀寫或擦除。使用安全鎖定字節(jié)時(shí)有以下關(guān)鍵點(diǎn):1)將Flash安全字節(jié)中的位設(shè)置為0,保護(hù)Flash不通過JTAG接口被訪問;2)采用軟件設(shè)置一個(gè)軟件讀訪問限制,保護(hù)存儲(chǔ)器不被讀?。?)已被軟件訪問保護(hù)的Flash存儲(chǔ)器也應(yīng)用Flash安全字節(jié)進(jìn)行保護(hù)。使其不通過JTAG接口訪問;4)在保護(hù)Flash時(shí),包含F(xiàn)lash安全字節(jié)的Flash頁也應(yīng)保護(hù);5)如果最終用戶無需訪問Flash,可通過簡單鎖定整個(gè)Flash存儲(chǔ)器保護(hù)其不通過JTAG訪問。

          3 Flash數(shù)據(jù)擦除
          采用軟件MOVX指令對Flash存儲(chǔ)器編程,在使用MOVX指令前,先允許Flash寫操作,其過程為:1)將程序存儲(chǔ)寫允許位PSWE(PSCTL.0)設(shè)置為邏輯“1”,這將使MOVX操作指向目標(biāo)Flash存儲(chǔ)器;2)按順序向Flash鎖定寄存器(FLKEY)寫入Flash關(guān)鍵碼,PSWE位將保持置位狀態(tài),直到被軟件清除。
          在采用軟件修改Flash內(nèi)容前,PSWE必須置為邏輯“l(fā)”;而在軟件擦除Flash存儲(chǔ)器前,PSWE位和PSEE位都必須置為邏輯“1”。寫入Flash存儲(chǔ)器操作可清除數(shù)據(jù)位,但不能使數(shù)據(jù)位置“1”,只有擦除操作能將Flash中的數(shù)據(jù)位置為“l(fā)”。所以在寫入新值前,必須先擦除待編程地址。Flash存儲(chǔ)器是以512字節(jié)的扇區(qū)為單位構(gòu)成的,一次擦除操作將擦除整個(gè)扇區(qū)(將扇區(qū)內(nèi)的所有字節(jié)置為OXFF)。
          擦除一個(gè)扇區(qū)的步驟如下:1)禁止中斷;2)置“l(fā)”程序存儲(chǔ)器擦除允許位(PSCTL中的PSEE),以允許Flash扇區(qū)移除:3)置“1”程序存儲(chǔ)器寫允許位(PSCTL中的PSWE),允許Flash寫入;4)向FLKEY寫第1個(gè)關(guān)鍵碼:0XA5;5)向FLKEY寫第2個(gè)關(guān)鍵碼:0XFl;6)用MOVx指令向待擦除頁內(nèi)的任何一個(gè)地址寫入1個(gè)數(shù)據(jù)字節(jié);7)清除PSWE和PSEE位;8)重新允許中斷。

          4 Flash數(shù)據(jù)寫入
          Flash存儲(chǔ)器可一次寫1個(gè)字節(jié),也可一次寫1組字節(jié),寄存器PFEOCN中的FLBWE位為一次Flash寫操作可寫入1個(gè)或2個(gè)字節(jié)。當(dāng)FLBWE清零時(shí),每次Flash寫操作寫入1個(gè)字節(jié);當(dāng)FLBWE位置為“1”時(shí),每次Flash寫操作寫入2個(gè)字節(jié)(塊寫)。塊寫時(shí)間與單字節(jié)寫的時(shí)間相同,在向Flash存儲(chǔ)器寫入大量數(shù)據(jù)時(shí)可節(jié)省時(shí)間。在單字節(jié)寫Flash時(shí),分別寫入字節(jié)數(shù)據(jù),每個(gè)MOVX寫指令執(zhí)行一次Flash寫操作。C805lF35X的Flash存儲(chǔ)器寫入程序代碼如下:


          5 Flash數(shù)據(jù)讀取
          由于Flash讀操作采用MOVC指令實(shí)現(xiàn),因此用于讀操作的Flash指針必須是CODE類型。由于Flash寫操作是用MOVX指令實(shí)現(xiàn)的,所以寫入或擦除操作的Flash指針必須是XDATA類型。對于的Flash存儲(chǔ)器讀取數(shù)據(jù)程序代碼如下:

          存儲(chǔ)器相關(guān)文章:存儲(chǔ)器原理




          評論


          相關(guān)推薦

          技術(shù)專區(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); })();