陳思羽 胡常鑫 楊慧超


摘 要:為解決高電壓大功率的直流儲能供電系統中BMS模塊中的控制程序升級過程過于繁瑣,升級時間過長的問題,利用系統現有的CAN通訊總線,通過對現有的程序進行小幅度修改,實現程序的自動分發升級,并在操作過程中充分考慮程序的保密,并充分考慮重要模塊不可長時間中斷運行的問題,具有快速,便捷,穩定,可靠,易于移植等特點。
關鍵詞:在線升級;CAN總線;批量;加密校驗
引言
傳統的程序下載升級是由電腦使用程序燒錄軟件通過程序燒錄工具對單片機進行下載和升級(重新下載)來實現的,這種方法操作起來過于繁瑣非常不利于產品的后續開發和測試。近年來有廠家推出了脫機燒錄工具,這種燒錄工具可以實現脫離電腦的程序燒寫,比如《具有電壓跌落補償的鋰電池儲能供電系統研究》一文所在的項目中使用的就是這種方法,對單體BMS設備引出下載線,并使用脫機燒錄工具對程序進行升級,但是由于單體BMS設備數量眾多,每個儲能柜中的每個單體的程序代碼各不相同,這就造成了升級時間依然過長。對于設備升級的問題,羅成娥[1]提出了基于CAN總線的STM32F103VET6的程序升級系統。李龍光[2]對改系統進行進一步優化,簡述了上位機和單片機的握手機制,但是由于CAN總線傳輸速度慢,造成了單片機升級時間過長,使得單片機在升級過程中無法進行正常工作,于此,本文對該系統進行改進,提出了一種超短程序中斷時間的升級方法。
1 STM32程序運行原理及軟件設計
1.1 IAP升級機理及設計
首先STM32f103系列可設置為從ROM啟動或FLASH啟動,并且在單片機運行時可通過程序對FLASH中內容進行修改,我們應用這一點,通過對意法半導體公司的STM32f103系列啟動方式是由BOOT0和BOOT1引腳進行啟動的,我們將把BOOT0引腳設置為低電平即由FLASH啟動,然后單片機將由boot引腳設置將中斷向量表定位于FLASH區即起始地址為0x8000000同時單片機將PC指針指向0x8000000處。Cortex-M3內核規定[3],起始地址必須存放堆頂指針,而第二個地址則必須存放復位中斷入口向量地址,這樣在Cortex-M3內核復位后,會自動從起始地址的下一個32位空間取出復位中斷入口向量,跳轉執行復位中斷服務程序。對比ARM7/ARM9內核,Cortex-M3內核則是固定了中斷向量表的位置而起始地址是可變化的。
1.2? FLASH存儲功能劃分及功能結構
通過分析上述機制通過對單片機存儲劃分為BootLoader、標志位、APP、Updata區。在啟動時,首先由BootLoader引導啟動,通過判斷標志位決定是否進行在線升級操作,并執行相應的功能,然后跳轉到APP區進行正常的程序運行,具體流程如下圖所示:
程序運行時通過校驗更新標記位中的校驗信息和升級信息來判斷是否需要升級和Updata區數據是否正常,如果正常將Updata區數據復制到APP區并跳轉到APP區運行,如果升級過充中出錯則視情況直接跳轉到APP區或重新開始升級。
2 電腦端CAN總線升級程序
由于單片機升級過程中升級包大小達到幾K-幾十K之間,并且升級過程中需要對數據進行拆分,封包,計算校驗值,與單片機程序端在傳輸數據時需要傳輸握手包,功能型指令包括清空FLASH、發送校驗碼、發送大小等操作,所以必須一個與之對應的電腦程序和硬件與CAN總線進行連接,測試過程中使用藍馬a1+型號usb轉CAN作為電腦和can總線的橋梁,其升級界面如圖2-1所示。
經過試驗驗證,本文所述升級程序升級過程可靠,對現有程序影響小所以易于對現有程序添加CAN升級功能,十分適合產品研發過程中CAN總線升級功能實現和對現有產品功能的升級。
3 結束語
本文運用STM32系列單片機內部的FLASH擦除功能,設計了一套基于CAN總線的在線升級方案,具有低程序中斷時間,升級過程穩定可靠,不易丟失升級數據,幾乎不會造成因程序存儲過程出錯或在升級過程中斷電造成單片機無法再次升級等情況,適合對在線升級可靠性要求比較高的場合使用,但是由于本系統所使用的USB轉CAN性能不足,造成數據傳輸比較慢的情況,有待后續的改進。
參考文獻
[1]羅成娥,任海強.基于CAN總線的在線升級系統設計與實現[J].數字通信,2013(06):32-36+40.
[2]李龍光,劉振威,喬海強,等.基于CAN總線的STM32F107程序在線升級[J].測控技術,2018,037(009):156-158.
[3]季賽玲.一種利用可控硅實現STM32串口自動下載代碼的方法設計[J].電腦知識與技術,2018,014(011):245-246.
作者簡介:
陳思羽(1993—),男,黑龍江省雞西市人,在讀碩士,學生,主要研究方向為人工智能和風電故障診斷。