周洋洋,趙昶宇
(1.海軍駐天津地區兵器設備軍事代表室,天津 300308;2.天津津航計算技術研究所,天津 300308)
DSP28335 是用于實時信號處理的微處理器,具有浮點運算功能,它接口豐富,控制精度高,且預算速度快,因此廣泛應用于嵌入式系統的各個領域。通常將芯片的內部存儲區分為引導程序區、運行程序區和下載區3 個部分。芯片接收到下載命令后,進入引導區運行引導程序,在引導程序下將用戶應用程序代碼內容下載到下載區,下載完畢并校驗通過后再將下載區的內容復制到運行程序區,運行復位程序,完成Flash 的在線燒寫。
本文以DSP28335 為例,提出一種基于CAN 總線的DSP在線燒寫的方法,避免了在升級程序時因拆卸控制器帶來的各種問題,降低了設備的維護成本。
DSP28335 自帶FLASH 存儲器,在代碼運行前,將代碼從FLASH 中拷貝到RAM 中運行,能夠顯著提高程序的運行效率。用戶編寫的應用程序固化到非易失性存儲器FLASH 中,系統每次上電復位后,便開始運行FLASH 程序引導流程,具體流程為:調用InitBoot 函數把器件初始化成C28X 工作模式;然后調用SelectBootMode 函數,檢測相應GPIO 引腳的電平狀態,判斷為FLASH 引導模式;引導結束后PC 指針將跳轉至FLASH 中0x33FFF6 地址單元處,并執行其中的代碼,用戶需要在該地址存放一條指令;最后執行跳轉指令將會跳轉到C 環境初始化函數c_int00,只有當c_int00 運行后,才開始執行Main()函 數。
DSP28335 的在線燒寫軟件部分主要是由上位機端軟件和DSP 端軟件構成。
上位機端軟件主要完成讀取可執行代碼文件,進行格式轉換后將該文件通過CAN 總線發送給DSP 端,等待DSP端的響應。
DSP 端軟件主要完成和上位機端軟件的握手,接收上位機端軟件發送的可執行代碼文件,并將該文件立即燒寫到FLASH 中,完成燒寫過程;此外DSP 端還需實現bootloader程序的功能。
基于DSP28335開發的應用程序經過CCS編譯生成的目標文件類型為.out 文件,而DSP28335 無法識別該文件類型,需要通過hex2000.exe 工具將.out 文件轉換成DSP28335 可以識別的二進制數據流文件。
上位機端軟件首先讀取.hex 文件,通過解析.hex 文件內容,將其拆分為多條數據幀結構。上位機端軟件與DSP 端軟件通過CAN 總線進行通訊。
上位機端軟件向DSP 端軟件發送的每幀數據都帶有校驗和,當DSP 端程序接收到該幀數據后,通過校驗和對接收數據進行確認。確認完畢后,DSP 端軟件將確認幀發送給上位機端軟件,上位機端軟件收到DSP 端發送的確認幀后,再向DSP 端軟件發送下一幀數據;當上位機軟件將全部數據發送完畢后,上位機端軟件向DSP 端軟件發送數據的總長度,DSP 端軟件將該總長度與接收到的數據長度進行比較,將比較結果發送給上位機端軟件,完成了整個數據的總校驗。
DSP 端軟件主要包括引導程序和用戶應用程序,前者不僅用來和上位機軟件進行CAN 總線通訊接收DSP 程序可執行代碼文件,并將接收到的可執行代碼文件燒寫到FLASH中,而且會在系統上電復位后會判斷是執行FLASH 燒寫工作還是運行用戶應用程序工作;后者是用來和上位機軟件進行CAN 總線通訊接收DSP 程序可執行代碼文件,并將接收到的可執行代碼文件燒寫到FLASH 中。
為保證接收數據的準確性和完整性,DSP 端軟件在接收數據的過程中,不執行對RAM 或FLASH 操作的相關代碼;同時,關閉其他的外部中斷,僅響應CAN 總線接收中斷,保證了數據接收的實時性。此外,DSP 端軟件將接收到的數據存儲在外擴的FLASH 中,等接收完全部數據后,再進行程序的燒寫,防止在接收數據過程中出現意外而導致系統程序不能正常工作。
FLASH 的燒寫工作也是DSP 端軟件需要實現的重要功能。在擦除或讀寫FLASH 之前,必須先執行相應的命令字序列,即在指定的FLASH 地址處寫入指定的指令代碼。
向FLASH 的指定地址中寫入數據,需要四個總線周期。前兩個是解鎖周期,第三個是建立編程命令,最后一個周期完成向編程地址中寫入編程數據。待寫入的數據為.Hex 文件內容。
引導程序框圖和應用程序框圖的處理流程如圖1 所示。

圖1 引導程序框圖和應用程序框圖示意流程圖
DSP28335 在線燒寫分為以下4 個步驟:①利用CCS 開發工具,將要升級的應用程序編譯生成.out 文件,利用hex2000.exe 工具將.out 文件轉換成.hex 文件;②利用仿真器將被燒寫的引導程序固化到DSP 中FLASH 的相應地址中;③完成步驟②后重新上電復位,利用上位機端軟件將被燒寫的DSP 應用程序發送到DSP 中;④DSP 重新上電,即可自動運行新更新的應用程序,完成DSP 的在線程序燒寫。
本文研究的基于CAN 總線的DSP28335 的在線燒寫方法極大釋放了軟件維護人員的工作量,提高了軟件升級的質量和效率。該方法已成功應用到某型號DSP 控制系統中,經過實際應用證明,軟件燒寫過程快速、穩定、可靠。該技術的研究使DSP 程序的更新可以脫離仿真器,為程序的更新和程序的遠程維護提供了方便,具有很強的實用性。