引言
隨著智能電網的建設、實施和物聯(lián)網的普及應用,越來越多的終端設備通過網絡實現遠程的數據采集,這些數據終端數量眾多,分布范圍廣。當這些終端設備中的MCU應用軟件發(fā)現BUG,或需要對MCU應用軟件進行升級則是一件非常麻煩、艱巨的任務。如果能夠通過網絡或串行接口實現MCU應用程序的遠程下載,將會帶來方便。本文介紹一種DSP應用程序的遠程下載技術。
1 TMS320VC5402及其HPI接口簡介
TMS320VC5402是TI公司為實現低功耗、高性能實時信號處理的定點16位DSP,它采用改進型哈佛結構,具有很高的運行速度,非常適合在信號處理方面的應用,如濾波、頻譜分析等場合。其突出的優(yōu)點已經使它在通信、語音、儀器儀表、電力測控終端等領域得到廣泛應用。
TMS320VC5402的應用程序在其內部的RAM中運行,因此,在上電時需要利用HPI接口將程序傳送到內部RAM中,TMS320VC5402的HPI是增強型8位主機接口。HPI即主機接口,它實際上是一個8位的并行接口,可以和任何一個外部的8位并行接口連接,在大多數情況下這個外部的8位并行口可以是其他MCU的8位I/O口。對于TMS320VC5402來說,這個MCU就是“主機”以下簡稱為主MCU。當TMS320VC5402與主機傳送數據時,HPI能自動將傳送來的8位數據組合成為16位數據,并傳送到TMS320VC5402內部指定地址的RAM單元中,代碼傳送完畢后,主MCU再傳送DSP應用程序的入口地址。傳送結束后TMS320VC5402即可從指定的地址開始執(zhí)行應用程序。
2 HPI與主機接口的技術實現
主MCU和TMS320C5416的連接示意如圖1所示,圖中8位數據線用來實現DSP與主機之間的數據傳輸,控制信號線用來指定進行的操作。
HPI包含3個內部寄存器,分別為:HPIC、HPIA、HPID。HPIC是一個16位的內部控制寄存器,HPIA是16位的地址寄存器,HPID是數據寄存器。由于HPI接口的數據線是8位的,故主MCU在讀寫HPI寄存器時,每次必須按2個字節(jié)操作,字節(jié)的高低順序由HPIC設定。而主MCU要寫HPIC時,第1個字節(jié)和第2個字節(jié)的內容必須是相同值,專用的HBIL引腳信號用來確定傳輸的是第1字節(jié)還是第2字節(jié)。HPIC的BOB位決定是第1個字節(jié)還是第2個字節(jié)放置在高8位。HCNTL0/1用來說明哪個HPI的內部寄存器被主機訪問。具體說明如表1所列。
HDS1、HDS2是兩個數據選通信號,HAS是地址鎖存信號,HCS是HPI接口的選中信號,而HR/W是讀/寫控制信號。詳情及HPIC寄存器各位的用途請參考TMS320VC5402技術手冊,這里不再贅述。
主MCU通過HPIC、HPIA、HPID寄存器與TMS320VC5402進行數據交換,數據交換的過程如下:
①初始化HPIC;
②把地址寫到HPIA中;
③通過HPID讀或寫數據。
一般情況下,對DSP的HPIC進行初始化后,無須再對其進行初始化,其余工作由主MCU完成。主MCU和TMS320VC5402的連接圖如圖1所示。
用8051單片機作為主MCU實現DSP應用程序遠程下載的實現方案中,主MCU使用的是C8051F236,用C8051F236的P1口作為數據線與DSP的HPI接口連接,C8051F236的P2口分別作為HPI接口的控制信號線,P0.5連接到DSP的復位引腳。C8051F236的串行接口擴展MAX485,以便通過RS485串行接口接收PC機傳送的DSP應用程序,當然也可以為主MCU擴展網絡接口,通過網絡傳送DSP應用程序。
擴展的I2C總線接口EEPROM存儲器AT24C1024用于存放DSP應用程序的HEX文件,AT24C1024的容量為256 KB,對于一般應用程序的HEX文件是夠用的。工作時PC機利用通信接口將DSP的應用程序和程序的入口地址傳送給主MCU,并在EEPROM中存放。然后主MCU控制DSP復位,進入引導工作方式,主MCU讀取存放在AT24C1024中的HEX文件,經解析后產生機器碼,并逐字節(jié)通過HPI接口傳送給DSP,完成程序的更新。
TMS320VC5402在片上ROM中固化了引導程序,當DSP工作在微計算機模式(MP/MC=0)下,上電復位后會自動執(zhí)行引導程序,引導程序會初始化數據存儲區(qū)的007EH和007FH兩個單元,使其初始值為0,然后檢測引導模式。首先檢測當前是否是HPI引導模式,在確認引導模式后,按照相應的操作自動從HPI接口傳送用戶代碼到內部程序存儲器。在完成用戶代碼引導后,主MCU執(zhí)行寫入口地址操作,即將應用程序的入口地址寫入到007EH和007FH。如果TMS320VC5402檢測到007EH和007FH內容的變化后,馬上從入口地址處開始運行用戶程序,引導過程結束,DSP正常運行應用程序。
3 主MCU軟件設計
涉及HPI功能的主MCU軟件設計包括兩個方面:一是HPI接口的訪問;二是HEX文件的解析。
(1)HPI接口軟件設計
在對HPI接口訪問時,一般首先要通過寫入控制字到HIPC寄存器中,以設置HPI的工作方式。但在大多數情況下,使用HPIC的默認值即可,故不需要專門對HPIC進行操作,程序中僅需對HPIA和HPID進行操作。以下為對HPIA進行寫操作的程序,將需要操作的存儲器的地址傳送到HPIA中。為簡單起見,程序已作了簡化處理:
將存儲器地址傳送到HPIA后即可傳送程序的機器碼,程序結構與上述類似。需要注意的是,在通過HPID讀/寫DSP內部的存儲器時,被讀/寫存儲器單元的地址由HPIA指定,并且可以實現HCNTL0、HCNTL1設置為讀/寫HPID時HPIA的值自動加1,這樣就不需要每次讀/寫HPID之前先傳送地址到HPIA中,簡化了程序設計。
(2)DSP代碼下載程序設計
DSP應用程序代碼通過串行接口傳送到主MCU并保存在EEPROM中后,主MCU即可在任何需要的時候將代碼下載到DSP中。一般來說傳送的DSP應用程序是HEX文件。HEX文件是一個文本文件,它以記錄的方式存放應用程序的機器碼及其地址。因此主MCU需要按記錄從EEPROM中讀取HEX文件,并對其進行分析,得到應用程序的機器碼和其地址,然后通過HPI接口程序傳送到DSP中。由于HEX文件中不包含應用程序的入口地址,所以PC機軟件需要單獨將應用程序的入口地址傳送給主MCU,為簡單起見,HEX文件記錄的結構及其分析不再贅述,可參考其他相關資料。將代碼傳送到DSP的程序流程圖如圖2所示。
在DSP應用程序開發(fā)中,使用CCS編譯、鏈接后生成.out文件,此文件為COFF格式文件,不能直接用于主機引導,需要利用其他的工具將其轉換成HEX文件,至于DSP應用程序的入口地址可以從MAP文件中得到。
結語
本文介紹了一種利用通信接口實現DSP應用程序遠程下載的方法,該方法簡單易行,已經在我們所開發(fā)的項目中得到應用。雖然文中介紹的是利用RS485接口實現,事實上稍加改變,即可利用任意一種通信方式實現,具有一定的實用價值。