- 相關(guān)推薦
兩類(lèi)DSP芯片的引導(dǎo)過(guò)程分析
摘要:詳細(xì)分析了TI公司TMS320C40和TMS320VC5402兩類(lèi)DSP芯片的系統(tǒng)引導(dǎo)特點(diǎn)。在了解機(jī)理的基礎(chǔ)上,敘述了工程設(shè)計(jì)中創(chuàng)建系統(tǒng)引導(dǎo)表的具體步驟,給出了創(chuàng)建步驟中所需的鍵接文件范例,并進(jìn)行了說(shuō)明。關(guān)鍵詞:TMS320C40 TMS320VC5402 系統(tǒng)引導(dǎo) 引導(dǎo)表
目前,DSP芯片正逐漸應(yīng)用到電子設(shè)計(jì)中,其中應(yīng)用最廣泛的是TI公司生產(chǎn)的DSP系列產(chǎn)品。筆者在工程項(xiàng)目的開(kāi)發(fā)中,對(duì)TMS320C40和TMS320VC5402(以下簡(jiǎn)稱(chēng)C40和C5402)進(jìn)行了系統(tǒng)的研究,并成功的實(shí)現(xiàn)了DSP的脫機(jī)運(yùn)行。本文希望通過(guò)對(duì)C40和C5402兩種芯片系統(tǒng)引導(dǎo)的描述使大家了解設(shè)計(jì)DSP系列引導(dǎo)的步驟,能夠利用DSP設(shè)計(jì)自己的設(shè)備。
1 C40和C5402的系統(tǒng)引導(dǎo)機(jī)理
TI公司的每一種DSP產(chǎn)品,都為用戶(hù)設(shè)計(jì)了多種系統(tǒng)的引導(dǎo)方式,如串口、并行加載、HPI加載等。C40和C5402的引導(dǎo)方式如表1所示。
表1 C40和C5402的引導(dǎo)方式
在工程中,使用最廣泛的EEPROM并行加載方式。它又分為8位數(shù)據(jù)寬度和16位數(shù)據(jù)寬度兩種,筆者采用的是8位數(shù)據(jù)寬度的并行加載方式。需要注意的是C40的數(shù)據(jù)總線寬度是32位,引導(dǎo)表中數(shù)據(jù)存放的原則是低字節(jié)在低地址。C5402的數(shù)據(jù)寬度是16位,引導(dǎo)表中數(shù)據(jù)的存放原則是高字節(jié)在低地址。
1.1 C40的并行引導(dǎo)模式
C40加電時(shí),芯片塞滿(mǎn)到ROMAN引腳為高電平,進(jìn)入微處理器模式。再檢測(cè)IIOF3~I(xiàn)IOF0引腳電平,決定系統(tǒng)的引導(dǎo)方式和選擇并行引導(dǎo)的始地址。執(zhí)行程序引導(dǎo)程序時(shí),程序和數(shù)據(jù)存取等時(shí)間可以設(shè)置為最長(zhǎng)7個(gè)等待周期。若軟件延時(shí)不夠用,則需要輔助硬件延時(shí)等待。程序引導(dǎo)完畢后,會(huì)在IACK引腳產(chǎn)生脈沖,使引腳可以作為中斷引腳使用并轉(zhuǎn)入到程序的入口地址開(kāi)始執(zhí)行程序。
C40由中斷引腳的電平?jīng)Q定系統(tǒng)引導(dǎo)后的程序執(zhí)行地址,或決定是否由通訊口進(jìn)行程序的加載。采用0030 0000H作為主程序的入口地址,即將一片28C256地址設(shè)計(jì)為0030 0000H~0030 7FFFH。在系統(tǒng)引導(dǎo)時(shí),需維持IIOF3~I(xiàn)IOF0四個(gè)引腳電平為1101。
下面以IIOF2引腳和IIOF1引腳為例,敘述一下系統(tǒng)引導(dǎo)前后的中斷引腳的處理過(guò)程。圖1電路是IIOF2引腳的外圍處理電路。在系統(tǒng)加電時(shí),D31A的/PRE=0、/CLR=1,置位端有效,所以Q=1、/IIOF2=1。加電完畢后,/PRE=1、/CLR=1,此時(shí)無(wú)/IACK信號(hào),Q=1、/IIOF2=1,C40開(kāi)始程序的加載工作。當(dāng)C40程序加載完畢時(shí),IACK引腳會(huì)產(chǎn)生一個(gè)脈沖,Q=D=0,/IIOF2=/INT2。C40會(huì)轉(zhuǎn)入程序的入口地址執(zhí)行程序,此時(shí)D觸發(fā)器電路的工作已經(jīng)完成,C40此時(shí)可以處理中斷信號(hào)。圖2電路是IIOF1引腳的外圍處理電路。系統(tǒng)引導(dǎo)時(shí),要求/IIOF1引腳電平為低電平。
1.2 C5402并行引導(dǎo)模式
C5402加電時(shí),如果芯片檢測(cè)到MP/MC引腳電平為低電平,系統(tǒng)從0FF80H開(kāi)始執(zhí)行代碼。此處有一個(gè)分支指令(廠家編程設(shè)置的),可以跳轉(zhuǎn)到引導(dǎo)程序的開(kāi)始地址(0F800H)。這個(gè)程序可以在引導(dǎo)之前設(shè)置CPU狀態(tài)寄存器的初始值。中斷被全局禁止,OVLY設(shè)置為1,程序和數(shù)據(jù)存取等待時(shí)間被設(shè)置為7個(gè)等待周期,外部?jī)?nèi)存塊被設(shè)置為4K的WOROS(16BIT),然后開(kāi)始程序的引導(dǎo)。
當(dāng)C5402檢測(cè)到INT2引腳為高電平、INT3引腳為高電平,即兩個(gè)引腳都無(wú)效時(shí),C5402會(huì)轉(zhuǎn)到并行引導(dǎo)方式。并行引導(dǎo)方式是通過(guò)擴(kuò)展的內(nèi)存接口從數(shù)據(jù)地址空間讀取所需的引導(dǎo)表,再將代碼傳送到程序存儲(chǔ)區(qū)。并行引導(dǎo)既支持8位的數(shù)據(jù)寬度,也支持16位的數(shù)據(jù)寬度。軟件可編程等待寄存器(SWWSR)和塊切換控制寄存器(BSCR)都可以在這兩種模式中得到設(shè)置。
C5402數(shù)據(jù)存儲(chǔ)區(qū)、程序存儲(chǔ)區(qū)和I/O地址空間,用/DS、/PS和/IS三個(gè)引腳信號(hào)區(qū)分。系統(tǒng)的引導(dǎo)表設(shè)在數(shù)據(jù)存儲(chǔ)區(qū),考慮到C5402內(nèi)部只有16K×16的雙存取RAM(DRAM),因此用于程序加載的EEPROM(EEPROM)中存放的是系統(tǒng)的引導(dǎo)表)可考慮使用28LV256。如果在設(shè)計(jì)中,使28LV256(+3.3V供電)占用系統(tǒng)的數(shù)據(jù)空間地址為8000H~0FFFFH,那么,C5402在系統(tǒng)引導(dǎo)時(shí)需從系統(tǒng)的數(shù)據(jù)地址0FFFEH和0FFFFH得到引導(dǎo)表的起始地址8000H。在設(shè)計(jì)系統(tǒng)引導(dǎo)表時(shí)要注意這兩個(gè)單元的內(nèi)容。如果設(shè)計(jì)EEPROM的首地址(系統(tǒng)引導(dǎo)表的首地址)為0C000H,那么數(shù)據(jù)地址0FFFEH和0FFFFH兩個(gè)單元要存放C0和00H,也就是引導(dǎo)表的首地址。在設(shè)計(jì)中也可以使用其它EEPROM或FLASH,如29LE010(128K×8BIT),但要正確配置它在系統(tǒng)中的地址。引導(dǎo)表的首地址(即EEPROM的在系統(tǒng)中的首地址)是通過(guò)系統(tǒng)數(shù)據(jù)地址0FFFEH和0FFFFH決定的,可以是08000H~0FFFDH之間的任意地址,但要保證能夠存儲(chǔ)系統(tǒng)引導(dǎo)表。
(范文先生網(wǎng)www.gymyzhishaji.com收集整理)
2 建立系統(tǒng)引導(dǎo)表的步驟
程序經(jīng)過(guò)仿真器仿真無(wú)誤以后,就要建立引導(dǎo)表,使系統(tǒng)能夠脫機(jī)運(yùn)行。下面介紹建立系統(tǒng)引導(dǎo)表的步驟:
(1)編譯文件。編寫(xiě)完程序代碼以后,對(duì)源程序進(jìn)行編譯,生成.obj文件,對(duì)于C5402,編譯時(shí)要采用-V548的編譯描述符。
(2)鏈接文件,將.obj文件生成.out文件。.out文件中應(yīng)包括初始化的段落。如.text,.const,.cinint等。以上兩步在仿真時(shí),也需要執(zhí)行,以便得到仿真用的.out文件。
(3)使用數(shù)制轉(zhuǎn)換工具生成.HEX文件或.BIN文件,C40使用的數(shù)據(jù)轉(zhuǎn)換工具為hex30.exe,C5402使用數(shù)制轉(zhuǎn)換工具編寫(xiě)命令文件,命令文件的編寫(xiě)很重要,下面分別例舉了C40和C5402系統(tǒng)引導(dǎo)的兩個(gè)CMD命令文件。
例1:C40系統(tǒng)引導(dǎo)的CMD文件
myfile.out /*要進(jìn)行轉(zhuǎn)化的COFF文件名*/
-i /*建立INTEL十六進(jìn)制文件的輸出*/
-image /*產(chǎn)生ROM所指出的內(nèi)存映射*/
-o n_t_fcom.hex /*輸出的文件名*/
-map n_t_hex.map /*輸出的MAP文件名*/
-romwidth 8 /*EEPROM的數(shù)據(jù)寬度*/
-cg 000000000H /*全局?jǐn)?shù)據(jù)總線控制字*/
-cl 3e3fbfd0H /*本地?cái)?shù)據(jù)總線控制字*/
-datawidth 32 /*數(shù)據(jù)寬度*/
-memwidth 8 /*存儲(chǔ)器的寬度*/
-boot /*將所有的輸入文件創(chuàng)建引導(dǎo)表*/
-bootorg 0000H /*EPROM的0000H,系統(tǒng)的0030 0000H*/
-ivtp 00700000H /*IVTP指針的初始值*/
-tvtp 00000000H /*TVTP指針的初始值*/
-iack 0300000H /*IACK指令的響應(yīng)地址*/
-e 00704000H /*程序的開(kāi)始執(zhí)行地址*/
ROMS /*ROM的映射范圍*/
{
EPROM:org=00300000h,len=8000H
}
例2:C5402系統(tǒng)引導(dǎo)CMD命令文件
Myfile.out /*要進(jìn)行轉(zhuǎn)化的COFF文件名*/
-e 0300H /*程序運(yùn)行的入口點(diǎn)*/
-i /*建立INTEL十六進(jìn)制文件的輸出*/
-boot /*將所有的輸入文件創(chuàng)建引導(dǎo)表*/
-bootorg 0000H /*EPROM中引導(dǎo)表的始地址*/
-memwidth 8 /*EEPROM的數(shù)據(jù)寬度是8位*/
-o myfile.hex /*輸出的文件名*/
下面給出操作符的幾點(diǎn)說(shuō)明:
(1)-bootorg指定引導(dǎo)表的地址,注意這里使用的是0000H,.HEX文件的始地址就是0000H。在C40中,EEPROM28C256的0000H地址單元,在系統(tǒng)中地址是0030 0000H。若改為-bootorg 0030 0000H,在用燒錄器打開(kāi).HEX文件時(shí),可以看到起始地址是0030 0000H,若將.HEX文件燒到EEPROM中,需要修改燒錄芯片的起始地址,比較麻煩。但你可以將.HEX文件轉(zhuǎn)化為.BIN文件,則地址就不必修改。
(2)輸出文件的格式
-a 輸出ASCII碼的十六進(jìn)制文件
-I 輸出INTEL十六進(jìn)制文件
-m1 輸出Motrorola的S1數(shù)據(jù)格式文件
-m2 輸出Motorola的S2數(shù)據(jù)格式文件
-m3 輸出Motorola的S3數(shù)據(jù)格式文件
-t 輸出TI的數(shù)據(jù)格式文件
-x 輸出Tektronix數(shù)據(jù)格式文件
(3)檢查.HEX文件正確與否,可以查看MAP映射文件,在.MAP文件里列出了.HEX文件中的一些具體配置。如32BIT數(shù)據(jù)位的排放順序,即4個(gè)字節(jié)的排放順序;系統(tǒng)引導(dǎo)表的參數(shù):引導(dǎo)表的首地址、程序入口點(diǎn)、各個(gè)寄存器的初始值等;源程序中各段的起始地址、大小以及寬度等信息。對(duì)照它,就可以確定內(nèi)存資源是否得到了合理的配置和有無(wú)地址沖突。
以下是C40 MAP文件的舉例:
*********************************************
TMS320C3x/4x Hex Converter Version 5.00
********************************************
Fri Jun 8 09:47:33 2001
INPUT FILE NAME:<n.out>
OUTPUT FORMAT:Intel
PHYSICAL MEMORY PARAMETERS
Default data width:32
Default memory width:8(LS-->MS)
Default output width:8
BOOT LOADER PARAMETERS
Table Address: 00300000,PAGE 0
Entry Point: 00704000
Global Memory Configuration:00000000
Local Memory Configuration: 3e3fbfd0
Interrupt Vector Table Pointer(IVTP):00700000
Trap Vector Table Pointer(TVTP):00000000
IACK Location: 00300000
OUTPUT TRANSLATION MAP
-------------------------------------
00300000..00307fff Page=0 Memory Width=8 ROM Width=8 "EPROM"
-------------------------------------
OUTPUT FILES:n_t_fcom.hex [b0..b7]
CONTENTS:00300000..003013ff BOOT TABLE
intvect:dest=00700000 size=00000040 width=00000004
.text:dest=00704000 size=0000048a width=00000004
.data:dest=00705000 size=00000026 width=00000004
003004f0..00307fff FILL = 00000000
(4)燒錄芯片。C40可以直接將生成的INTEL格式的.HEX文件燒到28LV256中;?qū)⑹M(jìn)制的文件用hexbin.exe轉(zhuǎn)化為二進(jìn)制的.BIN文件,再燒錄到芯片中。對(duì)于C5402,還需要手動(dòng)添加EEPROM在系統(tǒng)中的起始地址。如果采用28LV256(32K×8BIT),引導(dǎo)表的首地址為8000H,那么生成的.HEX文件用芯片燒錄器加載到燒錄器軟件的內(nèi)存后,手動(dòng)修改28LV256的7FFEH和7FFFH單元(即系統(tǒng)的FFFEH和FFFFH單元)為80和00H,再繞到芯片中。
以上步驟的操作都是在DOS環(huán)境中執(zhí)行的。新版本的DSP開(kāi)發(fā)軟件可以在WINDOWS環(huán)境中使用,其原理是一樣的,這里不再多述。
源程序數(shù)據(jù)的存儲(chǔ)格式(8位并行裝載)如表2所示,當(dāng)燒錄時(shí)可以對(duì)比一下。
表2 源程序數(shù)據(jù)的儲(chǔ)存格式
全局?jǐn)?shù)據(jù)總線控制字32
本地?cái)?shù)據(jù)總線控制字32
第一段的存儲(chǔ)空間范圍32
第一段程序的目的地址32
程序代碼(1)32
……
程序代碼(N)32
……
最后一段的存儲(chǔ)空間范圍32
最后一段程序的目的地址32
程序代碼(1)32
……
程序代碼(N)32
0000 0000H程序塊裝載結(jié)束標(biāo)志
IVTP
TVTP
IACK指令的響應(yīng)地址0030 0000H
C8AAH16
軟件可編程等待狀態(tài)寄存器的初值SWWSR16
塊切換控制寄存器的初值BSCR16
XPC16
PC16
第一段的存儲(chǔ)空間范圍16
第一段的目的(XPC)16
第一段的目的地址(PC)16
程序代碼(1)16
……
程序代碼(N)16
……
最后一段的存儲(chǔ)空間范圍16
最后一段的目的(XPC)16
最后一段的目的地址(PC)16
程序代碼(1)16
……
程序代碼(N)16
0000(指示引導(dǎo)表格的結(jié)束)
本文詳細(xì)介紹了C4X和C54XX兩類(lèi)DSP芯片系統(tǒng)引導(dǎo)的詳細(xì)設(shè)計(jì)步驟,其它型號(hào)的DSP也大同小異,如C3X與C4X類(lèi)似。筆者希望通過(guò)共享系統(tǒng)引導(dǎo)的經(jīng)驗(yàn),使系統(tǒng)引導(dǎo)不再成為DSP設(shè)計(jì)中的最大障礙,從而加速DSP的抗推廣和使用。
【兩類(lèi)DSP芯片的引導(dǎo)過(guò)程分析】相關(guān)文章:
單片機(jī)與DSP結(jié)合的dsPIC芯片08-06
Trimedia DSP芯片JTAG接口的仿真器設(shè)計(jì)08-06
DSP接口效率的分析與提高08-06
DSP+FLASH引導(dǎo)裝載系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)08-06
PCI總線和DSP芯片的圖像處理平臺(tái)的硬件設(shè)計(jì)08-06
基于DSP芯片的分級(jí)分布式管理系統(tǒng)設(shè)計(jì)08-06
DSP56362的雙引導(dǎo)裝載方法研究與實(shí)現(xiàn)08-06