新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > Flash Memory作為數(shù)據(jù)存儲器在E5中的應(yīng)用

Flash Memory作為數(shù)據(jù)存儲器在E5中的應(yīng)用

作者: 時間:2009-04-01 來源:網(wǎng)絡(luò) 收藏

在實(shí)際中,F(xiàn)astChip自動將 CSL存放在FLASH的SA12,如果這部分需要占用的空間超過64KByte,則向后繼續(xù)占用SA13,并依此類推;其余SA0~SA11程序代碼存放區(qū)。實(shí)際上程序代碼所需要的存儲空間并不是總需要那么大,多數(shù)情況下甚至少于64KByte。因此我們可以將FLASH中的部分區(qū)域劃做存儲,用于保存需要在掉電或硬件復(fù)位后可再恢復(fù)的數(shù)據(jù)。

3. FLASH 做DATA MEMORY的說明
使用FLASH中的部分區(qū)域作數(shù)據(jù)存儲,必然涉及到數(shù)據(jù)的改寫。對FLASH而言,在進(jìn)行數(shù)據(jù)改寫時,必須先將該數(shù)據(jù)所在的SECTOR完全擦除(ERASE),然后再執(zhí)行寫(WRITE)操作。受FLASH操作的限制,在對FLASH進(jìn)行EREASE、WRITE操作時,相應(yīng)部分功能程序代碼不可能從FLASH內(nèi)取得,所以必須預(yù)先將它們轉(zhuǎn)移到適當(dāng)?shù)奈恢?SRAM),以保證讀、寫FLASH的程序正常運(yùn)轉(zhuǎn),完成這一部分操作完成后,可以恢復(fù)從FLASH內(nèi)取得程序代碼繼續(xù)執(zhí)行其他功能。
在這些中,內(nèi)部SRAM由CODE與XDATA地址空間共享。內(nèi)部有一定容量(64K)的SRAM,故可以從SRAM取得程序代碼完成規(guī)定的操作。但是這個RAM的容量有限(具體:02-8KByte,E505-16KByte,E512-32KByte,E520-40KByte),而且SRAM本身還必須預(yù)留足夠的空間中間數(shù)據(jù)的存放,所以轉(zhuǎn)移到RAM的程序代碼應(yīng)該盡可能精簡。
要E5完成對FLASH中部分區(qū)間的數(shù)據(jù)改寫,最少必須具有以下兩個功能:將程序代碼區(qū)的內(nèi)容轉(zhuǎn)移到內(nèi)部RAM區(qū);完成對FLASH的ERASE、WRITE。
3.1 程序代碼轉(zhuǎn)移
按照設(shè)計要求,被轉(zhuǎn)移的程序代碼所完成的功能是操作FLASH。為保證該部分代碼轉(zhuǎn)移至E5內(nèi)部RAM后能正確運(yùn)行,代碼的絕對起始地址應(yīng)該為0。
這部分代碼應(yīng)該利用FastChip的CODE BANK存放在單獨(dú)的BANK內(nèi)。如一般功能程序占用BANK0~N,則這部分代碼存放在BANKN+1。
進(jìn)行程序代碼轉(zhuǎn)移時,需要確定的參數(shù)包括:被轉(zhuǎn)移程序代碼的首地址、被轉(zhuǎn)移程序代碼的長度、被轉(zhuǎn)入?yún)^(qū)間的首地址。在進(jìn)行該項工作之前,確認(rèn)改變地址器的設(shè)置不會導(dǎo)致程序運(yùn)行的混亂。
3.2 Internal RAM區(qū)塊說明
改寫FLASH的功能代碼必須在Internal RAM運(yùn)行,而且起始地址必須是0000,因此,在設(shè)計時,Internal RAM的低段區(qū)域不要用來保存數(shù)據(jù),我們設(shè)定該區(qū)域長度為4KByte,地址范圍0001_0000~0001_0FFF。即其它數(shù)據(jù)的存取在0001_1000H之上。
3.3 地址
為將FLASH區(qū)域內(nèi)的功能代碼轉(zhuǎn)移到Internal RAM指定的位置,我們設(shè)置地址器來分別指向:
設(shè)置地址映射器DMAP2,使保存有改寫FLASH的功能代碼的FLASH之SECTOR的地址映射至XDATA區(qū)的0000~0FFF。映射器DMAP2各寄存器設(shè)置如下:
DMAP2_TAR_00x00 ;源映射區(qū)的起始地址
DMAP2_TAR_10x(80+BANK_No) ;源映射區(qū)的起始地址
DMAP2_TAR_20x00 ;源映射區(qū)的起始地址
DMAP2_ SRC0x00 ;目的映射區(qū)的起始地址
DMAP2_ CTL0x2C ;代碼長度
設(shè)置地址映射器DMAP4,將Internal RAM低4KByte的地址映射至XDATA區(qū)的1000~1FFF。映射器DMAP4各寄存器設(shè)置如下:
DMAP4_TAR_00x00 ;源映射區(qū)的起始地址
DMAP4_TAR_10x01 ;源映射區(qū)的起始地址
DMAP4_TAR_20x00 ;源映射區(qū)的起始地址
DMAP4_ SRC0x10 ;目的映射區(qū)的起始地址
DMAP4_ CTL0x2C ;代碼長度
完成上述映射后,就可以將FLASM MEMORY的程序按BYTE TO BYTE的方式COPY到INTERNAL SRAM內(nèi)執(zhí)行。當(dāng)然,這些都是在XDATA中處理的。

4.對FLASH的操作
在這個設(shè)計中,感興趣的是FLASH作數(shù)據(jù)存儲區(qū)使用,而不是程序存儲區(qū)使用時的操作,所以,下面的描述是針對FLASH作數(shù)據(jù)存儲區(qū)使用時的關(guān)注事項。
在進(jìn)行操作前,要事先進(jìn)行地址映射器的配置,使DPTR能正確指向。
讀(READ)--類似于標(biāo)準(zhǔn)的RAM??稍谌我鈺r候進(jìn)行。
寫(WRITE)--FLASH片內(nèi)任一位都只能從1寫為0,要從0寫為1,必須使用擦除操作。
擦除(ERASE)--擦除操作不能針對特定的字節(jié),最少必須以扇區(qū)為單位進(jìn)行,也可以選擇將整個器件內(nèi)的字節(jié)全部擦除。
對FLASH的讀、擦除操作,必須按照其Datasheet給定的步驟進(jìn)行。如:
擦除: xxAAA/AA-xx555/55-xxAAA/80-xxAAA/AA-xx555/55-xxAAA/10(整片擦除); xxAAA/AA-xx555/55-xxAAA/80-xxAAA/AA-xx555/55-ADDR/30(按扇區(qū)擦除)
很顯然,在我們的應(yīng)用中,不能使用整片擦除操作,只能按需要將要改寫的扇區(qū)進(jìn)行擦除以保存我們的數(shù)據(jù)。
寫:xxAAA/AA-xx555/55-xxAAA/A0-PA/PD
寫FLASH時,每個命令序列只能寫一個字節(jié)。其中PA是所要改寫的字節(jié)的地址,PD是將要寫入的內(nèi)容。

5.總結(jié)
在很多場合,如何將數(shù)據(jù)保護(hù)而不受掉電的影響是很重要的。本文作者創(chuàng)新點(diǎn):說明了在E5微處理器中如何將FALSH MEMORY用與存取、保護(hù)數(shù)據(jù),提供了FLASH與SRAM在XDATA空間中映射的方法,希望對使用E5 CPU的研發(fā)人員能有所幫助。


上一頁 1 2 下一頁

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉