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