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