第09章Flash存儲(chǔ)器在線編程PPT優(yōu)秀課件_第1頁
第09章Flash存儲(chǔ)器在線編程PPT優(yōu)秀課件_第2頁
第09章Flash存儲(chǔ)器在線編程PPT優(yōu)秀課件_第3頁
第09章Flash存儲(chǔ)器在線編程PPT優(yōu)秀課件_第4頁
第09章Flash存儲(chǔ)器在線編程PPT優(yōu)秀課件_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第9章 Flash存儲(chǔ)器在線編程,主要內(nèi)容,9.1 Flash存儲(chǔ)器概述 9.2 AW60的Flash存儲(chǔ)器編程方法 9.3 AW60的Flash在線編程C語言實(shí)例 9.4 S08 Flash存儲(chǔ)器的保護(hù)特性和安全性,9.1 Flash存儲(chǔ)器概述,9.1.1 Flash存儲(chǔ)器的基本特點(diǎn)與編程模式 Flash存儲(chǔ)器的基本特點(diǎn) 固有不揮發(fā)性 易更新性 成本低、密度高、可靠性好 Flash存儲(chǔ)器的編程模式 從Flash存儲(chǔ)器的基本特點(diǎn)可以看出,在單片機(jī)中,可以利用Flash存儲(chǔ)器固化程序,一般情況下通過編程器來完成,F(xiàn)lash存儲(chǔ)器工作于這種情況,叫監(jiān)控模式(Monitor Mode)或?qū)懭肫髂J剑?/p>

2、這與一般的EPROM、OTP、EEPROM裝入程序的含義相似。另一方面,由于Flash存儲(chǔ)器具有電可擦除功能,因此,在程序運(yùn)行過程中,有可能對(duì)Flash存儲(chǔ)區(qū)的數(shù)據(jù)或程序進(jìn)行更新,F(xiàn)lash存儲(chǔ)器工作于這種情況,叫用戶模式(User Mode)或在線編程模式,9.1.2 S08系列MCU的Flash存儲(chǔ)器,Freescale公司在Flash存儲(chǔ)器技術(shù)相當(dāng)成熟之后才推出了片 內(nèi)帶有Flash存儲(chǔ)器的8位MCU,在應(yīng)用的方便性和可靠性等方面 有其獨(dú)到的特點(diǎn): 編程速度快且可靠性高 S08系列MCU的片內(nèi)Flash存儲(chǔ)器的整體擦除時(shí)間可以控制在5ms以內(nèi),對(duì)單字節(jié)的編程(寫入)時(shí)間也在40ns以內(nèi)。

3、片內(nèi)Flash存儲(chǔ)器的存儲(chǔ)數(shù)據(jù)可以保持10年以上,可擦寫次數(shù)均在1萬次以上 單一電源電壓供電 S08系列MCU通過在片內(nèi)集成的電荷泵,可由單一工作電壓在片內(nèi)產(chǎn)生出編程電壓,這樣就實(shí)現(xiàn)了單一電源供電的在線編程電壓,而不需要為Flash的編程增加額外的編程電壓模塊,同時(shí)也使S08系列MCU兼具了兩種編程模式 支持在線編程 S08系列MCU的片內(nèi)Flash存儲(chǔ)器支持在線編程,允許MCU內(nèi)部運(yùn)行的程序去改寫Flash存儲(chǔ)器的內(nèi)容,這樣就可以代替外部電可擦除存儲(chǔ)芯片,從而減少了外圍部件,增加了嵌入式系統(tǒng)開發(fā)的方便性,9.2 AW60的Flash存儲(chǔ)器編程方法,9.2.1 Flash存儲(chǔ)器編程的基本概念

4、Flash編程的基本操作有兩種: 擦除(Erase):將存儲(chǔ)單元的內(nèi)容由二進(jìn)制的0變成1 寫入(Program):將存儲(chǔ)單元的內(nèi)容由二進(jìn)制的1變成0 擦除操作包括整體擦除和頁擦除。而寫入操作是以字為單位進(jìn)行的。在擦除及寫入過程中一般需要高于電源的電壓。Flash存儲(chǔ)器在片內(nèi)是以頁(Page)和行(Row)為單位組織的,頁的大小始終為行的兩倍。對(duì)Flash存儲(chǔ)器的擦除操作可以進(jìn)行整體擦除也可以僅擦除某一起始地址開始的一頁(512字節(jié)),9.2.2 Flash存儲(chǔ)器的編程寄存器,Flash時(shí)鐘分頻寄存器 FCDIV (Flash Clock Divider RegisterFLCR)的地址是 $1

5、820 D7DIVLD為分頻設(shè)置狀態(tài)標(biāo)志位(Divisor Loaded Status Flag),DIVLD為只讀位 D6PRDIV8為Flash預(yù)分頻設(shè)置位(Prescale Flash Clock by 8) D5D0DIV5DIV0為Flash時(shí)鐘分頻器的分頻因子。 Flash的內(nèi)部工作時(shí)鐘 fFCLK的計(jì)算方法如下: 如果PRDIV8=0,fFCLK=fbus(DIV5:DIV0+1) 如果PRDIV8=1,fFCLK=fbus(8DIV5:DIV0+1),在對(duì)Flash進(jìn)行編程操作時(shí),F(xiàn)lash的內(nèi)部工作時(shí)鐘必須降到150KHz200KHz,擦/寫操作的脈沖是Flash的內(nèi)部工作時(shí)

6、鐘的一個(gè)時(shí)鐘周期,所以擦/寫的時(shí)間相應(yīng)地在6.7s5s。下表出了對(duì)FCDIV寄存器設(shè)置不同的數(shù)值時(shí)對(duì)Flash擦寫操作的影響,Flash選項(xiàng)寄存器 Flash選項(xiàng)寄存器(Flash Options RegisterFOPT和NVOPT)。MCU復(fù)位時(shí),F(xiàn)lash中的非易失性的NVOPT值被賦給FOPT寄存器,F(xiàn)OPT可以讀,但寫操作是無效的。要改變FOPT寄存器的值,需要對(duì)Flash中NVOPT位擦除并重新寫入新的數(shù)值。FOPT的地址是$1821 D7KEYEN為后門鎖機(jī)構(gòu)允許位(Backdoor Key Mechanism Enable) D6FNORED為矢量重定向禁止位(Vector R

7、edirection Disable) D1D0位SEC01SEC00為安全狀態(tài)碼,Flash配置寄存器 FCNFG(Flash Configure RegisterFCNFG)的地址是$1823 D5KEYACC為寫訪問鑰匙允許位(Enable Writing of Access Key)。KEYACC=1時(shí),表示寫B(tài)VBACKKEY($FFB0-$FFB7)被認(rèn)為是進(jìn)行密碼比較;KEYACC=0時(shí),表示寫B(tài)VBACKKEY($FFB0-$FFB7)被解釋為Flash擦寫命令的開始,Flash保護(hù)寄存器 Flash保護(hù)寄存器(Flash Protect RegisterFPROT和NVPRO

8、T)的地址是$1824 D7D1FPS6FPS0為Flash保護(hù)區(qū)域設(shè)置。FPDIS=0時(shí),這7位決定了未保護(hù)區(qū)域的結(jié)束地址 D0FPDIS為Flash保護(hù)設(shè)置位(Flash Protection Disable)。FPDIS=1時(shí),F(xiàn)lash不進(jìn)行保護(hù);FPDIS=0時(shí),F(xiàn)lash保護(hù)FPS6:FPS0所設(shè)置的區(qū)域,Flash狀態(tài)寄存器 FSTAT(Flash Status RegisterFSTAT)的地址是$1825 D7FCBEF為Flash命令緩沖區(qū)空標(biāo)志位(Flash Command Buffer Empty Flag) D6FCCF為Flash命令完成標(biāo)志位(Flash Comm

9、and Complete Flag) D5FPVIO為侵害保護(hù)標(biāo)志位(Protection Violation Flag) D4FACCER為訪問出錯(cuò)標(biāo)志位(Access Error Flag) D2FBLANK為Flash空白標(biāo)志位(Flash Verified All Blank Flag),Flash命令寄存器 FCMD(Flash Command RegisterFCMD)的地址是$1826 D7D0對(duì)Flash進(jìn)行訪問的命令字節(jié)。表9-2列出了對(duì)Flash訪問的命令字節(jié),9.2.3 Flash存儲(chǔ)器的編程過程,Flash命令的執(zhí)行步驟 向Flash地址中寫入一個(gè)數(shù)據(jù) 向Flash命令

10、寄存器FCMD中寫入需要執(zhí)行的命令 執(zhí)行命令 Flash命令的執(zhí)行流程 看下面的 兩個(gè)流程圖,AW60 Flash編程例程圖,AW60 Flash批量寫入流程圖,Flash命令出錯(cuò)的狀況 在執(zhí)行以下操作時(shí),會(huì)導(dǎo)致出錯(cuò),F(xiàn)ACCERR自動(dòng)置1 在向Flash地址寫入信息前沒有進(jìn)行FCDIV寄存器設(shè)置 在向Flash地址寫入信息前FCBEF沒有置1 在執(zhí)行命令前,執(zhí)行兩次向Flash地址寫入信息操作 在向Flash地址寫入信息后,設(shè)置除FCMD外的其他Flash控制寄存器 向FCMD中寫入表9-2以外的命令字 向FCMD中寫入命令字后,試圖讀寫除FSTAT外的寄存器 在執(zhí)行命令時(shí),MCU進(jìn)入STO

11、P模式 MCU處于保密狀態(tài)時(shí),使用背景調(diào)試接口進(jìn)行頁擦除或?qū)慒lash操作 向FCBEF位寫0取消一個(gè)命令的執(zhí)行,9.3 AW60的Flash在線編程C語言實(shí)例,9.3.1 Flash存儲(chǔ)器的擦除及寫入C語言子程序 由于AW60內(nèi)部的監(jiān)控ROM中沒有固化Flash編程子程序,要在運(yùn)行中能對(duì) Flash進(jìn)行在線編程,初始裝入的用戶程序,必須包含對(duì)Flash的擦除及寫入子程序 擦除和寫入流程的一些公共操作 擦除和寫入操作的代碼必須放在內(nèi)存中執(zhí)行編譯完后對(duì)應(yīng)機(jī)器碼字節(jié)保存到下表中的volatile unsigned char PGM57的數(shù)組中。這樣實(shí)際使用時(shí)就無需進(jìn)寫入子程序行內(nèi)存的拷貝,就可以實(shí)

12、現(xiàn)擦除寫入操作 頁擦除子程序Flash_PageErase 首先根據(jù)頁號(hào)計(jì)算出頁首地址,然后將Flash執(zhí)行命令更改為擦除命令0 x40,調(diào)用并執(zhí)行擦除代碼 寫入程序 首先根據(jù)頁號(hào)和頁內(nèi)偏移計(jì)算出寫入首地址,然后將Flash執(zhí)行命令更改為擦除命令0 x20,逐個(gè)字節(jié)進(jìn)行寫入直至完成,擦除與寫入子程序編程要點(diǎn)說明 RAM中有57字節(jié)的空間存放擦出寫入機(jī)器碼,使用內(nèi)存時(shí)不要忘記計(jì)算 一次擦除后未被寫入過的區(qū)域可以再次調(diào)用寫入子程序?qū)懭耄珜懭脒^的區(qū)域,未經(jīng)擦除不能重寫 由于擦除是每次擦除一頁(512字節(jié)),所以數(shù)據(jù)應(yīng)合理安排,避免誤擦 頁首地址的定義須遵照保護(hù)寄存器FPROT定義的規(guī)則 對(duì)FPRO

13、T設(shè)置的保護(hù)塊進(jìn)行的在線編程,是無效的,9.3.2 Flash存儲(chǔ)器在線編程擦寫測(cè)試工程,測(cè)試Flash的程序運(yùn)行界面,串口調(diào)試工具操作Flash的命令格式,9.4 S08 Flash存儲(chǔ)器的保護(hù)特性和安全性,9.4.1 S08 Flash存儲(chǔ)器的保護(hù)特性 由于Flash是非易失性存儲(chǔ)器,所以編程人員一般會(huì)將一些重要參數(shù)或數(shù)據(jù)存于Flash。為了防止對(duì)這些重要數(shù)據(jù)區(qū)的誤擦寫,S08芯片提供了對(duì)Flash的保護(hù)機(jī)制。如果一個(gè)Flash區(qū)域被保護(hù),那么是不能對(duì)這塊區(qū)域進(jìn)行任何擦寫的。 9.4.2 S08 Flash存儲(chǔ)器的安全性 設(shè)置MCU為保密狀態(tài) 為了防止Flash中的程序被非法讀 出,就要將

14、MCU設(shè)置為保密狀態(tài),下 面提供兩種加密Flash方法,安全狀態(tài),方法一 通過修改文件isr.c文件中的安全配置域(即修改FOPT寄存器,地址0 xFFBF的值和密鑰地址0 xFFB0 0 xFFB7的值)實(shí)現(xiàn)加密。例如,若要設(shè)置密碼0 x3132333435363738,則只要將這8字節(jié)數(shù)據(jù)依次寫到地址0 xFFB00 xFFB7處即可,該密碼即為字符串“12345678” 方法二 在程序運(yùn)行中,通過調(diào)用自定義函數(shù)Flash_Secure修改Flash相關(guān)地址處的內(nèi)容來加密Flash。通過修改NVOPT地址的內(nèi)容,復(fù)位后,該寄存器的值將自動(dòng)載入FOPT中,解除MCU的保密狀態(tài) 方法一:通過將

15、寫入器的BDM接口,對(duì)已經(jīng)加密的芯片進(jìn)行整體擦除 方法二:在芯片中駐留擦除密碼或擦除Flash的操作接口,通過調(diào)用 Flash_KEY_Match函數(shù)實(shí)現(xiàn) 用戶可以選擇一種“后門”機(jī)制,假如寄存器NVOPT/FOPT的KEYEN位為0 時(shí),后門機(jī)制無效,但是如果KEYEN位為1時(shí),用戶按照如下的方法取消 MCU的保密狀態(tài): 將FCNFG的KEYACC位置1。 向NVBACKKEYNVBACKKEY+7的位置(Flash中$FFB0$FFB7)依次寫入8個(gè)字節(jié),由于第(1)步的操作,MCU會(huì)將該寫入操作理解為是密碼比較操作,這8個(gè)字節(jié)被看作是后門的鑰匙。 將FCNFG的KEYACC位置0,如果用戶寫入的8個(gè)字節(jié)和NVBACKKEYNVBACKKEY+7的位置的8個(gè)字節(jié)是匹配的,MCU會(huì)將SEC01:SEC0

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論