 |
AT29LV256 的PDF資料
下載 ,621524K
|
|
|
|
其他型號 |
|
AT29LV256的供應商:
|
聯(lián)系人:陳小姐
電話:0755-23895165 |
聯(lián)系人:謝小姐/李小姐/楊小姐/陳先生
電話:0755-25320933/0755-25320966/0755-25320933/0755-25320966 |
聯(lián)系人:林小姐/朱先生
電話:0755-82547753/0755-82774765 |
|
|
| >>更多供應商 |
AT29LV256在DSP并行引導裝載模式中的應用
摘要:介紹了ATMEL公司低電壓AT29LV系列存儲器的結(jié)構(gòu)、特點及性能。同時結(jié)合TI公司DSP芯片TMS320VC5402的并行裝載方式,給出了AT29LV256在實際應用中的硬件原理圖和在線編程注意事項。最后以亮燈程序為例,給出了AT29LV256在線編程的關(guān)鍵程序。
關(guān)鍵詞:數(shù)字信號處理器(DSPs) ;閃存;并行引導裝載;在線編程;AT29LV256
Flash存儲器是一種高密度、非易失的電可擦寫存儲器。它具有功耗低、容量大、速度快等特點,而且單位存儲比特的價格比傳統(tǒng)的EPROM要低,因而大量應用于數(shù)字信號處理系統(tǒng)中。Flash 可分為并行Flash和串行Flash。串行Flash與外圍芯片連接簡單,可節(jié)約印制板空間,但存儲量相對較小且成本高。同時串行通信速度較慢,編程也比較復雜。并行Flash芯片則具有存儲量大、速度快、使用方便等優(yōu)點。ATMEL公司生產(chǎn)的AT29LV系列低電壓存儲器就是一種并行、高性能、可支持3V在線編程的Flash存儲器。對Flash編程除了可以采用專用的硬件編程器把程序代碼燒寫到Flash中外,還可利用DSP的開發(fā)系統(tǒng)通過軟件編程來實現(xiàn)同樣的功能。
TMS320VC5402(以下簡稱C5402)是美國德州儀器公司(TI)推出的一款性價比極高的定點數(shù)字信號處理器(DSP)。該芯片內(nèi)置4k×16bit片內(nèi)屏蔽式ROM(F000-FFFF),且在4kB ROM資源里包含了Bootloader程序。C5402的Bootloader在系統(tǒng)加電時會把外部源程序傳送到內(nèi)部存儲器或內(nèi)部程序空間。它允許程序放在外部較慢的存儲器或微處理器中,并將其調(diào)到高速的DRAM存儲器中運行,從而大大減小了對C5402內(nèi)部掩膜的需要,降低了電路的設計成本。
本文在筆者實際使用經(jīng)驗的基礎上,詳細介紹了AT29LV256在C5402并行引導裝載模式下的軟件編程技術(shù),給出了并行裝載的數(shù)據(jù)流和系統(tǒng)的硬件設計,最后以亮燈程序為例給出了對AT29LV256編程時的具體步驟及方法。
。 AT29LV256編程技術(shù)
AT29LV256是ATMEL公司生產(chǎn)的容量為32k×8bit、可支持3V在系統(tǒng)編程的Flash存儲器。AT29LV256將存儲空間分成512個獨立的扇區(qū),每個扇區(qū)有64個字節(jié),其中A6~A14用來選擇扇區(qū)地址,A0~A5選擇字節(jié)地址。每個扇區(qū)的編程操作最長需要20ms,而其讀操作與一般的SRAM相同,時間為70ns 。AT29LV256在編程之前,片內(nèi)對應扇區(qū)會自動擦除,因而不需要額外的擦除命令。同時芯片還提供了六個軟件控制字以用于完成對整片的擦除,其整片擦除命令見表1所列。
表1 AT29LV256全片擦除命令
| 次 序 |
1st |
2nd |
3rd |
4th |
5th |
6th |
| 地 址 |
5555H |
2AAAH |
5555H |
5555H |
2AAAH |
5555H |
| 命令字 |
5555h |
AAh |
2AAAh |
55h |
5555h |
90h |
AT29LV256的編程操作是以扇區(qū)為單位進行的。它內(nèi)部有64字節(jié)的數(shù)據(jù)緩沖器。如果寫入緩沖器的字節(jié)數(shù)不足64字節(jié),則編程時自動將未寫入的字節(jié)擦除為FFH。一旦某一扇區(qū)中的字節(jié)被裝入,這些字節(jié)將同時在內(nèi)部編程時間進行編程,此時若有數(shù)據(jù)裝入,則會產(chǎn)生不確定的數(shù)據(jù)。每一個新裝載的數(shù)據(jù)若要被編程,必須有WE由高到低的跳變,這一跳變需要在150μs內(nèi)完成,如果超過150μs,器件會自動進入扇區(qū)內(nèi)部編程方式。為了防止意外的編程操作,AT29LV256提供有軟件保護編程功能,在對Flash 的每個扇區(qū)進行編程時,必須先將3個命令字正確地寫入到對應的地址單元,然后才能向片內(nèi)編寫程序。在對每一個扇區(qū)編程之前,都要執(zhí)行相同的三字節(jié)指令序列,采用軟件保護編程的具體流程如圖1所示。
通過AT29LV256提供的軟硬件操作可識別芯片的系列號和型號。當按圖2順序?qū)懭肟刂谱趾,即可讀到產(chǎn)品識別碼1F和器件識別碼BC。器件識別完成后,若需開始編寫程序,則應退出器件識別,并延時20ms,為了減小編程的等待時間,AT29LV256提價有下列兩種檢測編程周期是否結(jié)束的方式:
(1) 循環(huán)檢測方式。該方式首先讀出寫入本扇區(qū)最后一個單元的內(nèi)容,若其I/O7位是寫入該單元真實值的反碼,則表明編程周期沒有結(jié)束;若為實際值,則表明編程結(jié)束。
(2) 檢測I/O6方式。該方式在扇區(qū)編程期間將連續(xù)讀出任意單元地址的內(nèi)容,若I/O6在連續(xù)讀出時狀態(tài)不一樣,說明編程沒有結(jié)束,若相同,則表明編程周期已經(jīng)結(jié)束。
。 C5402的自引導裝載模式
C5402上電后,通常首先檢查MP/MC引腳的狀態(tài):如果為高電平,說明DSP處于微處理器工作模式,此時便可從外部程序存儲器0FF80h地址處開始執(zhí)行用戶程序;若為低電平,說明DSP被設置為微計算機模式,此時則從片內(nèi)ROM的0FF80h地址開始執(zhí)行程序。另外,在C5402的0FF80h地址處存放著一條跳轉(zhuǎn)至0F800h處執(zhí)行DSP自行引導裝載(Bootloader)程序的指令。
當C5402執(zhí)行Bootloader程序時,將會按HPI引導裝載模式→串行EEPROM引導裝載模式→并行引導裝載模式→標準串行口引導裝載模式→I/O口引導裝載模式的順序循環(huán)檢測,以決定執(zhí)行哪種啟動模式。
C5402的并行引導裝載模式是將程序代碼數(shù)據(jù)從外界EEPROM或Flash的相應DSP數(shù)據(jù)尋址區(qū)中加載到片內(nèi)DARAM或系統(tǒng)的擴展存儲器SRAM內(nèi)。由于C5402的數(shù)據(jù)區(qū)尋址范圍最大為64k 字 ,因此在不自行編寫Bootloader程序的情況下,并行引導裝載模式最大只能裝載32k字的程序或數(shù)據(jù)。當程序數(shù)據(jù)大于32k時可將自己編寫的并行裝載內(nèi)核程序通過片內(nèi)裝載程序傳送到片內(nèi)DRAM中,然后再運行轉(zhuǎn)載內(nèi)核程序以將大于32k字的程序數(shù)據(jù)送到片外SRAM中。
若采用并行裝載模式對程序進行加載,則應根據(jù)并行裝載的格式來配置Flash的程序數(shù)據(jù)存儲空間?上仍冢模樱袑臄(shù)據(jù)空間FFFEH和FFFFH地址內(nèi)寫入要存放程序的地址,然后根據(jù)并行裝載的數(shù)據(jù)流將標識控制字、各個寄存器的初始化值、裝載后的起始運行地址、程序段的大小和裝載地址依次寫入Flash的存放程序地址中,最后再寫入所編寫的程序,表2所列是Flash中的并行引導源程序數(shù)據(jù)流。其程序段的大小以及起始運行地址可根據(jù)系統(tǒng)仿真時生成的.MAP文件來確定。
表2 Flash中的并行引導源程序數(shù)據(jù)流
| 數(shù)據(jù)區(qū)地址(H) |
內(nèi)容(H) |
含 義 |
| 8000 8001 |
08 AA |
8位并行引導標志 |
| 8002 8003 |
88 06 |
SWWSR寄存器初值 |
| 8004 8005 |
00 00 |
BSCR寄存器初值 |
| 8006 8007 |
00 00 |
程序入口XPC |
| 8008 8009 |
00 80 |
程序入口地址 |
| 800A 800B |
00 0B |
程序段長度 |
| 800C 800D |
00 00 |
存放目標XPC |
| 800E 800F |
00 80 |
存放目標地址 |
| 8010 8011 |
F6 BD |
程序代碼1 |
| …… |
…… |
…… |
| 801F 801F |
FC 00 |
程序代碼N |
| 8020 8021 |
00 00 |
程序塊結(jié)束標志 |
| …… |
…… |
…… |
| FFFE FFFF |
80 00 |
程序存儲首地址 |
。 基于AT29LV256和DSP的硬件設計
下面以AT29LV256與C5402組成的硬件系統(tǒng)為例對Flash在并行裝載模式中的應用進行詳細說明,其硬件系統(tǒng)原理框圖如圖3所示。因為AT29LV256為32k×8Bit存儲器,因此不需要擴展外部SRAM。本系統(tǒng)采用Altera公司的EPM3064來完成C5402與AT29LV256之間的邏輯轉(zhuǎn)換,EPM3064內(nèi)部的編程邏輯如圖4所示。
當C5402上電復位裝載時,由于Bootloader程序在初始化時,XF被設置為高電平,因此,C5402可以通過EPM3064總的邏輯,將AT29LV256 08000h—0FFFFh單元中的數(shù)據(jù)讀到C5402對應于0000h—3FFFh尋址區(qū)的片內(nèi)DARAM中。在系統(tǒng)進入并行引導裝載模式后,C5402會從數(shù)據(jù)尋址為0FFFFh的單元(A15=1,選中Flash)中讀取將要載入的程序存儲區(qū)的首地址,然后從程序存儲首地址處將標識控制字、各個寄存器的初始化值、裝載后的起始運行地址、程序段的大小以及裝載地址依次裝載到片內(nèi)DRAM中。在EPM3064邏輯控制中使用XF是為了在bootload之后釋放Flash所占用的數(shù)據(jù)空間。當主處理程序的第一條語句為RSBX XF,也就是置XF引腳為低電平時,CE將輸出片選無效信號,從而可以讓出數(shù)據(jù)空間。
。础∠到y(tǒng)軟件設計
該系統(tǒng)軟件編程的核心在于按照并行裝載數(shù)據(jù)流格式對Flash進行編程。下面以向AT29LV256燒寫一個簡單的亮燈程序為例來說明對Flash進行軟件編程時應注意的問題和關(guān)鍵步驟。
程序如下:
.mmregs
.data
kaishi: .word 08AAh,7FFFh,8806h,0000h,0080h,000bh,0000h,0080h ;并行裝載數(shù)據(jù)流中的各數(shù)據(jù)參數(shù)
.global_c_int00
.text
_c_int00: ;這里還應有必要的初始化
stm #100h,ar1
stm #0fffeh,ar2 ;將8000入口地址寫到FFFeH和FFFFH中
st #8000h,*ar1
call prog0 ;開始燒寫需要先寫入命令字
call prog1 ;將16位數(shù)據(jù)分成兩個8位燒寫到Flash中
stm #kaishi,ar1 ;將并行數(shù)據(jù)流各參數(shù)寫到8000h開始的單元
stm #8000h,ar2
stm #07h,brc
rptb loopa
call prog1
loopa: nop
stm #qq,ar1 ;將亮燈程序數(shù)據(jù)接著并行參數(shù)燒寫到Flash中
stm #0bh,br ;程序大小為0bh
rptb loopb
call prog1 ;因為總共燒寫沒超過64字節(jié),因此不用執(zhí)行命令字
looopb: nop
;prog0為軟件保護模式下寫控制字子程序,每編程64字節(jié)執(zhí)行一次
prog0: stm #0d555h,ar3
st #0aah,*ar3
stm #0aaaah,ar3
st #55h,*ar3
stm #0d555h,ar3
st #0a0h,*ar3
ret
; prog1為16位數(shù)分成8位數(shù)據(jù)燒寫子程序
prog1: ld *ar1,-8,a
and #0ffh,a
stl a,*ar2+
ld *ar1+,a
and #0ffh,a
stl a,*ar2+
ret
;以下一小段為亮燈程序,通過設置XF引腳的高低電平可使燈閃爍!
.sect "chengxu"
qq: rsbx xf
rpt #0ffffh
nop
ssbx xf
b qq
ret
.end
。怠〗Y(jié)束語
本文介紹的基于AT29LV256編程技術(shù)的TMS320VC5402并行引導裝載方案,可以在沒有專用燒寫器的情況下對Flash進行編程,從而實現(xiàn)了DSP的脫機獨立運行。實踐表明:該系統(tǒng)穩(wěn)定可靠,具有較高的應用價值。
來源:xiangxueqin
本頁面信息由維庫用戶提供,如有侵犯您的知識產(chǎn)權(quán),請致電本站,本站核實后將迅速刪除!