張 華
(武漢理工大學信息工程學院,湖北武漢 430070)
Texas Instruments(TI)公司生產的 C54x系列Digital Signal Processor(DSP)以其低價且高效的特點得到了廣泛應用。傳統的DSP程序開發流程是:使用仿真器對DSP目標板進行一對一程序調試,調試通過之后使用仿真器將自舉表下載到DSP外掛存儲器,使DSP脫機運行。在DSP多處理器協同工作的場合,如果使每塊DSP目標板分別通過一個仿真器連接電腦進行調試,就要添置與DSP目標板相同數目的電腦與仿真器,增加了開發成本。因此,低成本的DSP多目標板程序下載方案具有現實意義。
多目標板程序下載方案利用了計算機資源豐富的USB口,在基于USB接口的單目標板程序下載方案基礎上實現。DSP多目標板程序下載方案如圖1所示。

圖1 DSP多目標板程序下載方案框圖
在圖1中,將需要同時調試的多塊DSP目標板通過DSP程序下載器連接起來,計算機再通過USB線連接各DSP程序下載器。加電初始化后,通過操作上位機的“下載軟件”,先給”DSP目標板1”下載;等其下載完畢,再給“DSP目標板2”下載;依次類推。所有DSP目標板程序下載完畢后,如果要單獨調試某一DSP目標板,再對其下載新的程序即可。
DSP程序下載器利用了C54x系列DSP具有的HPI Bootloaer功能接口進行設計[1],具有連接計算機與DSP目標板的功能,如圖2所示。

圖2 DSP程序下載器框圖
為簡化通信協議,讓DSP程序下載器中的單片機只實現數據轉換功能,而計算機完成DSP自舉表加載功能。為方便DSP目標板的調試,本方案讓“下載軟件”一步到位完成如下功能:目標板復位、.out文件轉化成.hex目標格式文件、將.hex目標格式文件轉換成DSP自舉表、通過下載器對DSP目標板進行自舉表加載。使用者只需在DSP編譯平臺Code Composer Studio(CCS)中編譯DSP源程序,并操作“下載軟件”即可,如圖3所示。

圖3 DSP單目標板程序下載流程
如圖2所示,DSP的HPI接口有數據端和控制端兩種,而UART通信一般是8位的。所以要約定計算機與程序下載器中單片機的UART通信協議,以區分傳輸中的UART信號是控制命令還是數據。簡單通信協議為:“下載軟件”與單片機初始化后,計算機傳輸的UART信號,每3 Byte為一組;每一組第1 Byte代表控制命令,第2 Byte代表 HPI第1 Byte,第3 Byte代表HPI第2 Byte;單片機接收完3 Byte后,即對DSP進行一次HPI讀寫操作。
為防止計算機UART信號發送過快,而單片機接收不過來導致丟包現象,需要建立一種簡單的UART軟件握手協議[2]。計算機或單片機在發送完一幀UART數據后,都要在收到對方的UART信號后才發下一幀UART數據。對單片機來說,計算機發來的UART信號既是有效信號,也是確認信號;而對于計算機來說,只有計算機在進行“HPI讀取”操作時,單片機發來的UART信號才包含了有用信息,其他情況都僅當做確認信號。
計算機與程序下載器中單片機的UART通信協議如圖4所示。
圖4中“HPIC”代表計算機發給單片機的“HPI控制信號”數據;“HPID1”與“HPID2”分別代表計算機發給單片機的“HPI第一字節”數據與“HPI第二字節”數據;而“ACK”代表單片機發給計算機的“確認”數據。

圖4 計算機與單片機的UART通信協議
CCS提供了一個名為“hex500”的軟件,配合一定的計算機CMD命令,就可以將.out文件轉化成.hex目標格式文件[3]。
關于.hex目標格式的確定,依據如下:
(1)hex500需要確切的輸入文件名才能正常運行,為了兼顧命名多樣化的.out文件與“下載軟件”人機界面簡潔的操作,“下載軟件”在找到所需的.out文件后,統一復制成“asm.out”文件,同時讓hex500只對“asm.out”文件進行操作。
(2)單片機大多是8位,為兼容C5402等8位HPI接口的DSP,自舉表采用8位數據長度。
(3)目前單片機對DSP進行HPI BootLoader的成熟方案[4]皆生成 Intel MCS -86 目標格式文件[5],為便于程序的快速移植,采用Intel MCS-86目標格式。
(4)為精簡“下載軟件”的人機交互界面,自舉表起始地址統一設為0x80,這一點在配置DSP工程的cmd文件中需要注意。
確定了目標格式之后,在“下載軟件”源程序中,采用如下代碼完成.out文件向.hex目標格式文件的轉化:system("hex500 asm.out-i-o asm.hex-e 0x80-romwidth 16")。
Intel MCS-86目標格式[6]如圖5所示。
對比圖5,進行如下方式組織DSP自舉表:
(1)按字節讀取.hex目標格式文件,然后進行判斷,如果是代表十六進制數字的字符,則裝載進字符緩存,其他的不裝載。
(2)將字符緩存中的ASCII碼轉化成8位BCD碼,然后將8位BCD碼兩兩組合成整型數據,放進數據緩存。
(3)讀取數據緩存中第一字并判斷,如果為0則退出,否則作為數據長度;接下來的第二個字是自舉表寫入DSP的首地址;再接下來就是要寫入DSP相應地址的數據,省略了地址信息,默認是在首地址基礎上依次加1。
(4)最后將 0x0080寫入 DSP的 0x007f單元,DSP處理器收到此信號即開始脫機運行。

圖5 Intel MCS-86目標格式
運行名為“UART DSP ISP”的“下載軟件”,在“Comm Num”編輯框中輸入相應的串口號,再點擊“Comm Connect”按鈕以連接計算機與DSP目標板,如圖6所示。單擊“Select”按鍵,出現“打開”對話框,操作者只要選擇經過CCS編譯生成的.out文件即可,如圖7所示。


點擊“Load”下載程序到DSP目標板。此DSP程序下載器會在下載程序前給DSP目標板一個復位信號,因此不需要再手動復位DSP處理器。
若要觀察DSP處理器RAM中的數據,可在操作界面“Start Address”文字下面的編輯框內輸入十六進制的起始地址,“End Address”文字下面的編輯框內輸入十六進制的終止地址,再點擊“HPI Read”按鍵即可,相應的數據將會在“Receive”列表框內顯示。若要清除“Receive”列表框內的數據,只要單擊“Clear Edit Box”即可,如圖8所示。
在“Start Address”文字下面的編輯框內輸入十六進制的起始地址,在“Send”編輯框中輸入十六進制的數據,點擊“HPI write”按鍵,即可將“Send”編輯框中的數據寫進DSP,起始地址為“Start Address”文字下面編輯框中的數據,如圖9所示。


DSP多目標板程序下載方案已應用于某數碼鋼琴集體課組網的項目,節省了仿真器與電腦的使用,將開發成本降低了一半多。此方案也可以用于DSP單目標板程序下載,或者移植到采用單片機Bootloader方案的DSP板中去,為DSP初學者降低學習投資。
[1] 劉曉杰,顧海軍,趙曉暉.基于 DSP主機接口的程序自舉設計與實現[J].吉林大學學報:信息科學版,2007(1):6-11.
[2] 趙忠彪,張元敏,高榮.握手式通信協議在遠程抄表系統中的應用[J].繼電器,2008(4):76-78.
[3] 陶銳,周學軍.數字信號處理器(DSP)自舉加載技術的應用[J].電子測量技術,2006(6):67-69.
[4] 曾浩,劉玲,曹海林.54xDSP的HPI自舉新方法[J].實驗室研究與探索,2007(1):68-70.
[5] 鄒翼,曾文海,陳續喜.基于TMS320VC5402 DSP的HPI方式自舉的設計與實現[J].計算機系統應用,2009,18(3):152-155.
[6] 劉益成.TMS320C54x DSP應用程序設計與開發[M].北京:北京航空航天大學出版社,2002.