嚴建龍
(洛陽欒川鉬業集團股份有限公司選礦三公司,河南欒川471500)
隨著嵌入式芯片在通信、電子、工業等領域的日益廣泛應用,DSP 芯片燒寫程序的難易程度和產品后續升級服務變得十分重要。目前TMS320F2811 芯片程序更新方法主要有兩種:
1) 通過TI 公司提供的燒寫工具,利用JTAG 仿真器進行程序的擦除、燒寫等操作;
2) 通過引導加載程序的下載功能,通過上位機軟件將經轉換后的程序文件經過各種接口燒寫至片內 Flash 中[1]。
第一種方式便于跟蹤調試,但在實際應用中增加了電路板體積,需將產品機殼打開,操作繁瑣,維護性差,用戶體驗差,在產品量產后嚴重制約效率,在一些特殊場合JTAG 接口會影響產品工作的可靠性;而后者則大大降低了維護成本,有效提升了升級效率及可靠性,尤其是在產品量產階段具有十分可觀的經濟價值[2]。
實現基于串口的TMS320F2811 程序在線升級,主要需完成以下兩個方面工作:編寫基于串口通信的BootLoader 引導程序;制定上位機與MCU 間通信協議。
著重針對以上兩點具體的實現方式進行詳細的闡述及討論。系統工作原理如圖1所示。

圖1 系統工作原理框圖
F2811 軟件中包含兩個CCS 工程,其中工程A為輔助軟件升級程序,必須通過J-Link 進行燒寫;工程B 為待進行升級程序,既可通過J-Link 進行燒寫,也可通過串口與上位機通信,以在線升級方式進行燒寫。工程A、B 均須按照要求分配地址空間。
F2811 的 Flash 大小是 128k×16,分為 10 個Sector,每個Sector 有其各自的大小[3],地址區域劃分的詳細信息見表1。
將Flash 區域重新劃分,具體見表2,可實現根據串口指令進入原始程序,或者新程序,并且在Bootloader 過程中對設備進行更新[4]。

表1 F2811 Flash Sector 地址區域劃分

表2 F2811 Flash Sector 地址區域重新劃分
軟件在運行過程中,若串口收到進行程序升級指令后,BOOT 程序首先檢測當前軟件所處的有效區標志,其中輔助升級程序在段J 位置設置為A區,待升級程序在J 位置設置為B 區,擦除處于非有效區的Flash 空間,待擦除完畢后,通過對話框形式選擇待燒寫的hex 文件,之后軟件將自動重啟,若軟件之前處于A 區,則完成軟件的在線升級;否則軟件處于B 區則重復上述步驟完成軟件的在線升級。系統軟件主程序設計具體流程如圖2所示。
在擦除A 區過程中若出現異常情況,導致A 區應用程序不可用,但由于B 區中的更新程序完好,當系統重新上電運行時,BOOT 程序將通過B 區將輔助升級軟件重新下載到A 區,自動重啟后從A 區運行,可執行后續的升級操作,提高了整個系統的可靠性。

圖2 系統軟件主流程圖
Boot 中操作函數均通過CCS 開發環境制作成.lib 文件[5],輔助升級程序和待升級程序均可以調用,其中重要的函數如下:
unsigned int Get_Active_Section(void); //檢測軟件有效區標志,返回值A 或B
void Enter_Update (int Erase_A); //根據所處區域,進行flash 擦除、軟件升級操作
存儲區實現主要是通過.cmd 文件進行[6],輔助升級程序與待升級程序的設置具體如下[7]:

MCU 更新數據采用 Intel HEX 文件[8],若要實現該HEX 文件,需使用hex2000.exe 工具和批處理文件out2hex.bat。具體內容如下:

此program.cmd 文件的內容如下:

將批處理文件 out2hex.bat、hex2000.exe、program.cmd 和CCS 開發環境中編譯生成的first.out文件放在同一路徑下,雙擊out2hex 文件即可。
F2811 與上位機軟件之間的命令交互,主要包括進入程序升級操作、擦除操作、發送程序數據操作、升級完成等,各項操作指令有對應幀頭、幀尾及校驗字節,保證了數據傳輸和交互過程的準確性及可靠性。
系統上位機軟件界面如圖3所示,包括操作按鈕、程序文件選擇對話框、程序運行狀態顯示框等。

圖3 上位機界面
在上位機界面選擇相應串口號,配置串口通信的參數為:波特率115200bps,數據位8,起始位1,停止位1,無奇偶校驗位。
點擊“start”按鈕啟動更新模式,然后按照提示框一步步完成軟件的串口在線升級,軟件完成在線升級后,將自動進行軟件重啟,通過上位機軟件可查詢升級后的軟件版本號,以確定軟件是否升級成功。
通過對基于串口TMS320F2811 芯片BOOT 引導程序原理的詳細闡述,分析了具體的實現步驟和方法。提出的基于串口的TMS320F2811 程序在線升級方法具有通用性,對于其它嵌入式芯片的實現具有一定的借鑒意義。實際應用結果表明,基于串口的在線升級方法可靠性高,達到了預期的效果,大大提升了實際工作效率。