一種雙DSP系統(tǒng)串行引導(dǎo)方案的實(shí)現(xiàn)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
在某型光電跟蹤產(chǎn)品中,由于需要對(duì)抗各種人工干擾和背景干擾,使得導(dǎo)引系統(tǒng)需要處理的信息量成倍增加,對(duì)導(dǎo)引系統(tǒng)的實(shí)時(shí)處理性能提出了更高的要求。針對(duì)這種情況,導(dǎo)引系統(tǒng)采用了雙DSP系統(tǒng)的信息處理方案,DSP選用AD公司的ADSP218x和TI公司的TMS320C62x。ADSP218x進(jìn)行目標(biāo)信號(hào)的采樣和外圍控制信號(hào)的輸入、輸出,TMS320C62x專門進(jìn)行目標(biāo)的鑒相、各種抗干擾算法的計(jì)算,這樣TMS320C62x不受外設(shè)服務(wù)中斷影響,可以更好地發(fā)揮計(jì)算效率,提高了導(dǎo)引系統(tǒng)的實(shí)時(shí)處理性能。本文針對(duì)ADSP218x系列和TMS320C62x系列組成的雙DSP系統(tǒng),提出了一種串行引導(dǎo)方案,同時(shí)給出了其硬件及軟件的具體實(shí)現(xiàn)方法。
1 DSP引導(dǎo)模式
1.1 TMS320C62x引導(dǎo)模式
TMS320C62x系列DSP提供了三種引導(dǎo)方式:
(1)無引導(dǎo)過程:DSP直接從地址0開始執(zhí)行代碼;
(2)ROM方式引導(dǎo):由DMA/EDMA控制器從外部CE1空間中的ROM中拷貝固定數(shù)量的代碼到地址0,啟動(dòng)時(shí)也可選擇ROM的寬度,拷貝結(jié)束后,CPU從地址0開始運(yùn)行;
(3)HPI方式引導(dǎo):由外部主機(jī)通過HPI對(duì)芯片的存儲(chǔ)器空間進(jìn)行初始化,初始化結(jié)束后,外部主機(jī)通過HPI中斷喚醒TMS320C62x,CPU開始從地址0運(yùn)行。
所有這些設(shè)置項(xiàng)都是在芯片復(fù)位的時(shí)候才進(jìn)行檢查。一旦復(fù)位信號(hào)有效(reset=0),所有的三態(tài)輸出管腳恢復(fù)為默認(rèn)狀態(tài),然后在reset信號(hào)的上升沿處檢查設(shè)置管腳BOOTMODE[4:0]的狀態(tài),自舉邏輯開始生效。
1.2 ADSP218x引導(dǎo)模式
ADSP218x系列DSP提供了三種引導(dǎo)方式:
(1)無引導(dǎo)過程:DSP直接從地址0開始執(zhí)行代碼;
(2)BDMA方式引導(dǎo):復(fù)位后DSP以BDMA方式首先從字節(jié)存儲(chǔ)空間拷貝前32字的程序代碼,拷貝完程序從程序存儲(chǔ)地址0開始執(zhí)行代碼。
(3)IDMA方式引導(dǎo):復(fù)位后DSP以IDMA方式可以存取任意數(shù)量的內(nèi)部存儲(chǔ)空間,當(dāng)內(nèi)部程序存儲(chǔ)地址0被寫入時(shí),程序從程序存儲(chǔ)地址0開始執(zhí)行代碼。
以上設(shè)置都是在芯片復(fù)位的時(shí)候才進(jìn)行檢查,當(dāng)復(fù)位信號(hào)有效時(shí)(reset=0),所有的三態(tài)輸出管腳恢復(fù)為默認(rèn)狀態(tài),然后在reset信號(hào)的上升沿處檢查設(shè)置管腳MODE[A:D]的狀態(tài),自舉邏輯開始生效。
1.3 雙DSP系統(tǒng)串行引導(dǎo)模式
根據(jù)以上兩種DSP的引導(dǎo)模式,選用串行引導(dǎo)模式,即把TMS320C62x作為主處理機(jī),外圍接8位寬的FLASH,采用ROM方式引導(dǎo),TMS320C62x和AD-SP218x的程序都固化在FLASH中,ADSP218x作為從處理機(jī),采用IDMA方式引導(dǎo),并且兩個(gè)DSP之間的通訊也采用IDMA方式。這樣TMS320C62x可以把ADSP218x作為一個(gè)存儲(chǔ)區(qū)來訪問,既去掉了握手軟件,提高了工作效率,又可以去掉ADSP218x外圍的FLASH,減少了硬件花銷。主要硬件連接示意圖如圖1所示。
雙DSP系統(tǒng)串行引導(dǎo)的過程如下:系統(tǒng)上電后,TMS320C62x從位于CE1空間FLASH中以ROM引導(dǎo)的方式復(fù)制一定數(shù)量的TMS320C62x程序至地址為Ox00000000的內(nèi)部程序存儲(chǔ)空間。當(dāng)程序復(fù)制完畢后,TMS320C62x開始從0x00000000起始的程序地址開始執(zhí)行程序,利用這段程序,把剩下的程序從FLASH中讀出,TMS320C62x進(jìn)入到正常工作狀態(tài)。然后TMS320C62x負(fù)責(zé)將存儲(chǔ)在FLASH中的ADSP218x的運(yùn)行程序讀出,通過IDMA接口發(fā)送至ADSP218x的片內(nèi)PM存儲(chǔ)區(qū),執(zhí)行對(duì)ADSP218x的程序裝載。當(dāng)ADSP218x引導(dǎo)完畢后,ADSP218x運(yùn)行裝入的程序進(jìn)入正常的工作狀態(tài),至此系統(tǒng)串行引導(dǎo)完畢。
2 雙DSP系統(tǒng)串行引導(dǎo)的實(shí)現(xiàn)
2.1 硬件連接
TMS320C62x的低16位數(shù)據(jù)線ED15~0與ADSP218x的IAD15~0連接,TMS320C62X的低8位數(shù)據(jù)線ED7~0與FLASH的數(shù)據(jù)線D7~0連接。TMS320C62x的BOOTMODE[4:0]引腳配置如下:
由于TMS320C62x與ADSP218x的IDMA通訊控制需要譯碼,因此加了一片CPLD,硬件連接圖如圖2所示。片內(nèi)的邏輯方程為:
2.2 TMS320C62x啟動(dòng)程序代碼的創(chuàng)建
TMS320C62x啟動(dòng)程序代碼包含以下幾個(gè)部分。
2.2.1 中斷向量表vectors.a(chǎn)sm
中斷向量表缺省保存在TMS320C62x內(nèi)部RAM的從0地址開始長度為0x200字節(jié)的空間,上電或復(fù)位后,芯片自動(dòng)運(yùn)行復(fù)位中斷。因此,復(fù)位中斷向量中應(yīng)包含跳轉(zhuǎn)到引導(dǎo)程序(_boot)的語句,引導(dǎo)程序的主體在boot.a(chǎn)sm中定義。部分程序如下:
2.2.2 自引導(dǎo)的匯編程序boot.a(chǎn)sm
自引導(dǎo)匯編程序主要是配置基本的寄存器,并將保存在外部FLASH中的二進(jìn)制程序拷貝到DSP內(nèi)部的RAM中再執(zhí)行。匯編程序如下:
2.2.3 主程序main.c
主程序是DSP要實(shí)現(xiàn)具體功能的主體,其定義的主函數(shù)main()經(jīng)編譯后在函數(shù)_c_int00中調(diào)用,因此在上面的引導(dǎo)程序結(jié)束時(shí),將跳轉(zhuǎn)到函數(shù)_c_int00,即主函數(shù)main執(zhí)行。另外在主程序中,還要包含把ADSP218x的應(yīng)用程序從FLASH傳送到ADSP218x內(nèi)部存儲(chǔ)區(qū)的子程序。
[!--empirenews.page--]2.2.4 鏈接命令程序link.cmd
鏈接命令程序用于定義DSP系統(tǒng)各存儲(chǔ)區(qū)的開始地址及大小,并分配編譯后各段到相應(yīng)的存儲(chǔ)空間,link.cmd內(nèi)容如下:
2.3 TMS320C62X通過IDMA接口把ADSP218x程序拷貝到內(nèi)部存儲(chǔ)器的方法
從TMS320C62x來看,IDMA接口只有三個(gè)寄存器,分別是IDMA控制寄存器IDMA_IAL,IDMA讀數(shù)據(jù)寄存器IDMA_IRD和IDMA寫數(shù)據(jù)寄存器ID-MA_IWR。
該三個(gè)寄存器的定義如下:
訪問ADSP218x的內(nèi)存單元一般需要三個(gè)步驟:
第一步:向IDMA控制寄存器寫該數(shù)據(jù)單元所在的頁面。編程只需要向IDMA_IAL控制寄存器寫入恰當(dāng)控制字即可。例如要向APSP218x的PM區(qū)的第5頁寫數(shù)據(jù),則應(yīng)該有下面的命令:
IDMA_IAL=0x8050;
第二步:向IDMA控制寄存器寫該數(shù)據(jù)的地址。
如果是PM區(qū),則該數(shù)據(jù)的地址為當(dāng)前地址,如果是DM區(qū),必須將當(dāng)前地址加0x4000。例如要向PM區(qū)的0x0809區(qū)寫數(shù)據(jù),則應(yīng)該有下面的命令:
IDMA_IAL=0x0809;
如果向DM區(qū)寫數(shù)據(jù),則有命令:
IDMA_IAL=0x0809+0x4000;
第三步:讀寫數(shù)據(jù)。如果是讀數(shù)據(jù),例如要將數(shù)據(jù)讀入到unsigned short XX單元,則應(yīng)該用下面的命令:
XX=(unsigned short)IDMA_IRD;
如果是寫數(shù)據(jù),例如要將數(shù)據(jù)unsigned short YY寫入某地址單元,則應(yīng)該用下面的命令I(lǐng)DMA_IWR=YY;
注意以后每讀取或?qū)憯?shù)據(jù),IDMA接口的地址指針自動(dòng)加1。
TMS320C62x通過IDMA口,在啟動(dòng)后把AD-SP218x的應(yīng)用程序拷貝到ADSP218x的內(nèi)部存儲(chǔ)器中。ADSP218x的應(yīng)用程序作為一個(gè)asm文件供TMS320C62x應(yīng)用軟件調(diào)用,具體格式為:
2.4 FLASH的在線燒寫
上面的工程文件經(jīng)CCS系統(tǒng)編譯、匯編后生成可執(zhí)行COFF文件(.out),它需要轉(zhuǎn)換成可供CCS調(diào)用的數(shù)據(jù)文件,通過JTAG口在線寫入到FLASH中。利用TI公司的HEX6x.exe工具,將生成的.out文件轉(zhuǎn)化成.hex輸出文件。由于該HEX6x.exe工具是提供給EPROM編程器的,用EPROM編程器可直接燒寫.hex文件。但對(duì)于FLASH的在線系統(tǒng)編程來說,生成的.hex文件不能直接使用,必須再編寫一段程序?qū)ⅲ甴ex的文件頭去掉,分離出數(shù)據(jù)文件,最后才能由FLASH的在線燒寫程序?qū)⒆罱K的數(shù)據(jù)文件燒寫到FLASH中。
hex6x命令行的格式為:
命令執(zhí)行后會(huì)產(chǎn)生三個(gè)文件,這三個(gè)文件再經(jīng)過轉(zhuǎn)換融合成一個(gè)文件flash.a(chǎn)sm,格式如下:
3 結(jié) 語
該系統(tǒng)經(jīng)過單板和整機(jī)的高低溫、振動(dòng)、電磁兼容試驗(yàn)驗(yàn)證,系統(tǒng)在上電后能夠100%的正常啟動(dòng),性能穩(wěn)定。該方法為編寫由TMS320C62x和ADSP218x組成的雙DSP系統(tǒng)的引導(dǎo)程序拓寬了思路,其設(shè)計(jì)思想對(duì)其他型號(hào)組成的雙DSP系統(tǒng)的設(shè)計(jì)也具有借鑒意義。