張 華
(武漢理工大學(xué)信息工程學(xué)院,湖北武漢 430070)
Texas Instruments(TI)公司生產(chǎn)的 C54x系列Digital Signal Processor(DSP)以其低價(jià)且高效的特點(diǎn)得到了廣泛應(yīng)用。傳統(tǒng)的DSP程序開(kāi)發(fā)流程是:使用仿真器對(duì)DSP目標(biāo)板進(jìn)行一對(duì)一程序調(diào)試,調(diào)試通過(guò)之后使用仿真器將自舉表下載到DSP外掛存儲(chǔ)器,使DSP脫機(jī)運(yùn)行。在DSP多處理器協(xié)同工作的場(chǎng)合,如果使每塊DSP目標(biāo)板分別通過(guò)一個(gè)仿真器連接電腦進(jìn)行調(diào)試,就要添置與DSP目標(biāo)板相同數(shù)目的電腦與仿真器,增加了開(kāi)發(fā)成本。因此,低成本的DSP多目標(biāo)板程序下載方案具有現(xiàn)實(shí)意義。
多目標(biāo)板程序下載方案利用了計(jì)算機(jī)資源豐富的USB口,在基于USB接口的單目標(biāo)板程序下載方案基礎(chǔ)上實(shí)現(xiàn)。DSP多目標(biāo)板程序下載方案如圖1所示。
圖1 DSP多目標(biāo)板程序下載方案框圖
在圖1中,將需要同時(shí)調(diào)試的多塊DSP目標(biāo)板通過(guò)DSP程序下載器連接起來(lái),計(jì)算機(jī)再通過(guò)USB線連接各DSP程序下載器。加電初始化后,通過(guò)操作上位機(jī)的“下載軟件”,先給”DSP目標(biāo)板1”下載;等其下載完畢,再給“DSP目標(biāo)板2”下載;依次類推。所有DSP目標(biāo)板程序下載完畢后,如果要單獨(dú)調(diào)試某一DSP目標(biāo)板,再對(duì)其下載新的程序即可。
DSP程序下載器利用了C54x系列DSP具有的HPI Bootloaer功能接口進(jìn)行設(shè)計(jì)[1],具有連接計(jì)算機(jī)與DSP目標(biāo)板的功能,如圖2所示。
圖2 DSP程序下載器框圖
為簡(jiǎn)化通信協(xié)議,讓DSP程序下載器中的單片機(jī)只實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)換功能,而計(jì)算機(jī)完成DSP自舉表加載功能。為方便DSP目標(biāo)板的調(diào)試,本方案讓“下載軟件”一步到位完成如下功能:目標(biāo)板復(fù)位、.out文件轉(zhuǎn)化成.hex目標(biāo)格式文件、將.hex目標(biāo)格式文件轉(zhuǎn)換成DSP自舉表、通過(guò)下載器對(duì)DSP目標(biāo)板進(jìn)行自舉表加載。使用者只需在DSP編譯平臺(tái)Code Composer Studio(CCS)中編譯DSP源程序,并操作“下載軟件”即可,如圖3所示。
圖3 DSP單目標(biāo)板程序下載流程
如圖2所示,DSP的HPI接口有數(shù)據(jù)端和控制端兩種,而UART通信一般是8位的。所以要約定計(jì)算機(jī)與程序下載器中單片機(jī)的UART通信協(xié)議,以區(qū)分傳輸中的UART信號(hào)是控制命令還是數(shù)據(jù)。簡(jiǎn)單通信協(xié)議為:“下載軟件”與單片機(jī)初始化后,計(jì)算機(jī)傳輸?shù)腢ART信號(hào),每3 Byte為一組;每一組第1 Byte代表控制命令,第2 Byte代表 HPI第1 Byte,第3 Byte代表HPI第2 Byte;單片機(jī)接收完3 Byte后,即對(duì)DSP進(jìn)行一次HPI讀寫操作。
為防止計(jì)算機(jī)UART信號(hào)發(fā)送過(guò)快,而單片機(jī)接收不過(guò)來(lái)導(dǎo)致丟包現(xiàn)象,需要建立一種簡(jiǎn)單的UART軟件握手協(xié)議[2]。計(jì)算機(jī)或單片機(jī)在發(fā)送完一幀UART數(shù)據(jù)后,都要在收到對(duì)方的UART信號(hào)后才發(fā)下一幀UART數(shù)據(jù)。對(duì)單片機(jī)來(lái)說(shuō),計(jì)算機(jī)發(fā)來(lái)的UART信號(hào)既是有效信號(hào),也是確認(rèn)信號(hào);而對(duì)于計(jì)算機(jī)來(lái)說(shuō),只有計(jì)算機(jī)在進(jìn)行“HPI讀取”操作時(shí),單片機(jī)發(fā)來(lái)的UART信號(hào)才包含了有用信息,其他情況都僅當(dāng)做確認(rèn)信號(hào)。
計(jì)算機(jī)與程序下載器中單片機(jī)的UART通信協(xié)議如圖4所示。
圖4中“HPIC”代表計(jì)算機(jī)發(fā)給單片機(jī)的“HPI控制信號(hào)”數(shù)據(jù);“HPID1”與“HPID2”分別代表計(jì)算機(jī)發(fā)給單片機(jī)的“HPI第一字節(jié)”數(shù)據(jù)與“HPI第二字節(jié)”數(shù)據(jù);而“ACK”代表單片機(jī)發(fā)給計(jì)算機(jī)的“確認(rèn)”數(shù)據(jù)。
圖4 計(jì)算機(jī)與單片機(jī)的UART通信協(xié)議
CCS提供了一個(gè)名為“hex500”的軟件,配合一定的計(jì)算機(jī)CMD命令,就可以將.out文件轉(zhuǎn)化成.hex目標(biāo)格式文件[3]。
關(guān)于.hex目標(biāo)格式的確定,依據(jù)如下:
(1)hex500需要確切的輸入文件名才能正常運(yùn)行,為了兼顧命名多樣化的.out文件與“下載軟件”人機(jī)界面簡(jiǎn)潔的操作,“下載軟件”在找到所需的.out文件后,統(tǒng)一復(fù)制成“asm.out”文件,同時(shí)讓hex500只對(duì)“asm.out”文件進(jìn)行操作。
(2)單片機(jī)大多是8位,為兼容C5402等8位HPI接口的DSP,自舉表采用8位數(shù)據(jù)長(zhǎng)度。
(3)目前單片機(jī)對(duì)DSP進(jìn)行HPI BootLoader的成熟方案[4]皆生成 Intel MCS -86 目標(biāo)格式文件[5],為便于程序的快速移植,采用Intel MCS-86目標(biāo)格式。
(4)為精簡(jiǎn)“下載軟件”的人機(jī)交互界面,自舉表起始地址統(tǒng)一設(shè)為0x80,這一點(diǎn)在配置DSP工程的cmd文件中需要注意。
確定了目標(biāo)格式之后,在“下載軟件”源程序中,采用如下代碼完成.out文件向.hex目標(biāo)格式文件的轉(zhuǎn)化:system("hex500 asm.out-i-o asm.hex-e 0x80-romwidth 16")。
Intel MCS-86目標(biāo)格式[6]如圖5所示。
對(duì)比圖5,進(jìn)行如下方式組織DSP自舉表:
(1)按字節(jié)讀取.hex目標(biāo)格式文件,然后進(jìn)行判斷,如果是代表十六進(jìn)制數(shù)字的字符,則裝載進(jìn)字符緩存,其他的不裝載。
(2)將字符緩存中的ASCII碼轉(zhuǎn)化成8位BCD碼,然后將8位BCD碼兩兩組合成整型數(shù)據(jù),放進(jìn)數(shù)據(jù)緩存。
(3)讀取數(shù)據(jù)緩存中第一字并判斷,如果為0則退出,否則作為數(shù)據(jù)長(zhǎng)度;接下來(lái)的第二個(gè)字是自舉表寫入DSP的首地址;再接下來(lái)就是要寫入DSP相應(yīng)地址的數(shù)據(jù),省略了地址信息,默認(rèn)是在首地址基礎(chǔ)上依次加1。
(4)最后將 0x0080寫入 DSP的 0x007f單元,DSP處理器收到此信號(hào)即開(kāi)始脫機(jī)運(yùn)行。
圖5 Intel MCS-86目標(biāo)格式
運(yùn)行名為“UART DSP ISP”的“下載軟件”,在“Comm Num”編輯框中輸入相應(yīng)的串口號(hào),再點(diǎn)擊“Comm Connect”按鈕以連接計(jì)算機(jī)與DSP目標(biāo)板,如圖6所示。單擊“Select”按鍵,出現(xiàn)“打開(kāi)”對(duì)話框,操作者只要選擇經(jīng)過(guò)CCS編譯生成的.out文件即可,如圖7所示。
點(diǎn)擊“Load”下載程序到DSP目標(biāo)板。此DSP程序下載器會(huì)在下載程序前給DSP目標(biāo)板一個(gè)復(fù)位信號(hào),因此不需要再手動(dòng)復(fù)位DSP處理器。
若要觀察DSP處理器RAM中的數(shù)據(jù),可在操作界面“Start Address”文字下面的編輯框內(nèi)輸入十六進(jìn)制的起始地址,“End Address”文字下面的編輯框內(nèi)輸入十六進(jìn)制的終止地址,再點(diǎn)擊“HPI Read”按鍵即可,相應(yīng)的數(shù)據(jù)將會(huì)在“Receive”列表框內(nèi)顯示。若要清除“Receive”列表框內(nèi)的數(shù)據(jù),只要單擊“Clear Edit Box”即可,如圖8所示。
在“Start Address”文字下面的編輯框內(nèi)輸入十六進(jìn)制的起始地址,在“Send”編輯框中輸入十六進(jìn)制的數(shù)據(jù),點(diǎn)擊“HPI write”按鍵,即可將“Send”編輯框中的數(shù)據(jù)寫進(jìn)DSP,起始地址為“Start Address”文字下面編輯框中的數(shù)據(jù),如圖9所示。
DSP多目標(biāo)板程序下載方案已應(yīng)用于某數(shù)碼鋼琴集體課組網(wǎng)的項(xiàng)目,節(jié)省了仿真器與電腦的使用,將開(kāi)發(fā)成本降低了一半多。此方案也可以用于DSP單目標(biāo)板程序下載,或者移植到采用單片機(jī)Bootloader方案的DSP板中去,為DSP初學(xué)者降低學(xué)習(xí)投資。
[1] 劉曉杰,顧海軍,趙曉暉.基于 DSP主機(jī)接口的程序自舉設(shè)計(jì)與實(shí)現(xiàn)[J].吉林大學(xué)學(xué)報(bào):信息科學(xué)版,2007(1):6-11.
[2] 趙忠彪,張?jiān)簦邩s.握手式通信協(xié)議在遠(yuǎn)程抄表系統(tǒng)中的應(yīng)用[J].繼電器,2008(4):76-78.
[3] 陶銳,周學(xué)軍.數(shù)字信號(hào)處理器(DSP)自舉加載技術(shù)的應(yīng)用[J].電子測(cè)量技術(shù),2006(6):67-69.
[4] 曾浩,劉玲,曹海林.54xDSP的HPI自舉新方法[J].實(shí)驗(yàn)室研究與探索,2007(1):68-70.
[5] 鄒翼,曾文海,陳續(xù)喜.基于TMS320VC5402 DSP的HPI方式自舉的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2009,18(3):152-155.
[6] 劉益成.TMS320C54x DSP應(yīng)用程序設(shè)計(jì)與開(kāi)發(fā)[M].北京:北京航空航天大學(xué)出版社,2002.