倪慶生,倪云龍,潘曉陽,袁盛俊
(中科芯集成電路有限公司,江蘇無錫214072)
TMS320F28335是TI(Texas Instruments)公司一款性能優越的C2000系列數字信號處理芯片,可實現快速數字信號處理,并通過本身多種外設接口實現外設的快速控制。隨著嵌入式系統集成化程度越來越高,TMS320F28335一旦形成產品應用于現場,將使仿真器升級程序變得費時費力。
目前通過串口升級的方法比較成熟,但只能實現一對一升級,無法進行組網。現場設備越多則需要的線纜越多,將導致布線越困難[1]。而已有通過CAN(Controller Area Network)升級的方法介紹也是多用于一對一升級,沒有進行CAN組網驗證[2-3]。在實際現場往往存在多個設備通過CAN總線進行組網的現象,所以需要同時考慮CAN網絡[4]實際的通信情況對在線升級的影響。因此,基于CAN總線的多主通信方式以及非破壞性仲裁機制[5],本文設計了基于CAN總線的TMS320F28335遠程在線升級方法。
上位機程序的功能主要包括:
配置遠程在線升級使用的CAN盒,使波特率、幀類型與下位機程序設置相對應,并增加濾波設置,在硬件上過濾掉CAN網絡中的非升級數據。
對CCS(Code Composer Studio)編譯應用程序生成的.hex文件信息進行提取,主要獲取應用程序的升級地址和需要升級的數據。由于TMS320F28335片內RAM資源有限,因此將需要升級的應用程序進行分組,每組包括16 Byte的信息和240 Byte的數據,然后通過CAN總線傳輸[6]。每組數據傳輸完成后,需要等待底層程序響應并給予應答,上位機程序確認無誤后再進行下一組數據的傳輸。
另外上位機程序還集成了修改目標板的設備ID(Identifier)號功能,用于區分CAN網絡中各節點、修改CAN波特率和CAN幀類型功能以適用不同的CAN網絡環境。上位機程序的軟件流程如圖1所示。

圖1 上位機軟件流程
上位機界面如圖2所示。

圖2 上位機界面
下位機程序主要包括應用程序和底層程序。
應用程序是需遠程在線升級的程序,最終通過CCS編譯生成目標.hex文件;可與上位機程序進行必要的通訊,循環查詢是否收到上位機升級指令,若收到則復位跳轉至底層程序,無需目標板重新上電。其余功能根據用戶需求而定。
底層程序的主要功能包括對TMS320F28335進行必要的初始化。通過查看片內Flash是否有應用程序和規定時間內是否收到上位機升級指令來決定是否能升級標記,然后再根據升級標記來決定底層程序是否跳轉到應用程序。若升級程序則調用擦除函數擦除片內Flash,然后接收上位機發送的應用程序,每組數據接收完成后做校驗并判斷數據的正確性,并根據升級地址將數據燒寫到指定片內Flash區域,最后給予上位機應答。待應用程序升級成功后,升級標記不再使能,并可自動跳轉至應用程序[7-8]。若不升級程序則直接跳轉至應用程序。下位機程序的整體軟件流程如圖3所示。

圖3 下位機程序整體軟件流程
試驗中發現,在底層程序擦除TMS320F28335片內Flash時,掉電可導致底層程序概率性失效。查看TI官方文檔[9],文中多次提到在擦除函數擦除Flash的過程中,不可將其打斷。一旦底層程序失效,將無法再進行在線升級。為避免該問題,故將底層程序燒寫到SPI(Serial Peripheral Interface)[10]接口外掛的EEPROM內,并 配 置 硬 件 相 關GPIO(General-Purpose Input/Output)引腳將其做成SPI BOOT模式。應用程序對該片EEPROM沒有寫權限,防止應用程序意外修改EEPROM內存儲的底層程序。
根據原理搭建了試驗環境,選擇CAN網絡直線型拓撲結構(見圖4)。

圖4 試驗環境示意圖
CAN盒:型號為周立功的USBCAN-II,負責記錄CAN網絡中的通信數據,并通過上位機顯示網絡負載率。試驗中發現其記錄負載率平均值的最大值在90%~91%之間。不同CAN盒上位機負載率計算可能存在差異。本文以該CAN盒負載率計算值為基準。
干擾節點:通過控制干擾節點個數,以及干擾節點數據發送頻率,可控制網絡的負載率。
本文測試環境中的CAN總線長分別約為70 m和40 m。由于總線長對波特率的限制,故本文只在波特率為500 kb/s、250 kb/s環境下進行測試。CAN標準數據幀為44~108 bit,最高可以插入23個填充位[11]。因此本文設置干擾節點發送的每幀數據幀約為121 bit,加上數據幀之間的幀間隔最少為3 bit。因此在波特率為250 kb/s時,其網絡每秒理論上最多可傳輸約2065 frame。同理波特率為500 kb/s時,其網絡每秒理論上最多可傳輸約4129 frame。波特率為250 kb/s、CAN網絡滿載時情況如圖5所示。

圖5 CAN網絡滿載圖
分別控制節點數、總線長、網絡負載率和目標節點優先級4個影響因素,波特率為250 kb/s和500 kb/s時的試驗數據分別如表1和2所示。

表1 波特率250 kb/s試驗數據
當目標節點優先級最低時,干擾節點每秒發送的理論幀數大于該波特率下每秒所能發送的最大幀數時,在線升級失敗,原因在于優先級低的節點會無法搶占總線發送數據。而此時減少干擾節點數,在線升級會概率性成功,原因在于干擾節點越少,網絡出現空閑的幾率越大,因此會提高在線升級概率。
當目標節點優先級最高時,即使網絡滿載甚至超載,在線升級依然成功。
根據現場復雜的應用環境,同時針對CAN網絡的實際通訊情況,本文的設計方法實現了CAN網絡中任意節點的在線升級,在目標節點優先級最低時,測得在線升級的極限條件。而當CAN網絡滿載時,可通過修改目標節點優先級后完成在線升級。本文分別在波特率為250 kb/s、500 kb/s的情況下進行驗證,并通過大量試驗驗證了該方法的穩定與可靠性,可有效減少現場工作人員的工作量。該方法同樣對其他嵌入式處理器芯片實現在線升級有借鑒意義。經實測在總線長為70 m、CAN網絡空載時,波特率為250 kb/s,升級99 kB的.hex程序用時70 s左右。

表2 波特率500 kb/s試驗數據