AT29LV256在DSP并行引導(dǎo)裝載模式中的應(yīng)用
出處:wychy 發(fā)布于:2023-06-19 09:30:40
摘要:介紹了ATMEL公司低電壓AT29LV系列存儲器的結(jié)構(gòu)、特點及性能。同時結(jié)合TI公司DSP芯片TMS320VC5402的并行裝載方式,給出了AT29LV256在實際應(yīng)用中的硬件原理圖和在線編程注意事項。以亮燈程序為例,給出了AT29LV256在線編程的關(guān)鍵程序。
Flash存儲器是一種高密度、非易失的電可擦寫存儲器。它具有功耗低、容量大、速度快等特點,而且單位存儲比特的價格比傳統(tǒng)的EPROM要低,因而大量應(yīng)用于數(shù)字信號處理系統(tǒng)中。Flash 可分為并行Flash和串行Flash。串行Flash與外圍芯片連接簡單,可節(jié)約印制板空間,但存儲量相對較小且成本高。同時串行通信速度較慢,編程也比較復(fù)雜。并行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)部掩膜的需要,降低了電路的設(shè)計成本。
本文在筆者實際使用經(jīng)驗的基礎(chǔ)上,詳細(xì)介紹了AT29LV256在C5402并行引導(dǎo)裝載模式下的軟件編程技術(shù),給出了并行裝載的數(shù)據(jù)流和系統(tǒng)的硬件設(shè)計,以亮燈程序為例給出了對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)對應(yīng)扇區(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個命令字正確地寫入到對應(yīng)的地址單元,然后才能向片內(nèi)編寫程序。在對每一個扇區(qū)編程之前,都要執(zhí)行相同的三字節(jié)指令序列,采用軟件保護編程的具體流程如圖1所示。
通過AT29LV256提供的軟硬件操作可識別芯片的系列號和型號。當(dāng)按圖2順序?qū)懭肟刂谱趾?,即可讀到產(chǎn)品識別碼1F和器件識別碼BC。器件識別完成后,若需開始編寫程序,則應(yīng)退出器件識別,并延時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的自引導(dǎo)裝載模式
C5402上電后,通常首先檢查MP/MC引腳的狀態(tài):如果為高電平,說明DSP處于微處理器工作模式,此時便可從外部程序存儲器0FF80h地址處開始執(zhí)行用戶程序;若為低電平,說明DSP被設(shè)置為微計算機模式,此時則從片內(nèi)ROM的0FF80h地址開始執(zhí)行程序。另外,在C5402的0FF80h地址處存放著一條跳轉(zhuǎn)至0F800h處執(zhí)行DSP自行引導(dǎo)裝載(Bootloader)程序的指令。
當(dāng)C5402執(zhí)行Bootloader程序時,將會按HPI引導(dǎo)裝載模式→串行EEPROM引導(dǎo)裝載模式→并行引導(dǎo)裝載模式→標(biāo)準(zhǔn)串行口引導(dǎo)裝載模式→I/O口引導(dǎo)裝載模式的順序循環(huán)檢測,以決定執(zhí)行哪種啟動模式。
C5402的并行引導(dǎo)裝載模式是將程序代碼數(shù)據(jù)從外界EEPROM或Flash的相應(yīng)DSP數(shù)據(jù)尋址區(qū)中加載到片內(nèi)DARAM或系統(tǒng)的擴展存儲器SRAM內(nèi)。由于C5402的數(shù)據(jù)區(qū)尋址范圍為64k 字 ,因此在不自行編寫Bootloader程序的情況下,并行引導(dǎo)裝載模式只能裝載32k字的程序或數(shù)據(jù)。當(dāng)程序數(shù)據(jù)大于32k時可將自己編寫的并行裝載內(nèi)核程序通過片內(nèi)裝載程序傳送到片內(nèi)DRAM中,然后再運行轉(zhuǎn)載內(nèi)核程序以將大于32k字的程序數(shù)據(jù)送到片外SRAM中。
若采用并行裝載模式對程序進行加載,則應(yīng)根據(jù)并行裝載的格式來配置Flash的程序數(shù)據(jù)存儲空間??上仍冢模樱袑?yīng)的數(shù)據(jù)空間FFFEH和FFFFH地址內(nèi)寫入要存放程序的地址,然后根據(jù)并行裝載的數(shù)據(jù)流將標(biāo)識控制字、各個寄存器的初始化值、裝載后的起始運行地址、程序段的大小和裝載地址依次寫入Flash的存放程序地址中,再寫入所編寫的程序,表2所列是Flash中的并行引導(dǎo)源程序數(shù)據(jù)流。其程序段的大小以及起始運行地址可根據(jù)系統(tǒng)仿真時生成的.MAP文件來確定。
表2 Flash中的并行引導(dǎo)源程序數(shù)據(jù)流
| 數(shù)據(jù)區(qū)地址(H) | 內(nèi)容(H) | 含 義 |
| 8000 8001 | 08 AA | 8位并行引導(dǎo)標(biāo)志 |
| 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 | 存放目標(biāo)XPC |
| 800E 800F | 00 80 | 存放目標(biāo)地址 |
| 8010 8011 | F6 BD | 程序代碼1 |
| …… | …… | …… |
| 801F 801F | FC 00 | 程序代碼N |
| 8020 8021 | 00 00 | 程序塊結(jié)束標(biāo)志 |
| …… | …… | …… |
| FFFE FFFF | 80 00 | 程序存儲首地址 |
?。?基于AT29LV256和DSP的硬件設(shè)計
下面以AT29LV256與C5402組成的硬件系統(tǒng)為例對Flash在并行裝載模式中的應(yīng)用進行詳細(xì)說明,其硬件系統(tǒng)原理框圖如圖3所示。因為AT29LV256為32k×8Bit存儲器,因此不需要擴展外部SRAM。本系統(tǒng)采用Altera公司的EPM3064來完成C5402與AT29LV256之間的邏輯轉(zhuǎn)換,EPM3064內(nèi)部的編程邏輯如圖4所示。
當(dāng)C5402上電復(fù)位裝載時,由于Bootloader程序在初始化時,XF被設(shè)置為高電平,因此,C5402可以通過EPM3064總的邏輯,將AT29LV256 08000h—0FFFFh單元中的數(shù)據(jù)讀到C5402對應(yīng)于0000h—3FFFh尋址區(qū)的片內(nèi)DARAM中。在系統(tǒng)進入并行引導(dǎo)裝載模式后,C5402會從數(shù)據(jù)尋址為0FFFFh的單元(A15=1,選中Flash)中讀取將要載入的程序存儲區(qū)的首地址,然后從程序存儲首地址處將標(biāo)識控制字、各個寄存器的初始化值、裝載后的起始運行地址、程序段的大小以及裝載地址依次裝載到片內(nèi)DRAM中。在EPM3064邏輯控制中使用XF是為了在bootload之后釋放Flash所占用的數(shù)據(jù)空間。當(dāng)主處理程序的條語句為RSBX XF,也就是置XF引腳為低電平時,CE將輸出片選無效信號,從而可以讓出數(shù)據(jù)空間。
4 系統(tǒng)軟件設(shè)計
該系統(tǒng)軟件編程的在于按照并行裝載數(shù)據(jù)流格式對Flash進行編程。下面以向AT29LV256燒寫一個簡單的亮燈程序為例來說明對Flash進行軟件編程時應(yīng)注意的問題和關(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: ;這里還應(yīng)有必要的初始化
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
;以下一小段為亮燈程序,通過設(shè)置XF引腳的高低電平可使燈閃爍!
.sect "chengxu"
qq: rsbx xf
rpt #0ffffh
nop
ssbx xf
b qq
ret
.end
?。怠〗Y(jié)束語
本文介紹的基于AT29LV256編程技術(shù)的TMS320VC5402并行引導(dǎo)裝載方案,可以在沒有專用燒寫器的情況下對Flash進行編程,從而實現(xiàn)了DSP的脫機獨立運行。實踐表明:該系統(tǒng)穩(wěn)定可靠,具有較高的應(yīng)用價值。
版權(quán)與免責(zé)聲明
凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場網(wǎng),轉(zhuǎn)載請必須注明維庫電子市場網(wǎng),http://www.hbjingang.com,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或證實其內(nèi)容的真實性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。
如涉及作品內(nèi)容、版權(quán)等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- 單片機技術(shù)特性與嵌入式開發(fā)實踐指南2026/1/7 10:00:02
- 單片機(MCU)與數(shù)字信號處理器(DSP)分類及選型技術(shù)指南2025/12/30 10:02:37
- 工業(yè)級DSP信號處理系統(tǒng):硬件適配與抗干擾工程方案2025/12/15 14:41:00
- HOLTEK推出HT32F65533G/733G內(nèi)建N/N預(yù)驅(qū)電機專用SoC單片機2025/11/26 14:11:41
- 什么是C51數(shù)據(jù)類型擴充定義2025/10/27 13:59:22









