馬振華 梁欣穎 張弛
摘要:某控制系統(tǒng)在使用和維護過程中,經常需要對其嵌入式應用軟件進行升級。為了克服仿真器燒寫方式操作麻煩且效率低下的缺點,設計了一個在線加載軟件來完成應用軟件的在線升級,為地面維護人員升級軟件提供了便利。
關鍵詞:在線加載;RS422;FLASH
1 概述
當今社會,各種嵌入式控制系統(tǒng)已經廣泛應用于人們生活的方方面面。某控制系統(tǒng)軟件包括系統(tǒng)軟件及應用軟件。在使用過程中,經常需要根據(jù)實際情況對其嵌入式應用軟件進行升級。在調試階段,通常打開產品口蓋利用JTAG接口進行軟件燒寫,[1,2]但是在產品裝機后此種方法不僅麻煩且效率非常低。因此研究在不開口蓋的情況下完成應用軟件的在線升級的方案十分必要。為了充分利用現(xiàn)有資源且對現(xiàn)有系統(tǒng)軟件及應用軟件影響最小,新設計一個在線加載軟件用于在上位機的控制下,通過RS422總線接收應用軟件鏡像文件,完成應用軟件的在線加載。整個加載過程中無需打開產品口蓋連接仿真器。
2 在線加載軟件設計
考慮到FLASH扇區(qū)擦除及固化過程耗時較長,不宜在實時任務中執(zhí)行,在線加載軟件采用前后臺任務的結構。在前臺周期任務中進行應用軟件鏡像文件目標碼的接收及緩存,目標碼全部緩存完畢后,在后臺任務中依次進行FLASH扇區(qū)擦除、固化及目標碼的CRC校驗。在整個加載過程中,在線加載軟件每60ms實時向上位機發(fā)送當前加載狀態(tài)(包括傳輸中、傳輸成功、傳輸失敗、固化中、固化成功、固化失敗、校驗中、校驗成功、校驗失敗、空)及加載進度,以便地面維護人員實時監(jiān)控本次應用軟件的加載狀態(tài)及加載進度。當加載失敗(傳輸失敗、固化失敗、校驗失敗)或本次加載完成后,加載軟件支持再次重新加載應用軟件;另外,在加載過程中,地面維護人員也可中斷本次加載過程并重頭開始加載應用軟件。
2.1 前臺任務設計
前臺任務主要完成上位機下發(fā)數(shù)據(jù)的接收及解析。每60ms接收上位機下發(fā)的數(shù)據(jù),根據(jù)通信協(xié)議解析加載模式、加載請求、退出加載命令及目標碼等數(shù)據(jù)。在加載模式下,當接收到應用軟件的加載請求時,緩存目標碼至RAM緩沖區(qū);當目標碼全部緩存完畢后,置完整緩存標志為1,并設置加載狀態(tài)為傳輸成功。當某包數(shù)據(jù)連續(xù)十個周期通信故障時,設置加載狀態(tài)為傳輸失敗。當接收到清除命令且NVM中擦除標志為未擦除時,設置NVM中進入加載標志為無效以便下電退出加載軟件。前臺任務處理流程如圖1所示。
2.2 后臺任務設計
后臺任務在前臺任務執(zhí)行的空閑時段運行。由于FLASH扇區(qū)擦除及固化操作花費時間比較長,故設計時將FLASH相關扇區(qū)擦除、目標碼固化及目標碼校驗放在后臺任務中執(zhí)行。后臺任務中實時監(jiān)控完整緩存標志的狀態(tài),當其值為1時,開始根據(jù)緩存目標碼的大小擦除所需扇區(qū),擦除成功后再將目標碼文件寫入FLASH對應扇區(qū),寫入成功后再將FLASH中寫入數(shù)據(jù)進行CRC校驗,校驗成功后繼續(xù)等待,直到上位機發(fā)送退出加載命令或重新加載請求。為了防止加載過程中應用軟件被擦除,本次加載確未成功加載新的應用軟件而導致產品無法正常運行的情況,加載軟件專門在NVM中設計一個擦除標志。在擦除FLASH扇區(qū)時,先設置NVM中擦除標志為擦除,在加載成功后再將該標志設置為未擦除。在接到退出加載命令時,同時檢查NVM中擦除標志為未擦除時才允許退出加載軟件,這樣就有效避免了應用軟件擦除產品無法正常運行的情況。前臺任務處理流程如圖2所示。
3 結語
本文針對某控制系統(tǒng)設計了一個在線加載軟件,該加載軟件通過RS422總線接收加載命令及應用軟件目標碼,在上位機的控制下,完成應用軟件的在線加載。整個加載過程中,產品不需要打開口蓋,也無需移位,有效地降低了地面維護人員進行應用軟件升級的成本,提高了工作效率。
參考文獻:
[1]張曉斌,周鑫,鄭先成.基于RS232的FLASH在線編程研究[J].機電一體化,2011(2):3536,74.
[2]黃繩雄,張榮芬.嵌入式設備遠程在線升級技術的研究[J].電子設計工程,2012,20(9:172174,177).
作者簡介:馬振華(1986),男,漢族,陜西延安人,碩士,工程師,研究方向:計算機應用。