<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

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

Flash Memory作為數據存儲器在E5中的應用

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

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

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

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

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


上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

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

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>