表中,RA為要讀的存儲器地址;RD為從存儲器地址RA處讀出的數(shù)據(jù);SA為要擦除的段地址;PA為要寫入數(shù)據(jù)的存儲器地址;PD為要在地址PA處寫入的數(shù)據(jù)。根據(jù)表中的命令定久可編制FLASH的“燒寫”和“擦除”程序(用C語言和匯編語言混合編程實現(xiàn))。根據(jù)需要,我們編制了“燒寫”單字和“燒寫”多字的程序。
2 硬件電路組成
DSP 存儲區(qū)硬件接口電路如圖1所示。主要由5部分組成:DSP處理器-TMS320VC5409、系統(tǒng)邏輯控制電路(采用CPLD-EPM7128實現(xiàn))、閃存FLASH-Am29LV400B(256K字的FLASH用來存儲應(yīng)用程序和初始化數(shù)據(jù))、程序存儲器SRAM1-IDT71V416S12PH(容量為256K字)、數(shù)據(jù)存儲器SRAM2-IDT71V016S12PH(容量為64K字)。邏輯控制電路主要由3個模塊組成:FLASH頁選控制模塊、讀/寫控制模塊、程序空間/數(shù)據(jù)空間/FLASH切換控制模塊。圖中,CPLD的輸出FMSEL為FLASH的片選腳;PMSEL為程序空間的片選腳; DMSEL為數(shù)據(jù)空間的片選腳。
FLASH分為8頁,每頁32K,通過CPLD中的FLASH頁選控制模塊(Page0~Paeg2)實現(xiàn)FLASH翻頁功能。為實現(xiàn)FLASH引導(dǎo)裝載,F(xiàn)LASH物理空間的前32K映射到TMS320VC5409的數(shù)據(jù)空間0x8000h~0xFFFFh上,即TMS320VC5409的數(shù)據(jù)空間 0x8000h~0xFFFFh為FLASH的前32K空間。為了重點說明FLASH的引導(dǎo)裝載過程,本文只談及DSP片內(nèi)程序存儲空間以及FLASH前 32K字的使用情況。
3 TMS320VC5409 DSP的引導(dǎo)裝載方式
TMS320VC5409芯片具有兩種引導(dǎo)方式:片內(nèi)引導(dǎo)方式和片外執(zhí)行方式。片內(nèi)引導(dǎo)方式就是利用片內(nèi)ROM中的引導(dǎo)程序?qū)⒊绦驈耐獠考虞d到程序存儲器中運(yùn)行。由于FLASH的速度較低,難以與DSP相匹配,因此,本文采用片內(nèi)引導(dǎo)方式。
TMS320VC5409 片內(nèi)掩模ROM中固化的引導(dǎo)裝載(Bootloader)程序用于在上電復(fù)位時把用戶程序從外部引導(dǎo)到高速RAM中,以保證其全速運(yùn)行。 TMS320VC4509提供的片內(nèi)引導(dǎo)方法有:有機(jī)口HPI方法、8位或16位并行EPROM方法、8位或16位并行I/O方法和8位或16位串行口方法等。TMS320VC5409片內(nèi)引導(dǎo)裝載源程序可以在TI網(wǎng)絡(luò)下載得到,讀者可以自行分析。下面通過圖2所示的引導(dǎo)過程框圖,闡述一下本文選用的并行引導(dǎo)方式過程。
上電復(fù)位后,TMS320VC5409檢測其MP/MC引腳,如果MP/MC="0",DSP從0xFF80h處開始執(zhí)行片內(nèi)引導(dǎo)裝載程序。進(jìn)入引導(dǎo)程序后,如有INT2請求中斷,則進(jìn)入HPI 引導(dǎo)方式;如有INT3請求中斷,則進(jìn)入EEPROM串行口引導(dǎo)方式;否則就進(jìn)入并行引導(dǎo)方式。其詳細(xì)引導(dǎo)過程如圖3所示。
片內(nèi)并行引導(dǎo)方式前半部件是I/O空間并行引導(dǎo)方式,我們不采用此方式,程序繼續(xù)運(yùn)行直到從數(shù)據(jù)空間0xFFFFh地址讀入一個地址數(shù)據(jù),此數(shù)據(jù)為用戶自舉表的入口地址。這時片內(nèi)引導(dǎo)程序就開始執(zhí)行FLASH中的用戶自舉表,若自舉表的第一個字是0x10AA,則表示是16位并行引導(dǎo)模式。
4 FLASH中自舉表(Boottable)的存儲格式
為了實現(xiàn)DSP加電自舉,F(xiàn)LASH的數(shù)據(jù)必須按照自舉表的格式“燒寫”。自舉表的作用是:DSP運(yùn)行此表時,首先根據(jù)自舉表中前部分用戶起始地址把后面的用戶程序代碼加載到DSP片內(nèi)程序空間中相應(yīng)的用戶地址區(qū)域(由于FLASH與DSP時間不匹配,要設(shè)置好SWWR和BSCR寄存器),然后根據(jù)自舉表中的程序入口址,在程序空間相應(yīng)的地址開始運(yùn)行程序。表2為16位并行自舉的代碼結(jié)構(gòu)(自舉表在空間允許的情況下可以放幾個程序代碼段,為便于說明,在此只說明一個程序代碼段的情況)。
表2 并行自舉表的代碼結(jié)構(gòu)





