| 數(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)用進(jìn)行詳細(xì)說明,其硬件系統(tǒng)原理框圖如圖3所示。因為AT29LV256為32k×8Bit存儲器,因此不需要擴(kuò)展外部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)進(jìn)入并行引導(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ù)空間。
。础∠到y(tǒng)軟件設(shè)計 該系統(tǒng)軟件編程的核心在于按照并行裝載數(shù)據(jù)流格式對Flash進(jìn)行編程。下面以向AT29LV256燒寫一個簡單的亮燈程序為例來說明對Flash進(jìn)行軟件編程時應(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為軟件保護(hù)模式下寫控制字子程序,每編程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進(jìn)行編程,從而實現(xiàn)了DSP的脫機(jī)獨立運行。實踐表明:該系統(tǒng)穩(wěn)定可靠,具有較高的應(yīng)用價值。 |