摘要:針對發(fā)射車載高、低壓配電設備軟件升級過程中存在的難題,例如傳統(tǒng)JTAG和串口IAP升級方式難以滿足頻繁升級需求,設備拆裝不便且存在風險等。文章提出了一種基于CDSPF28335N和CAN總線的智能升級方法。該方法旨在解決產(chǎn)品批量生產(chǎn)軟件燒錄以及列裝后現(xiàn)場在線升級和軟件維護問題。文章詳細闡述了系統(tǒng)組成、工作原理、升級方法和實現(xiàn)流程,并驗證了該方法的可行性和有效性。
關鍵詞:智能升級;CAN總線;CDSPF28335N;配電設備
中圖分類號:TP311 文獻標識碼:A
文章編號:1009-3044(2025)01-0065-03 開放科學(資源服務) 標識碼(OSID) :
0 引言
發(fā)射車載配電設備負責整車高、低壓電能分配,通常包含多臺設備。這些設備的控制軟件運行于基于CDSPF28335N數(shù)字信號處理器的主控板上。通過軟件升級或配置更改,可以快速便捷地滿足用戶需求變化和功能擴展。然而,傳統(tǒng)的JTAG仿真接口升級需要拆卸設備,而串口IAP升級方式需要將BOOT引腳引出至外部維護接口。這兩種傳統(tǒng)升級方式都無法同時升級多個設備軟件,導致設備批量燒錄效率較低。
為解決上述問題,本文提出了一種基于CDSPF28335N和CAN總線的智能升級方法。該方法利用CAN 總線廣播通信實現(xiàn)總線內(nèi)多個相同設備軟件的同時升級,并利用CAN總線幀ID實現(xiàn)對不同設備軟件的智能識別和單獨升級。此外,該方法還利用FlashAPI 函數(shù)庫實現(xiàn)設備不停機在線升級。
1 系統(tǒng)簡介及智能升級硬件組成
1.1 系統(tǒng)簡介
高、低壓配電設備實現(xiàn)發(fā)射車整車的高壓配電和低壓配電,保證高壓用電設備和低壓用電設備的安全可靠,其中低壓配電設備軟件完全相同,通過讀取存儲的不同配置信息完成不同的電能分配功能。
1.2 硬件組成
配電設備本身須具備CAN 總線控制器和EEPROM 存儲芯片。因此可將CAN總線和EEPROM作為軟件智能升級的硬件組成使用。
2 智能升級的設計原理和方法
2.1 CAN 總線
軟件智能升級CAN總線設計需考慮滿足配電設備CAN通信要求的同時,避免與用戶通信協(xié)議造成重疊和沖突。本研究將軟件升級標識符“DID”、設備地址唯一標識符“PID”、功能標識符“FID”編入29位擴展幀ID中,并對數(shù)據(jù)域信息進行CRC校驗。軟件升級幀格式定義,如表1所示。
2.2 I2C 總線和EEPROM
本研究中關于EEPROM讀寫操作,通過EEPROM 存儲設備地址號、軟件升級狀態(tài)字,標識當前設備地址號及升級狀態(tài)[1]。詳細存放地址,如圖1所示。
3 智能升級的設計和實現(xiàn)
智能升級主要設計實現(xiàn)包括:
1) 二次Bootloader引導程序設計;
2) 應用程序智能升級模塊設計及目標程序轉化;
3) 上位機程序設計。
3.1 二次Bootloader 引導程序設計
本研究需自行編寫二次Bootloader引導程序。即芯片上電后正常運行官方Bootloader,然后運行二次Bootloader,“二次Boootloader引導程序”即相當于應用程序1,用戶“應用程序”相當于應用程序2。
3.1.1 CMD 文件配置
針對數(shù)字信號處理器CMD 文件作出了詳細解釋,本研究通過工程下的CMD文件可知0x33FFF6中存放著codestart函數(shù),然后調(diào)用了RST中的c_int00函數(shù),最后跳轉至main函數(shù)執(zhí)行[2]。因此,為避免升級流程的擦除過程中二次Bootloader引導程序段代碼被擦除,二次Bootloader 程序的CMD 可參照官方CMD 文件,將0x33FFF6依然定義為程序BEGIN段,將其余空間分配到Flash的A和H區(qū)中。
3.1.2 初始化配置
初始化只須對CAN模塊、I2C模塊以及相應的中斷進行配置,其余外設資源的相關配置及中斷都可關閉。
3.1.3 FlashAPI 函數(shù)調(diào)用
本研究參考了文獻[3] 針對FlashAPI庫函數(shù)的詳細調(diào)用方法,并且根據(jù)芯片官方提供的FlashAPI函數(shù)庫進行調(diào)用,API函數(shù)庫包含了:
1) Flash2833x_API_Config. h 和Flash2833x_API_Library.h;
2) Flash2833x_API_V210.lib文件。
3.1.4 跳轉函數(shù)
跳轉函數(shù)CAN_BOOT_JumpToApplication()主要用于升級前跳轉至二次Bootloader程序入口,執(zhí)行二次Bootloader引導程序,以及升級成功或失敗后跳轉至應用程序入口,執(zhí)行應用程序。
3.1.5 I2C 讀寫EEPROM
1) ReadData():用于初始化配置后,程序啟動I2C 總線模塊,讀取EEPROM地址0x0001FF00存儲的“升級狀態(tài)字”數(shù)據(jù);
2) WriteData():用于在接收到上位機升級指令后,將“升級狀態(tài)字”數(shù)據(jù)寫入EEPROM的0x0001FF00段地址;此外用于在首次燒錄程序時將設備唯一地址號寫入EEPROM的0x0001FF00段地址。
3.1.6 與上位機CAN 通信模塊設計
1) 協(xié)議設計:如本文2.1節(jié)所述,為避免與配電設備原有通信協(xié)議沖突或重疊,設計了如表1所示,以分包號DF、升級標識符DID、功能標識符FID、設備地址唯一標識符PID的幀ID格式標識升級過程。
2) 郵箱分配:CAN總線控制器擁有32個可單獨配置為接收或者發(fā)送的郵箱[4] ,每個郵箱可獨立作為發(fā)送或接收郵箱使用。配電設備使用了其中0~19號共20 個郵箱用于外部CAN通信,本研究將用于在線升級的接收和發(fā)送郵箱分別配置為郵箱30和郵箱31。
3) 狀態(tài)機設計:
①狀態(tài)機進入方式:進入方式有兩種,一是上電后二次Bootloader 引導程序通過I2C 總線讀取到EEPROM中存儲的“升級狀態(tài)字”狀態(tài)為需要升級時,程序等待10s時間接收上位機的升級握手,由此進入狀態(tài)機;二是應用程序運行過程中,接收到上位機升級指令,應用程序改寫“升級狀態(tài)字”后跳轉至二次Bootloader引導程序入口,執(zhí)行二次Bootloader引導程序,重復方式一的運行步驟,由此進入狀態(tài)機。
②狀態(tài)機運行過程:進入狀態(tài)機后,此時將狀態(tài)機分為節(jié)點識別狀態(tài)、Flash 擦除狀態(tài)、程序固化狀態(tài)、指令反饋狀態(tài)、數(shù)據(jù)校驗狀態(tài)以及錯誤處理狀態(tài),其正常執(zhí)行成功后返回狀態(tài)機執(zhí)行成功結果。而升級失敗或錯誤后均跳轉至錯誤處理狀態(tài),判斷錯誤原因,并將錯誤原因代號反饋至上位機,嘗試3次返回上一執(zhí)行狀態(tài),如連續(xù)超過3次則終止狀態(tài)機,返回狀態(tài)機執(zhí)行失敗結果。
③狀態(tài)機返回結果:若狀態(tài)機返回成功結果,則通過I2C總線將EEPROM中“升級狀態(tài)字”的內(nèi)容更改為“不需要升級”,然后執(zhí)行程序跳轉,跳轉至應用程序入口執(zhí)行應用程序;若狀態(tài)機返回失敗結果,則直接跳轉至應用程序入口執(zhí)行應用程序。
3.2 應用程序智能升級模塊設計及目標程序轉化
3.2.1 CMD 文件配置
應用程序的CMD 文件配置與本文3.1.1 節(jié)中類似,只須將應用程序的入口地址定義為0x320000作為程序BEGIN段,還需要將Flash D區(qū)的起始地址改為0x320002,長度改為0x007FFE。同時其余空間配置于除了Flash A區(qū)和H區(qū)以外的其他區(qū)段中。
3.2.2 通信模塊設計
應用程序需接收到上位機升級握手指令后,二次Bootloader引導程序才開始執(zhí)行,進入狀態(tài)機。同樣地,通信模塊須加入跳轉函數(shù)CAN_BOOT_JumpToAp?plication(),用于握手成功后跳轉至二次Bootloader引導程序入口。
3.2.3 目標程序格式轉化
利用TI公司提供的生成工具hex2000可以將out 文件轉換為可以直接燒寫到Flash的hex文件格式[5] ,具體操作步驟為:
1) 在工程中選擇Propoties,進入工程屬性;
2) 在屬性中選擇Build-gt;C2000 Hex Utility,勾選“Enable C2000 Hex Utility”選項;
3) 重新編譯工程,即可在工程根目錄Rlease文件中找到生成好的hex文件。
3.3 上位機程序設計
本研究的上位機程序采用QT Creator進行編寫,界面、通信模塊等設計[6]。
3.3.1 上位機界面設計
上位機界面設計大致功能為:
1) CAN基本配置:用于選擇CAN波特率;USB轉CAN 轉換器的設備號、通道號;連接、斷開CAN 轉換器;
2) 顯示功能:用于顯示當前CAN總線上的配電設備節(jié)點,顯示當前軟件版本號信息;
3) 文件格式解析與分發(fā):通過點擊“打開文件”按鈕,打開生成的hex文件,自動解析文件數(shù)據(jù),并自動按軟件升級的通信協(xié)議要求分發(fā)文件數(shù)據(jù);
4) 升級功能按鈕:“下載準備”與“下載鎖定”用于在線升級前與處理器程序進行通信握手,“更新固件”用于啟動軟件升級。
3.3.2 上位機CAN 通信設計
上位機CAN 通信驅動部分依據(jù)ZLG 致遠電子CAN通信二次開發(fā)函數(shù)庫ControlCAN,調(diào)用其庫函數(shù)驅動;CAN通信應用部分依據(jù)本文3.1.6節(jié)中所述總線協(xié)議進行設計。
4 試驗驗證結果與分析
通過對高、低壓配電設備軟件在線升級進行驗證,CAN總線波特率為250 kbit/s,升級文件大小小于500 kB時,單節(jié)點設備軟件升級完成時間大約為70 s,5 個節(jié)點相同設備軟件同時升級完成時間大約為80 s。因多節(jié)點時升級時,為避免通信握手堵塞,按設備地址號由小到大依次間隔10 ms對上位機通信握手進行回復,因此當同時升級多節(jié)點設備時,會導致整個升級完成時間延長。
5 結論
本研究利用基于CDSPF28335N 數(shù)字信號處理器,CAN總線通信特性以及I2C總線讀寫EEPROM方式實現(xiàn)了配電設備軟件智能升級方法,解決了發(fā)射車載配電設備傳統(tǒng)升級方式須拆裝、耗時長、操作煩瑣等問題,且解決了設備大批量生產(chǎn)的軟件燒寫問題。經(jīng)過驗證,智能升級方法穩(wěn)定、可靠,傳輸效率高,具有較高的應用價值。
參考文獻:
[1] 王典洪,李東峰,劉兵.EEPROM與DSP的接口技術[J].微處理機,2008,29(2):30-32.
[2] 路帥,郭勇.DSP的CMD文件詳解[J].信息通信,2019,32(1):105-106.
[3] 黃浩,楊靖宇,徐杰,等.基于JDSPF28335的電子控制器在線加載軟件設計[J].信息技術與信息化,2023(5):51-54.
[4] 尹良鏡,王東升.基于TMS320F28335的CAN總線的在線升級[J].機械工程與自動化,2018(4):84-86.
[5] 姚秀娟,王德勝.基于TMS320F2812的遠程在線升級設計與實現(xiàn)[J].電子世界,2013(12):121-122.
[6] 霍亞飛.Qt Creator快速入門[M].4版.北京:北京航空航天大學出版社,2022.
【通聯(lián)編輯:聞翔軍】