?

帶看門狗喂狗功能的TMS320F2812遠程加載技術

2016-11-15 09:08蔣炯煒雷志軍
電子與封裝 2016年10期
關鍵詞:看門狗上位編程

蔣炯煒,雷志軍,于  鵬

(中國電子科技集團公司第58研究所,江蘇無錫214072)

帶看門狗喂狗功能的TMS320F2812遠程加載技術

蔣炯煒,雷志軍,于鵬

(中國電子科技集團公司第58研究所,江蘇無錫214072)

為了提高系統可靠性,外部硬件看門狗電路的應用越來越廣泛,但多數情況下,更新程序的同時無法完成喂狗操作,致使芯片不斷復位,無法完成軟件升級。在此基礎上提出了一種基于RS232的帶喂狗功能的TMS320F2812程序的遠程加載方案,并詳細闡述了實現過程。該方案不僅擺脫了Flash編程時對JTAG接口的依賴,而且對底層Flash API函數進行了修改,加入了喂狗程序,靈活性高,非常適用于軍用領域,具有較大的實用價值。

F2812;RS232;看門狗;遠程更新

1  引言

隨著科學技術的進步,系統的可靠性越來越受到重視,特別是軍用領域的要求更苛刻??撮T狗電路就是提高系統可靠性的一種關鍵技術,在出現死機、程序跑飛、程序有BUG導致不受控等情況出現時,可以起到復位系統的作用??撮T狗電路分為內部看門狗(集成在處理器內部)和外部看門狗(基于硬件)。內部看門狗便于設計但容易失效,在程序運行失效時會禁止看門狗,導致系統的進一步混亂。而外部看門狗雖然需要占用額外的電路板空間,但其不僅可以監測VCC電源,在電壓跌落到指定的門限以下時觸發系統復位,而且完全不受內部程序失效的影響,對于可靠性要求較高的設計是不可或缺的。在大多數控制場合兩者互相配合一起使用。

在系統可靠性提高的同時也帶來一個新的問題。由于大多數自動化設備安裝在野外或整機內部,若已安裝的設備出現程序缺陷或用戶提出新的需求,就需要對程序進行遠程更新。以F2812為例,更新Flash程序的過程是個先擦后寫的步驟。這一過程中程序擦除后內部看門狗被禁止了,但是外部看門狗卻無法禁止,內部程序也不會再對其進行喂狗操作,導致的結果是外部復位芯片不斷使F2812復位,無法完成程序的更新甚至有可能使芯片出現“鎖死”,無法繼續使用Flash空間。為了解決這一難題,本文提出一種基于RS232的加入了看門狗喂狗功能的遠程升級技術。

2 SCI Boot過程簡介

在軍用領域要求不拆機殼進行程序升級的前提下,目前最常用的是基于RS232的遠程更新技術。該技術的核心是上電后通過F2812的SCI Boot模式[1~2]完成數據傳輸。SCI Boot的詳細過程如圖1所示。

為了實現這一復雜過程,需要上位機不斷發送關鍵數據,TI公司也提供了相應的操作軟件SDFlash,只是該軟件并未公開源代碼,而且更新程序過程中不具備喂狗功能。

圖1  SCI Boot過程框圖

3  方案設計

3.1外部看門狗電路

以常用的復位電路MAX706為例,說明外部看門狗電路的原理?;倦娐啡鐖D2所示。

圖2  MAX706看門狗電路

復位芯片MAX706的RESET引腳連接至DSP的復位端口,WDI引腳與DSP的任一I/O端口相連,DSP通過定時翻轉I/O口高低電平,即可完成喂狗操作。如果芯片出現死機等情況致使無法完成喂狗,芯片WDO引腳將輸出低電平至MR引腳,觸動芯片的手動復位功能,完成DSP的復位。具體看門狗時序如圖3所示。此處的關鍵時間參數有:喂狗間隔時間典型值tWD=1.6 s,也就是說一旦停止喂狗1.6 s后,WDO將輸出電平,引起復位。

圖3  MAX706看門狗時序

3.2程序更新過程

要在F2812的Flash擦除和編寫過程中實現喂狗功能,需要分三步走。

第一步:在喂狗間隔時間1.6 s內完成SCI Boot,上位機將程序A(具備喂狗功能)送入F2812執行;

第二步:程序A喂狗成功以后,需要接收來自上位機發送的程序B(帶Flash的擦除和編程功能,同時具備喂狗功能);

第三步:程序B開始執行后,上位機再發送用戶最終程序C,燒寫到Flash中,完成升級。

需要注意的是,之所以將第一步和第二步分開是因為如果程序A和程序B合并將導致上位機向F2812的數據傳輸時間加長,極有可能無法在1.6 s內完成程序的傳輸。第一步開始到第三步結束,整個過程中都具備喂狗過程。具體流程如圖4所示。

圖4 程序更新過程框圖

3.3技術難點

如3.2節所述,在整個程序更新過程中必須一直進行喂狗操作,典型的喂狗間隔時間值tWD=1.6 s,但是對于F2812來說150M系統時鐘下,僅僅16 k Sector的擦除和編程典型時間分別為11 s和500 ms(參考TI手冊SPRS174T)[3],如表1所示。即使更高性能的F28335的擦除和編程典型時間也分別需要2 s和500 ms(參考TI手冊SPRS439M),如表2所示。

很顯然,編程時間滿足要求,擦除時間大于1.6 s,直接調用TI提供的API函數進行Flash的更新肯定會失敗,因此需要修改底層API函數,將看門狗程序加入Flash的擦除扇區過程。

3.4解決措施

由于TI公司并未公開F2812的庫文件內的函數源碼,因此需要通過反匯編將API函數提取出來。

首先,通過CCS建立一個新的工程,工程中包含頭文件Flash281x_API_Config.h、Flash281x_API_ Library.h和庫文件Flash2812_API_V210.lib[4]。利用API函數Flash_Erase(Uint16 SectorMask,FLASH_ST* FEraseStat)編寫一個擦除整個Flash扇區的主函數,然后通過CCS自帶的反匯編工具將整個工程的匯編代碼一段一段提取出來。

其次,整理匯編代碼的結構,找到加入喂狗程序的地址空間。通過CCS提取出來的匯編代碼并不能直接使用,不僅語法存在問題,而且相互調用的子函數名稱和標號也需要重新定義。更重要的是匯編代碼的函數地址是固定的,一旦向函數中增加刪減語句或是改變指令都會使地址發生變化,導致函數之間調用失敗。因此,需要分析函數內部結構,刪除一些不影響功能的語句,插入喂狗的匯編代碼同時保證函數地址不發生變化。

表1  150M下F2812-Flash擦寫時間

表2  150M下F28335-Flash擦寫時間

最后,將匯編文件打包成一個.asm文件加入工程中,執行程序B時調用即可完成扇區的擦除。

4  軟件實現

CCS需要預先編譯好程序A和程序B并轉化成特定的格式。上電后,針對SCI Boot模式上位機不斷發送關鍵字符A,若收到F2812返回字符A即握手成功,否則超時連接失?。?]。握手以后就可以按照圖4的流程進行Flash程序更新。

如圖5所示為Flash程序更新過程,操作簡單,建立連接成功后,只需選擇編譯生成的.out文件,點擊更新程序即可。內部采用了分塊更新方式,具體更新狀態也可從上位機上反映出來。

圖5  Flash程序更新過程

5  結論

本文根據用戶實際需求,提出了一種帶看門狗喂狗功能的更新F2812 Flash程序的方法,該方法通過反匯編修改了TI的底層API函數,完成了功能擴展并闡述了軟件設計開發的流程。實際測試成功并已經在用戶處得到廣泛使用,對其他類似系統的程序遠程加載具有借鑒意義。

[1]TMS320F28xSerialCommunicationsInterface(SCI)Reference Guide(Rev.B)[P].

[2]沈潤,張喆.基于串口的TMS320F28335應用程序在線升級技術的應用[J].化工自動化及儀表,2015.

[3]TMS320F281x Data Sheet(Rev.L)[P].

[4]TI.TMS320F281x Flash Programming API Revision Change[EB/OL].2005,www.ti.com.cn.

[5]王敏,黃站華,孫秋實,等.DSP系統程序遠程更新的研究與實現[J].計算機工程與應用,2012.

A Technology of Remote Flash Programming to TMS320F2812 with Watchdog-feeding Function

JIANG Jiongwei,LEI Zhijun,YU Peng

(China Electronics Technology Group Corporation No.58 Research Institute,Wuxi 214035,China)

In order to improve system reliability,external hardware watchdog is increasingly used.But in most cases,the update operation cannot be implemented while feeding the watchdog,which incurs constant system resetting.A technology of remote flash programming to TMS320F2812 based on RS232 Interface is proposed with detailed execution process.The technology modifies the underlying Flash API function and enables programming while feeding the watchdog.This method is applicable for military use.

F2812;RS232;watchdog;remote flash programming

TN402

A

1681-1070(2016)10-0023-04

2016-5-25

蔣炯煒(1986—),男,江蘇無錫人,碩士,助理工程師,就職于中國電子科技集團公司第58研究所,研究方向為DSP芯片的應用與測試。

猜你喜歡
看門狗上位編程
編程,是一種態度
元征X-431實測:奔馳發動機編程
一種嵌入式計算機系統的看門狗設計
編程小能手
紡織機上誕生的編程
把他叫醒
特斯拉 風云之老阿姨上位
“三扶”齊上位 決戰必打贏
基于ZigBee和VC上位機的教室智能監測管理系統
以新思路促推現代農業上位
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合