兩類DSP芯片的引導(dǎo)過程分析 作者: 時間:2007-03-09 來源:網(wǎng)絡(luò) 加入技術(shù)交流群 掃碼加入和技術(shù)大咖面對面交流海量資料庫查詢 收藏 摘要:詳細(xì)分析了TI公司TMS320C40和TMS320VC5402兩類DSP芯片的系統(tǒng)引導(dǎo)特點。在了解機(jī)理的基礎(chǔ)上,敘述了工程設(shè)計中創(chuàng)建系統(tǒng)引導(dǎo)表的具體步驟,給出了創(chuàng)建步驟中所需的鍵接文件范例,并進(jìn)行了說明。關(guān)鍵詞:TMS320C40 TMS320VC5402 系統(tǒng)引導(dǎo) 引導(dǎo)表 目前,DSP芯片正逐漸應(yīng)用到電子設(shè)計中,其中應(yīng)用最廣泛的是TI公司生產(chǎn)的DSP系列產(chǎn)品。筆者在工程項目的開發(fā)中,對TMS320C40和TMS320VC5402(以下簡稱C40和C5402)進(jìn)行了系統(tǒng)的研究,并成功的實現(xiàn)了DSP的脫機(jī)運行。本文希望通過對C40和C5402兩種芯片系統(tǒng)引導(dǎo)的描述使大家了解設(shè)計DSP系列引導(dǎo)的步驟,能夠利用DSP設(shè)計自己的設(shè)備。 1 C40和C5402的系統(tǒng)引導(dǎo)機(jī)理 TI公司的每一種DSP產(chǎn)品,都為用戶設(shè)計了多種系統(tǒng)的引導(dǎo)方式,如串口、并行加載、HPI加載等。C40和C5402的引導(dǎo)方式如表1所示。表1 C40和C5402的引導(dǎo)方式 C40C5402程序執(zhí)行地址IIOF3IIOF2IIOF1IIOF010030 0000H1101HPI口引導(dǎo)模式(由INT2引腳識別)24000 0000H1011串行8位EEPROM引導(dǎo)模式(INT3)36000 0000H1001并行引導(dǎo)模式48000 0000H0111標(biāo)準(zhǔn)8位串行口McBPSP15A000 0000H0101標(biāo)準(zhǔn)16位串行口McBPSP26C000 0000H0011I/O口引導(dǎo)模式7RESERVE0001HPI口引導(dǎo)模式(由入口點進(jìn)行識別)8通訊口引導(dǎo)方式1111在工程中,使用最廣泛的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加電時,芯片塞滿到ROMAN引腳為高電平,進(jìn)入微處理器模式。再檢測IIOF3~I(xiàn)IOF0引腳電平,決定系統(tǒng)的引導(dǎo)方式和選擇并行引導(dǎo)的始地址。執(zhí)行程序引導(dǎo)程序時,程序和數(shù)據(jù)存取等時間可以設(shè)置為最長7個等待周期。若軟件延時不夠用,則需要輔助硬件延時等待。程序引導(dǎo)完畢后,會在IACK引腳產(chǎn)生脈沖,使引腳可以作為中斷引腳使用并轉(zhuǎn)入到程序的入口地址開始執(zhí)行程序。 C40由中斷引腳的電平?jīng)Q定系統(tǒng)引導(dǎo)后的程序執(zhí)行地址,或決定是否由通訊口進(jìn)行程序的加載。采用0030 0000H作為主程序的入口地址,即將一片28C256地址設(shè)計為0030 0000H~0030 7FFFH。在系統(tǒng)引導(dǎo)時,需維持IIOF3~I(xiàn)IOF0四個引腳電平為1101。 下面以IIOF2引腳和IIOF1引腳為例,敘述一下系統(tǒng)引導(dǎo)前后的中斷引腳的處理過程。圖1電路是IIOF2引腳的外圍處理電路。在系統(tǒng)加電時,D31A的/PRE=0、/CLR=1,置位端有效,所以Q=1、/IIOF2=1。加電完畢后,/PRE=1、/CLR=1,此時無/IACK信號,Q=1、/IIOF2=1,C40開始程序的加載工作。當(dāng)C40程序加載完畢時,IACK引腳會產(chǎn)生一個脈沖,Q=D=0,/IIOF2=/INT2。C40會轉(zhuǎn)入程序的入口地址執(zhí)行程序,此時D觸發(fā)器電路的工作已經(jīng)完成,C40此時可以處理中斷信號。圖2電路是IIOF1引腳的外圍處理電路。系統(tǒng)引導(dǎo)時,要求/IIOF1引腳電平為低電平。 1.2 C5402并行引導(dǎo)模式 C5402加電時,如果芯片檢測到MP/MC引腳電平為低電平,系統(tǒng)從0FF80H開始執(zhí)行代碼。此處有一個分支指令(廠家編程設(shè)置的),可以跳轉(zhuǎn)到引導(dǎo)程序的開始地址(0F800H)。這個程序可以在引導(dǎo)之前設(shè)置CPU狀態(tài)寄存器的初始值。中斷被全局禁止,OVLY設(shè)置為1,程序和數(shù)據(jù)存取等待時間被設(shè)置為7個等待周期,外部內(nèi)存塊被設(shè)置為4K的WOROS(16BIT),然后開始程序的引導(dǎo)。 當(dāng)C5402檢測到INT2引腳為高電平、INT3引腳為高電平,即兩個引腳都無效時,C5402會轉(zhuǎn)到并行引導(dǎo)方式。并行引導(dǎo)方式是通過擴(kuò)展的內(nèi)存接口從數(shù)據(jù)地址空間讀取所需的引導(dǎo)表,再將代碼傳送到程序存儲區(qū)。并行引導(dǎo)既支持8位的數(shù)據(jù)寬度,也支持16位的數(shù)據(jù)寬度。軟件可編程等待寄存器(SWWSR)和塊切換控制寄存器(BSCR)都可以在這兩種模式中得到設(shè)置。 C5402數(shù)據(jù)存儲區(qū)、程序存儲區(qū)和I/O地址空間,用/DS、/PS和/IS三個引腳信號區(qū)分。系統(tǒng)的引導(dǎo)表設(shè)在數(shù)據(jù)存儲區(qū),考慮到C5402內(nèi)部只有16K%26;#215;16的雙存取RAM(DRAM),因此用于程序加載的EEPROM(EEPROM)中存放的是系統(tǒng)的引導(dǎo)表)可考慮使用28LV256。如果在設(shè)計中,使28LV256(+3.3V供電)占用系統(tǒng)的數(shù)據(jù)空間地址為8000H~0FFFFH,那么,C5402在系統(tǒng)引導(dǎo)時需從系統(tǒng)的數(shù)據(jù)地址0FFFEH和0FFFFH得到引導(dǎo)表的起始地址8000H。在設(shè)計系統(tǒng)引導(dǎo)表時要注意這兩個單元的內(nèi)容。如果設(shè)計EEPROM的首地址(系統(tǒng)引導(dǎo)表的首地址)為0C000H,那么數(shù)據(jù)地址0FFFEH和0FFFFH兩個單元要存放C0和00H,也就是引導(dǎo)表的首地址。在設(shè)計中也可以使用其它EEPROM或FLASH,如29LE010(128K%26;#215;8BIT),但要正確配置它在系統(tǒng)中的地址。引導(dǎo)表的首地址(即EEPROM的在系統(tǒng)中的首地址)是通過系統(tǒng)數(shù)據(jù)地址0FFFEH和0FFFFH決定的,可以是08000H~0FFFDH之間的任意地址,但要保證能夠存儲系統(tǒng)引導(dǎo)表。2 建立系統(tǒng)引導(dǎo)表的步驟 程序經(jīng)過仿真器仿真無誤以后,就要建立引導(dǎo)表,使系統(tǒng)能夠脫機(jī)運行。下面介紹建立系統(tǒng)引導(dǎo)表的步驟: (1)編譯文件。編寫完程序代碼以后,對源程序進(jìn)行編譯,生成.obj文件,對于C5402,編譯時要采用-V548的編譯描述符。 (2)鏈接文件,將.obj文件生成.out文件。.out文件中應(yīng)包括初始化的段落。如.text,.const,.cinint等。以上兩步在仿真時,也需要執(zhí)行,以便得到仿真用的.out文件。 (3)使用數(shù)制轉(zhuǎn)換工具生成.HEX文件或.BIN文件,C40使用的數(shù)據(jù)轉(zhuǎn)換工具為hex30.exe,C5402使用數(shù)制轉(zhuǎn)換工具編寫命令文件,命令文件的編寫很重要,下面分別例舉了C40和C5402系統(tǒng)引導(dǎo)的兩個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 /*本地數(shù)據(jù)總線控制字*/ -datawidth 32 /*數(shù)據(jù)寬度*/ -memwidth 8 /*存儲器的寬度*/ -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 /*程序的開始執(zhí)行地址*/ ROMS /*ROM的映射范圍*/ { EPROM:org=00300000h,len=8000H } 例2:C5402系統(tǒng)引導(dǎo)CMD命令文件 Myfile.out /*要進(jìn)行轉(zhuǎn)化的COFF文件名*/ -e 0300H /*程序運行的入口點*/ -i /*建立INTEL十六進(jìn)制文件的輸出*/ -boot /*將所有的輸入文件創(chuàng)建引導(dǎo)表*/ -bootorg 0000H /*EPROM中引導(dǎo)表的始地址*/ -memwidth 8 /*EEPROM的數(shù)據(jù)寬度是8位*/ -o myfile.hex /*輸出的文件名*/ 下面給出操作符的幾點說明: (1)-bootorg指定引導(dǎo)表的地址,注意這里使用的是0000H,.HEX文件的始地址就是0000H。在C40中,EEPROM28C256的0000H地址單元,在系統(tǒng)中地址是0030 0000H。若改為-bootorg 0030 0000H,在用燒錄器打開.HEX文件時,可以看到起始地址是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個字節(jié)的排放順序;系統(tǒng)引導(dǎo)表的參數(shù):引導(dǎo)表的首地址、程序入口點、各個寄存器的初始值等;源程序中各段的起始地址、大小以及寬度等信息。對照它,就可以確定內(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(jìn)制的文件用hexbin.exe轉(zhuǎn)化為二進(jìn)制的.BIN文件,再燒錄到芯片中。對于C5402,還需要手動添加EEPROM在系統(tǒng)中的起始地址。如果采用28LV256(32K%26;#215;8BIT),引導(dǎo)表的首地址為8000H,那么生成的.HEX文件用芯片燒錄器加載到燒錄器軟件的內(nèi)存后,手動修改28LV256的7FFEH和7FFFH單元(即系統(tǒng)的FFFEH和FFFFH單元)為80和00H,再繞到芯片中。 以上步驟的操作都是在DOS環(huán)境中執(zhí)行的。新版本的DSP開發(fā)軟件可以在WINDOWS環(huán)境中使用,其原理是一樣的,這里不再多述。 源程序數(shù)據(jù)的存儲格式(8位并行裝載)如表2所示,當(dāng)燒錄時可以對比一下。表2 源程序數(shù)據(jù)的儲存格式 C40引導(dǎo)程序C5402引導(dǎo)程序表格內(nèi)存寬度(00000008H)32全局?jǐn)?shù)據(jù)總線控制字32本地數(shù)據(jù)總線控制字32第一段的存儲空間范圍32第一段程序的目的地址32程序代碼(1)32……程序代碼(N)32……最后一段的存儲空間范圍32最后一段程序的目的地址32程序代碼(1)32……程序代碼(N)320000 0000H程序塊裝載結(jié)束標(biāo)志IVTPTVTPIACK指令的響應(yīng)地址0030 0000HC8AAH16軟件可編程等待狀態(tài)寄存器的初值SWWSR16塊切換控制寄存器的初值BSCR16XPC16PC16第一段的存儲空間范圍16第一段的目的(XPC)16第一段的目的地址(PC)16程序代碼(1)16……程序代碼(N)16……最后一段的存儲空間范圍16最后一段的目的(XPC)16最后一段的目的地址(PC)16程序代碼(1)16……程序代碼(N)160000(指示引導(dǎo)表格的結(jié)束)本文詳細(xì)介紹了C4X和C54XX兩類DSP芯片系統(tǒng)引導(dǎo)的詳細(xì)設(shè)計步驟,其它型號的DSP也大同小異,如C3X與C4X類似。筆者希望通過共享系統(tǒng)引導(dǎo)的經(jīng)驗,使系統(tǒng)引導(dǎo)不再成為DSP設(shè)計中的最大障礙,從而加速DSP的抗推廣和使用。
評論