TMS320VC5402外部并行引導(dǎo)裝載方法
所謂引導(dǎo)方式就是指單片機(jī)(MCU)系統(tǒng)復(fù)位時(shí),其系統(tǒng)軟件代碼所取得的方式。對(duì)于單片機(jī)來說,它使用復(fù)位矢量方式從程序空間的固定地址處開始取得指令代碼。如果所需代碼來自程序空間外部,則引導(dǎo)過程無法進(jìn)行。TMS320VC5402 DSP內(nèi)部ROM中的引導(dǎo)裝載程序Bootloader使系統(tǒng)上電后能自動(dòng)將程序代碼從外部如Flash、Eprom、主機(jī)引導(dǎo)裝載到DSP內(nèi)部或者外部程序存儲(chǔ)器中脫機(jī)運(yùn)行。這樣的設(shè)計(jì)有三個(gè)突出點(diǎn):一是程序代碼可以存儲(chǔ)在片外相對(duì)慢速、非易失性器件中,而裝載運(yùn)行于高速器件;二是提供多種裝載方式,使得DSP可以靈活應(yīng)用到不同系統(tǒng);三是省去對(duì)DSP片內(nèi)ROM進(jìn)行掩膜編程操作,節(jié)省大量費(fèi)用。 引導(dǎo)裝載程序根據(jù)不同的系統(tǒng)要求提供了多種裝載模式,主要包括并行I/O口引導(dǎo)裝載、串行口引導(dǎo)裝載、HPI引導(dǎo)裝載、外部并行引導(dǎo)裝載等模式,并且兼容8位和16位字引導(dǎo)裝載方式。
?。?引導(dǎo)裝載程序分析
?。裕停樱常玻埃郑茫担矗埃矁?nèi)部4K字的ROM程序位于0xF000~0xFFFF程序空間,包括引導(dǎo)裝載程序、μ律和A律擴(kuò)充表、正弦對(duì)照表、工廠測試碼和中斷向量表。其中,引導(dǎo)裝載程序位于0xF800~0xFBFF空間。復(fù)位時(shí),如果TMS320VC5402處在微計(jì)算機(jī)方式MP/MC=0,則片內(nèi)ROM中的引導(dǎo)裝載程序就會(huì)被執(zhí)行。引導(dǎo)裝載程序在決定采用何種裝載模式之前,首先對(duì)CPU狀態(tài)寄存器進(jìn)行初始化。初始化工作包括:禁止可屏蔽中斷INTM=1,內(nèi)部DARAM映射到程序/數(shù)據(jù)區(qū)OVLY=1,對(duì)程序和數(shù)據(jù)區(qū)均設(shè)置為7個(gè)等待狀態(tài)。初始化完成后,引導(dǎo)裝載程序執(zhí)行裝載模式判斷。判斷的順序是:HPI模式、SPI模式、外部并行模式、標(biāo)準(zhǔn)串口模式、并行I/O模式。圖1說明了整個(gè)裝載模式的判斷流程。
圖1 引導(dǎo)裝載模式選擇流程
2 外部并行裝載電路的設(shè)計(jì)
由圖1可知,外部并行裝載時(shí)引導(dǎo)裝載程序先讀I/O空間FFFFh,判斷是否是有效的并行裝載模式;如果FFFFh處為非有效值,則讀數(shù)據(jù)空間FFFFh,判斷是否是有效的并行裝載模式。對(duì)于外部并行裝載,要求裝載時(shí)Flash位于數(shù)據(jù)空間。下面給出兩種實(shí)際應(yīng)用過的并行裝載電路,如圖2所示。
圖2(a)適用于程序運(yùn)行時(shí)不要求大數(shù)據(jù)空間的系統(tǒng)。若對(duì)DS(數(shù)據(jù)空間選擇)信號(hào)與A15地址線譯碼,Flash占用數(shù)據(jù)空間的8000h~FFFFh共32K空間,因此程序代碼的存儲(chǔ)區(qū)大小不能超過32K。當(dāng)然,若對(duì)A15、A14與DS譯碼,Flash也可將整個(gè)片外48K的數(shù)據(jù)空間作為程序代碼的存放區(qū)。
圖2(b)將Flash分為16頁,每頁64K,Flash的片選信號(hào)CE利用DSP的A16~A19、通用I/O引腳XF以及程序/數(shù)據(jù)空間選擇DS/PS信號(hào)譯碼獲得。圖2b所示系統(tǒng)上電后,XF=1,譯碼后Flash的0頁映射到數(shù)據(jù)空間,此時(shí)引導(dǎo)裝載程序可利用它正確裝載;裝載完畢后,DSP從程序代碼的入口地址開始執(zhí)行,此時(shí)DSP設(shè)置XF=1,DSP利用內(nèi)部DARAM或者外部SRAM作為程序和數(shù)據(jù)空間存儲(chǔ)器,Flash的0頁被屏蔽而無法再操作,Flash的1~15頁作為DSP擴(kuò)展程序存儲(chǔ)器使用。這樣設(shè)計(jì)系統(tǒng)電路有如下好處:由于裝載時(shí)與系統(tǒng)程序運(yùn)行時(shí)數(shù)據(jù)空間的物理存儲(chǔ)器分離,系統(tǒng)程序可利用全部64K的數(shù)據(jù)空間;程序運(yùn)行時(shí)程序代碼存儲(chǔ)器被屏蔽,保證了裝載程序的安全性;擴(kuò)展程序空間可作為數(shù)據(jù)暫存或永久存儲(chǔ)空間,滿足了數(shù)據(jù)處理系統(tǒng)的要求。當(dāng)然,也可使用單片64K的Flash作為程序代碼存儲(chǔ)器,以SRAM作為程序擴(kuò)展空間存儲(chǔ)器。
圖2 外部并行裝載典型電路 3 外部并行裝載的仿真器在線編程 DSP引導(dǎo)裝載程序從外部數(shù)據(jù)存儲(chǔ)器(Flash)中讀取引導(dǎo)裝載表,并且裝載程序代碼到DSP片內(nèi)或片外程序存儲(chǔ)器。Flash中存儲(chǔ)的是引導(dǎo)裝載表。它的結(jié)構(gòu)如表1所示。要使用TMS320VC5402的引導(dǎo)裝載功能,必須利用Hex轉(zhuǎn)換工具生成一個(gè)如表1所示結(jié)構(gòu)的包含引導(dǎo)裝載操作所需的全部數(shù)據(jù)項(xiàng)的引導(dǎo)裝載表。表中第一個(gè)字08AAh/10AAh代表8/16位并行裝載模式。 表1 引導(dǎo)裝載表結(jié)構(gòu) 08AAh或者10AAh SWWSR寄存器初始化值 BSCR寄存初始化值 程序入口地址XPC 程序入口地址指(PC) 第一程序塊大小 第一個(gè)程序塊目標(biāo)地址XPC 第一個(gè)程序塊目標(biāo)地址指針 程序代碼1 …… 程序代碼N 最后程序塊大小 最后程序塊目標(biāo)地址XPC 最后程序塊目標(biāo)地址指針 程序代碼1 …… 程序代碼N 代碼結(jié)束標(biāo)志0000h 通常的DSP獨(dú)立系統(tǒng)都需要利用Flash燒寫器將引導(dǎo)裝載表寫入Flash中,對(duì)于采用表貼封裝的Flash器件,燒寫器無法寫入數(shù)據(jù)。為了解決這個(gè)問題,采用仿真器在線編程方式將引導(dǎo)裝載表數(shù)據(jù)寫入Flash,它具有節(jié)約開發(fā)成本、減小器件尺寸、編程靈活的特點(diǎn)。
對(duì)于圖2a所示的系統(tǒng),在仿真器仿真狀態(tài)下,將引導(dǎo)裝載表讀入DSP數(shù)據(jù)區(qū)的0000h~7FFFh空間,然后使用Flash在線編程方法將數(shù)據(jù)寫入Flash中,最后在Flash的FFFFh處寫入引導(dǎo)裝載表在Flash中的起始地址。編程完畢,復(fù)位系統(tǒng)即可實(shí)現(xiàn)裝載過程。
對(duì)于圖2(b)所示的系統(tǒng),仿真器在線編程則要復(fù)雜得多。由于在仿真狀態(tài)下,程序空間與Flash的0頁空間重疊,Flash的0頁被屏蔽,程序無法操作到Flash的存儲(chǔ)空間。為此,程序?qū)ⅲ疲欤幔螅璧模绊摽臻g作為“虛擬擴(kuò)展程序空間”,以便程序?qū)懭胍龑?dǎo)裝載表。具體實(shí)現(xiàn)過程是:設(shè)置外部控制信號(hào)=1,此時(shí)譯碼電路將A18地址線信號(hào)取反,虛擬擴(kuò)展程序空間開放。Flash的0頁空間虛擬成為擴(kuò)展程序空間的040000h~04FFFFh空間。這樣,仿真器在線編程040000h~04FFFFh空間即相當(dāng)于對(duì)Flash的0頁編程。編程完畢后,設(shè)置外部控制信號(hào)=0,復(fù)位系統(tǒng)后即可實(shí)現(xiàn)裝載過程。
本文分析了TMS320VC5402的引導(dǎo)裝載程序的裝載過程,給出了兩個(gè)經(jīng)常使用的外部并行裝載典型電路。針對(duì)兩個(gè)典型電路設(shè)計(jì)了仿真器在線編程裝載方法。利用此方法實(shí)現(xiàn)了一個(gè)以128?。保叮猓椋舻模樱遥粒妥鳛槌绦蚝蛿?shù)據(jù)空間,以1M?。保叮猓椋舻模疲欤幔螅枳鳛閿U(kuò)展程序空間和系統(tǒng)程序代碼存儲(chǔ)器的系統(tǒng)。該系統(tǒng)無需Flash燒寫器進(jìn)行Flash數(shù)據(jù)寫入,并且完全利用了TMS320VC5402的全部存儲(chǔ)空間,充分發(fā)揮了DSP的效能。
評(píng)論