嚴(yán)建龍
(洛陽欒川鉬業(yè)集團股份有限公司選礦三公司,河南欒川471500)
隨著嵌入式芯片在通信、電子、工業(yè)等領(lǐng)域的日益廣泛應(yīng)用,DSP 芯片燒寫程序的難易程度和產(chǎn)品后續(xù)升級服務(wù)變得十分重要。目前TMS320F2811 芯片程序更新方法主要有兩種:
1) 通過TI 公司提供的燒寫工具,利用JTAG 仿真器進(jìn)行程序的擦除、燒寫等操作;
2) 通過引導(dǎo)加載程序的下載功能,通過上位機軟件將經(jīng)轉(zhuǎn)換后的程序文件經(jīng)過各種接口燒寫至片內(nèi) Flash 中[1]。
第一種方式便于跟蹤調(diào)試,但在實際應(yīng)用中增加了電路板體積,需將產(chǎn)品機殼打開,操作繁瑣,維護性差,用戶體驗差,在產(chǎn)品量產(chǎn)后嚴(yán)重制約效率,在一些特殊場合JTAG 接口會影響產(chǎn)品工作的可靠性;而后者則大大降低了維護成本,有效提升了升級效率及可靠性,尤其是在產(chǎn)品量產(chǎn)階段具有十分可觀的經(jīng)濟價值[2]。
實現(xiàn)基于串口的TMS320F2811 程序在線升級,主要需完成以下兩個方面工作:編寫基于串口通信的BootLoader 引導(dǎo)程序;制定上位機與MCU 間通信協(xié)議。
著重針對以上兩點具體的實現(xiàn)方式進(jìn)行詳細(xì)的闡述及討論。系統(tǒng)工作原理如圖1所示。
圖1 系統(tǒng)工作原理框圖
F2811 軟件中包含兩個CCS 工程,其中工程A為輔助軟件升級程序,必須通過J-Link 進(jìn)行燒寫;工程B 為待進(jìn)行升級程序,既可通過J-Link 進(jìn)行燒寫,也可通過串口與上位機通信,以在線升級方式進(jìn)行燒寫。工程A、B 均須按照要求分配地址空間。
F2811 的 Flash 大小是 128k×16,分為 10 個Sector,每個Sector 有其各自的大小[3],地址區(qū)域劃分的詳細(xì)信息見表1。
將Flash 區(qū)域重新劃分,具體見表2,可實現(xiàn)根據(jù)串口指令進(jìn)入原始程序,或者新程序,并且在Bootloader 過程中對設(shè)備進(jìn)行更新[4]。
表1 F2811 Flash Sector 地址區(qū)域劃分
表2 F2811 Flash Sector 地址區(qū)域重新劃分
軟件在運行過程中,若串口收到進(jìn)行程序升級指令后,BOOT 程序首先檢測當(dāng)前軟件所處的有效區(qū)標(biāo)志,其中輔助升級程序在段J 位置設(shè)置為A區(qū),待升級程序在J 位置設(shè)置為B 區(qū),擦除處于非有效區(qū)的Flash 空間,待擦除完畢后,通過對話框形式選擇待燒寫的hex 文件,之后軟件將自動重啟,若軟件之前處于A 區(qū),則完成軟件的在線升級;否則軟件處于B 區(qū)則重復(fù)上述步驟完成軟件的在線升級。系統(tǒng)軟件主程序設(shè)計具體流程如圖2所示。
在擦除A 區(qū)過程中若出現(xiàn)異常情況,導(dǎo)致A 區(qū)應(yīng)用程序不可用,但由于B 區(qū)中的更新程序完好,當(dāng)系統(tǒng)重新上電運行時,BOOT 程序?qū)⑼ㄟ^B 區(qū)將輔助升級軟件重新下載到A 區(qū),自動重啟后從A 區(qū)運行,可執(zhí)行后續(xù)的升級操作,提高了整個系統(tǒng)的可靠性。
圖2 系統(tǒng)軟件主流程圖
Boot 中操作函數(shù)均通過CCS 開發(fā)環(huán)境制作成.lib 文件[5],輔助升級程序和待升級程序均可以調(diào)用,其中重要的函數(shù)如下:
unsigned int Get_Active_Section(void); //檢測軟件有效區(qū)標(biāo)志,返回值A(chǔ) 或B
void Enter_Update (int Erase_A); //根據(jù)所處區(qū)域,進(jìn)行flash 擦除、軟件升級操作
存儲區(qū)實現(xiàn)主要是通過.cmd 文件進(jìn)行[6],輔助升級程序與待升級程序的設(shè)置具體如下[7]:
MCU 更新數(shù)據(jù)采用 Intel HEX 文件[8],若要實現(xiàn)該HEX 文件,需使用hex2000.exe 工具和批處理文件out2hex.bat。具體內(nèi)容如下:
此program.cmd 文件的內(nèi)容如下:
將批處理文件 out2hex.bat、hex2000.exe、program.cmd 和CCS 開發(fā)環(huán)境中編譯生成的first.out文件放在同一路徑下,雙擊out2hex 文件即可。
F2811 與上位機軟件之間的命令交互,主要包括進(jìn)入程序升級操作、擦除操作、發(fā)送程序數(shù)據(jù)操作、升級完成等,各項操作指令有對應(yīng)幀頭、幀尾及校驗字節(jié),保證了數(shù)據(jù)傳輸和交互過程的準(zhǔn)確性及可靠性。
系統(tǒng)上位機軟件界面如圖3所示,包括操作按鈕、程序文件選擇對話框、程序運行狀態(tài)顯示框等。
圖3 上位機界面
在上位機界面選擇相應(yīng)串口號,配置串口通信的參數(shù)為:波特率115200bps,數(shù)據(jù)位8,起始位1,停止位1,無奇偶校驗位。
點擊“start”按鈕啟動更新模式,然后按照提示框一步步完成軟件的串口在線升級,軟件完成在線升級后,將自動進(jìn)行軟件重啟,通過上位機軟件可查詢升級后的軟件版本號,以確定軟件是否升級成功。
通過對基于串口TMS320F2811 芯片BOOT 引導(dǎo)程序原理的詳細(xì)闡述,分析了具體的實現(xiàn)步驟和方法。提出的基于串口的TMS320F2811 程序在線升級方法具有通用性,對于其它嵌入式芯片的實現(xiàn)具有一定的借鑒意義。實際應(yīng)用結(jié)果表明,基于串口的在線升級方法可靠性高,達(dá)到了預(yù)期的效果,大大提升了實際工作效率。