《電子技術應用》
您所在的位置:首頁 > 嵌入式技术 > 业界动态 > 两类DSP芯片的引导过程分析

两类DSP芯片的引导过程分析

2008-12-01
作者:韩 峰 侯亚峰 张 浩 董 勇

??? 摘? 要: 詳細分析了TI公司TMS320C40和TMS320VC5402兩類DSP芯片的系統(tǒng)引導特點。在了解機理的基礎上,敘述了工程設計中創(chuàng)建系統(tǒng)引導表的具體步驟,給出了創(chuàng)建步驟中所需的鏈接文件范例,并進行了說明。?

??? 關鍵詞: TMS320C40? TMS320VC5402? 系統(tǒng)引導? 引導表?

?

  目前,DSP芯片正逐漸應用到電子設計中,其中應用最廣泛的是 TI 公司生產(chǎn)的DSP系列產(chǎn)品。筆者在工程項目的開發(fā)中,對TMS320C40和TMS320VC5402(以下簡稱C40和C5402)進行了系統(tǒng)的研究,并成功的實現(xiàn)了DSP的脫機運行。本文希望通過對C40和C5402兩種芯片系統(tǒng)引導的描述使大家了解設計DSP系統(tǒng)引導的步驟,能夠利用DSP設計自己的設備。?

1 C40和C5402的系統(tǒng)引導機理?

??? TI公司的每一種DSP產(chǎn)品,都為用戶設計了多種系統(tǒng)的引導方式,如串口、并行加載" title="加載">加載、HPI加載等。C40和C5402的引導方式如表1所示。?

?

?

  在工程中,使用最廣泛的是EEPROM并行加載方式。它又分為8位數(shù)據(jù)寬度和16位數(shù)據(jù)寬度兩種,筆者采用的是8位數(shù)據(jù)寬度的并行加載方式。需要注意的是C40的數(shù)據(jù)總線寬度是32位,引導表中數(shù)據(jù)存放的原則是低字節(jié)在低地址。C5402的數(shù)據(jù)寬度是16位,引導表中數(shù)據(jù)的存放原則是高字節(jié)在低地址。?

1.1 C40的并行引導模式?

  C40加電時,芯片檢測到ROMAN引腳為高電平" title="高電平">高電平,進入微處理器模式。再檢測IIOF3~IIOF0引腳電平,決定系統(tǒng)的引導方式和選擇并行引導的始地址。執(zhí)行程序引導程序時,程序和數(shù)據(jù)存取等待時間可以設置為最長7個等待周期。若軟件延時不夠用,則需要輔助硬件延時等待。程序引導完畢后,會在IACK引腳產(chǎn)生脈沖,使引腳可以作為中斷引腳使用并轉(zhuǎn)入到程序的入口地址開始執(zhí)行程序。?

  C40由中斷引腳的電平?jīng)Q定系統(tǒng)引導后的程序執(zhí)行地址,或決定是否由通訊口進行程序的加載。采用 0030 0000H 作為主程序的入口地址,即將一片28C256地址設計為0030 0000H~0030 7FFFH。在系統(tǒng)引導時,需維持IIOF3~IIOF0四個引腳電平為1101。?

  下面以IIOF2引腳和IIOF1引腳為例,敘述一下系統(tǒng)引導前后的中斷引腳的處理過程。圖1電路是IIOF2引腳的外圍處理電路。在系統(tǒng)加電時,D31A的/PRE=0、/CLR=1,置位端有效,所以Q=1、/IIOF2=1。加電完畢后,/PRE=1、/CLR=1,此時無/IACK信號,Q=1、/IIOF2=1,C40開始程序的加載工作。當C40程序加載完畢時,IACK引腳會產(chǎn)生一個脈沖,Q=D=0,/IIOF2=/INT2。C40會轉(zhuǎn)入程序的入口地址執(zhí)行程序,此時D觸發(fā)器電路的工作已經(jīng)完畢,C40此時可以處理中斷信號。圖2電路是IIOF1引腳的外圍處理電路。系統(tǒng)引導時,要求/IIOF1引腳電平為低電平。

?

?

1.2 C5402并行引導模式?

  C5402加電時,如果芯片檢測到MP/MC引腳電平為低電平,系統(tǒng)從0FF80H開始執(zhí)行代碼。此處有一個分支指令(廠家編程設置的),可以跳轉(zhuǎn)到引導程序的開始地址(0F800H)。這個程序可以在引導之前設置CPU狀態(tài)寄存器的初始值。中斷被全局禁止,OVLY設置為1,程序和數(shù)據(jù)存取等待時間被設置為7個等待周期,外部內(nèi)存塊被設置為4K的WORDS(16BIT),然后開始程序的引導。?

  當C5402檢測到INT2引腳為高電平、INT3引腳為高電平,即兩個引腳都無效時,C5402會轉(zhuǎn)到并行引導方式。并行引導方式是通過擴展的內(nèi)存接口從數(shù)據(jù)地址空間讀取所需的引導表,再將代碼傳送到程序存儲區(qū)。并行引導既支持8位的數(shù)據(jù)寬度,也支持16位的數(shù)據(jù)寬度。軟件可編程等待寄存器(SWWSR)和塊切換控制寄存器(BSCR)都可以在這兩種模式中得到設置。?

  C5402數(shù)據(jù)存儲區(qū)、程序存儲區(qū)和I/O地址空間,用/DS、/PS和/IS三個引腳信號區(qū)分。系統(tǒng)的引導表設在數(shù)據(jù)存儲區(qū),考慮到C5402內(nèi)部只有16K×16的雙存取RAM(DRAM),因此用于程序加載的EEPROM (EEPROM中存放的是系統(tǒng)的引導表)可考慮使用28LV256。如果在設計中,使28LV256(+3.3V供電)占用系統(tǒng)的數(shù)據(jù)空間地址為8000H?觸0FFFFH,那么,C5402在系統(tǒng)引導時需從系統(tǒng)的數(shù)據(jù)地址0FFFEH和0FFFFH得到引導表的起始地址8000H。在設計系統(tǒng)引導表時要注意這兩個單元的內(nèi)容。如果設計EEPROM的首地址(系統(tǒng)引導表的首地址)為0C000H,那么數(shù)據(jù)地址0FFFEH和0FFFFH兩個單元要存放C0和00H,也就是引導表的首地址。在設計中也可以使用其它EEPROM或FLASH,如29LE010(128K×8BIT),但要正確配置它在系統(tǒng)中的地址。引導表的首地址(即EEPROM的在系統(tǒng)中的首地址)是通過系統(tǒng)數(shù)據(jù)地址0FFFEH和0FFFFH決定的,可以是08000H~0FFFDH之間的任意地址,但要保證能夠存儲系統(tǒng)引導表。?

2 建立系統(tǒng)引導表的步驟?

??? 程序經(jīng)過仿真器仿真無誤以后,就要建立引導表,使系統(tǒng)能夠脫機運行。下面介紹建立系統(tǒng)引導表的步驟:?

  (1)編譯文件。編寫完程序代碼以后,對源程序進行編譯,生成.obj 文件,對于C5402,編譯時要采用-V548的編譯描述符。?

  (2)鏈接文件,將.obj文件生成.out文件。.out文件中應包括初始化的段落。如.text,.const,.cinint等。以上兩步在仿真時,也需要執(zhí)行,以便得到仿真用的.out文件。?

  (3)使用數(shù)制轉(zhuǎn)換工具" title="轉(zhuǎn)換工具">轉(zhuǎn)換工具生成.HEX文件或.BIN文件,C40使用的數(shù)制轉(zhuǎn)換工具為hex30.exe,C5402使用數(shù)制轉(zhuǎn)換工具為hex500.exe。根據(jù)所需的系統(tǒng)引導模式為數(shù)制轉(zhuǎn)換工具編寫命令文件,命令文件的編寫很重要,下面分別例舉了C40和C5402系統(tǒng)引導的兩個CMD命令文件。?

  例1:C40系統(tǒng)引導的CMD文件?

myfile.out?????????? ?? /*要進行轉(zhuǎn)化的COFF文件名*/?

-i?????????????????? ?? /*建立INTEL十六進制文件的輸出*/?

-image ???????????????? /*產(chǎn)生ROM所指示的內(nèi)存映射*/?

-o n_t_fcom.hex?????? /*輸出的文件名*/?

-map n_t_hex.map???? /*輸出的 MAP文件名*/?

-romwidth 8?????????? /EEPROM 的數(shù)據(jù)寬度*/?

-cg 000000000H?????? /*全局數(shù)據(jù)總線控制字*/?

-cl 3e3fbfd0H?????? ??? /*本地數(shù)據(jù)總線控制字*/?

-datawidth 32???????? ? /*數(shù)據(jù)寬度*/?

-memwidth 8???????? ??? /*存儲器的寬度*/?

-boot???????????????? /*將所有的輸入文件創(chuàng)建引導表*/?

-bootorg 0000H? ?? /*EPROM的0000H,系統(tǒng)的0030 0000H*/?

-ivtp 00700000H ? ? /*IVTP指針的初始值*/?

-tvtp 00000000H???? /*TVTP指針的初始值*/?

-iack 0300000H????? ??? /*IACK指令的響應地址*/?

-e? 00704000H?????? /*程序的開始執(zhí)行地址*/?

ROMS??????????????? /*ROM的映射范圍*/?

{?

EPROM: org = 00300000h,len = 8000H?

}?

??? 例2:C5402系統(tǒng)引導CMD命令文件?

Myfile.out????? ??? /*要進行轉(zhuǎn)化的COFF文件名*/?

-e 0300H?????? /*程序運行的入口點*/?

-i???????????? /*建立INTEL 十六進制文件的輸出*/?

-boot????????? /*將所有的輸入文件創(chuàng)建引導表*/?

-bootorg? 0000H /*EPROM中引導表的始地址*/?

-memwidth 8??? /*EEPROM的數(shù)據(jù)寬度是8位*/?

-o myfile.hex?? ??? /*輸出的文件名*/?

??? 下面給出操作符的幾點說明:?

  (1)-bootorg 指定引導表的地址,注意這里使用的是0000H,.HEX文件的始地址就是0000H。在C40中,EEPROM28C256的0000H地址單元,在系統(tǒng)中地址是0030 0000H。若改為-bootorg 0030 0000H,在用燒錄" title="燒錄">燒錄器打開.HEX文件時,可以看到起始地址是0030 0000H,若將.HEX文件燒到EEPROM中,需要修改燒錄芯片的起始地址,比較麻煩。但你可以將.HEX文件轉(zhuǎn)化為.BIN文件,則地址就不必修改。?

  (2)輸出文件的格式?

??? -a? ??? 輸出ASCII碼的十六進制文件?

??? -I?? ?? 輸出INTEL十六進制文件?

??? -m1 ??? 輸出Motorola的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個字節(jié)的排放順序;系統(tǒng)引導表的參數(shù):引導表的首地址、程序入口點、各個寄存器的初始值等;源程序中各段的起始地址、大小以及寬度等信息。對照它,就可以確定內(nèi)存資源是否得到了合理的配置和有無地址沖突。?

??? 以下是C40 MAP文件的舉例:?

*********************************************?

TMS320C3x/4x Hex Converter????? Version 5.00?

*********************************************?

?

Fri Jun? 8 09:47:33 2001?

INPUT FILE NAME: ?

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制的文件用hexbin.exe轉(zhuǎn)化為二進制的.BIN文件,再燒錄到芯片中。對于C5402,還需要手動添加EEPROM在系統(tǒng)中的起始地址。如果采用28LV256(32K×8BIT),引導表的首地址為8000H,那么生成的.HEX文件用芯片燒錄器" title="燒錄器">燒錄器加載到燒錄器軟件的內(nèi)存后,手動修改28LV256的7FFEH和7FFFH單元(即系統(tǒng)的FFFEH和FFFFH單元)為80和00H,再燒到芯片中。?

  以上步驟的操作都是在DOS環(huán)境中執(zhí)行的。新版本的DSP開發(fā)軟件可以在WINDOWS環(huán)境中使用,其原理是一樣的,這里不再贅述。?

  源程序數(shù)據(jù)的存儲格式(8位并行裝載)如表2所示,當燒錄時可以對比一下。?

?

?

  本文詳細介紹了C4X和C54XX兩類DSP芯片系統(tǒng)引導的詳細設計步驟,其它型號的DSP也大同小異,如C3X與C4X類似。筆者希望通過共享系統(tǒng)引導的經(jīng)驗,使系統(tǒng)引導不再成為DSP設計中的最大障礙,從而加速DSP的推廣和應用。?

參考文獻?

1 TMS320C4X General-PurposeApplications.Texas Instruments Inc, 1999年5月?

2 TMS320C4x User’s Guide. Texas Instruments Inc,1999年5月?

3 TMS320C54x Assembly Language Tools User’s Guide.Texas Instruments Inc,1998年10月?

4 TMS320C54x DSP CPU and Peripherals. Texas Instruments Inc,1999年4月?

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權者。如涉及作品內(nèi)容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。

相關內(nèi)容