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