• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于S32K144的電控制動系統(tǒng)固件升級系統(tǒng)開發(fā)

    2023-01-06 08:48:18許金鵬李軍偉李連強汪志瑩董文龍
    內(nèi)燃機與動力裝置 2022年6期
    關(guān)鍵詞:用戶程序固件校驗

    許金鵬,李軍偉*,李連強,汪志瑩,董文龍

    1.山東理工大學交通與車輛工程學院,山東 淄博 255049;2.一汽解放青島汽車有限公司,山東 青島 266217;3.北京裕峻汽車技術(shù)研究院,北京 100016

    0 引言

    電控制動系統(tǒng)(electronic brake system,EBS)的制動性能與人們的行車安全密切相關(guān),EBS控制器的升級優(yōu)化是行車安全的重要保障。傳統(tǒng)的升級方式是拆開EBS控制器的外殼,利用各種調(diào)試接口,使用寫入器對控制器進行升級維護。這種升級方式的缺點是需要單獨引出下載接口,升級過程操作復(fù)雜,費時費力,同時有泄露源程序的風險?,F(xiàn)在的升級方式主要是通過EBS的控制器局域網(wǎng)絡(luò)(controller area network,CAN)接口升級程序,該升級方式可以提高保密性,減少現(xiàn)場升級維護的時間及成本[1-3]。文獻[4]中基于S32R274芯片開發(fā)汽車電子控制單元引導(dǎo)加載程序,為單片機固件升級系統(tǒng)開發(fā)提供了技術(shù)參考。文獻[5]中將基于S32K148芯片的引導(dǎo)加載程序與汽車網(wǎng)關(guān)結(jié)合,實現(xiàn)了車輛網(wǎng)關(guān)模塊開發(fā)。本文中針對S32K144主控芯片,設(shè)計開發(fā)EBS固件升級系統(tǒng),結(jié)合循環(huán)冗余校驗(cyclic redundancy check,CRC)算法,提高升級過程中的可靠性與穩(wěn)定性,解決實際工程中EBS升級困難的問題。

    1 EBS固件升級系統(tǒng)開發(fā)

    1.1 工作原理

    EBS包括主控制器、前橋控制器和后橋控制器3個控制器。主控制器接收駕駛員發(fā)出的制動信號,信息處理后,發(fā)送給前、后橋控制器。前、后橋控制器接收到主控制器發(fā)來的信號后,控制常閉增壓電磁閥工作,輸出高壓氣體,分別控制前、后制動器工作。主控制器位于車輛內(nèi)部,前、后橋控制器分別位于車輛的前、后橋位置,由于所在位置均不易拆卸,EBS后期升級維護比較困難。本文中采用CAN總線作為通信媒介,通過上位機向指定控制器發(fā)送特定的控制報文,指定控制器調(diào)用Flash模塊實現(xiàn)程序刷寫,實現(xiàn)EBS固件升級。

    1.2 底層程序開發(fā)

    主控制器、前橋控制器和后橋控制器的主控芯片均為S32K144,控制器升級系統(tǒng)底層程序開發(fā)主要分為CAN模塊、Flash模塊、中斷向量表的重映射、S19文件解析、CRC校驗5部分。

    1.2.1 CAN模塊

    CAN模塊實現(xiàn)控制器主控芯片S32K144與上位機的通信。CAN模塊時鐘頻率設(shè)置為8 MHz,波特率設(shè)置為500 kbit/s,報文傳輸格式設(shè)置為標準幀,上位機向EBS控制器發(fā)送報文的標識符(identification,ID)定義為0x601,EBS控制器向上位機發(fā)送報文的ID定義為0x602。CAN模塊的接收緩沖區(qū)開啟ID濾波器,只接收固定ID的報文,防止升級過程中其他報文干擾,提高工作效率。

    1.2.2 Flash模塊

    Flash模塊實現(xiàn)對控制器單片機內(nèi)存空間的擦除和寫入。S32K144芯片擁有512 kB的P_Flash內(nèi)存空間,P_Flash內(nèi)存空間主要存儲運行程序,斷電時不丟失數(shù)據(jù),分為128個扇區(qū),最小擦除單位為1個扇區(qū),S32K144芯片的Flash不支持邊讀邊寫,需將執(zhí)行擦除和寫入部分的代碼復(fù)制到隨機存取存儲器(random access memory,RAM)中運行,設(shè)置Flash通用命令寄存器FTFC_FCCOB0為0x09,可擦除某個扇區(qū)。設(shè)置FTFC_FCCOB0寄存器的為0x07,可寫入數(shù)據(jù)至單片機內(nèi)存中。在單片機寫入前必須將該區(qū)域擦除,才能保證數(shù)據(jù)正確寫入。

    S32K144單片機Flash內(nèi)存空間存儲地址分為2部分:升級系統(tǒng)分配地址段為0x00000000~0x00008FFF,用來存儲固件升級系統(tǒng)的底層程序;用戶程序分配地址段為0x00009000~0x0007FFFF,用來存儲用戶程序。

    1.2.3 中斷向量表的重映射

    EBS固件升級系統(tǒng)底層程序的中斷向量表使用默認地址,地址段為0x00000000~0x00000400,將用戶程序中鏈接文件m_interrupts起始位置修改為0x00009000,可實現(xiàn)用戶程序中斷向量表重映射,用戶程序中斷向量表地址為0x00009000~0x00009400。

    1.2.4 S19文件解析

    S19文件由S32DS IDE開發(fā)環(huán)境編譯生成,用來存儲用戶程序。S19文件包括記錄數(shù)據(jù)的類型、剩余數(shù)據(jù)字節(jié)數(shù)、存儲地址、數(shù)據(jù)及校驗和,前2個字符用ASCII碼表示,其余數(shù)據(jù)用十六進制表示。記錄數(shù)據(jù)的類型字節(jié)數(shù)為2個,用S0、S1、S2、S3、S5、S7、S8、S9表示,S0表示記錄的開始,代表S19文件開始;S1、S2、S3分別表示需要寫入至單片機內(nèi)存中的數(shù)據(jù)存儲地址長度為2個字節(jié)、3個字節(jié)、4個字節(jié);S5不是每個S文件必須包含的,表示S1、S2、S3的個數(shù);S7、S8、S9表示中止記錄,代表S19文件結(jié)束;剩余數(shù)據(jù)字節(jié)數(shù)表示存儲地址、數(shù)據(jù)以及校驗和的總字節(jié)數(shù),字節(jié)數(shù)為1個;存儲地址表示該行S19數(shù)據(jù)在單片機中的具體地址;數(shù)據(jù)表示需更新寫入的代碼,字節(jié)數(shù)為0~32;校驗和字節(jié)數(shù)為1[6]。

    S19文件寫入單片機內(nèi)存時,要對S19文件每行數(shù)據(jù)解析與校驗,保證每行數(shù)據(jù)正確傳輸,具體流程如圖1所示。

    圖1 解析與校驗一行S19記錄流程圖

    由圖1可知:解析S19文件時先判斷該行寫入的數(shù)據(jù)首字符是否為S,若是則解析記錄數(shù)據(jù)的類型,確定存儲地址的長度,若不是S會返回錯誤指令;對剩余數(shù)據(jù)字節(jié)數(shù)、存儲地址、數(shù)據(jù)、校驗和分別進行解析;解析完畢后根據(jù)校驗和對該行需要寫入的數(shù)據(jù)進行校驗,校驗通過該行S19數(shù)據(jù)會寫入至單片機內(nèi)存中,不通過則返回錯誤指令。

    1.2.5 CRC校驗

    EBS固件升級系統(tǒng)對數(shù)據(jù)的通信安全要求非常嚴格,如果用戶程序不能正確升級,控制器無法正常工作。CRC是數(shù)據(jù)通信中常用的查錯校驗方法,該方法基于線性編碼理論,對傳輸數(shù)據(jù)按照一定的規(guī)則進行多項式計算,保證數(shù)據(jù)傳輸?shù)耐暾院驼_性[7]。基本原理為:將發(fā)送方發(fā)送的m位信息序列作為1個多項式的系數(shù),按照某種規(guī)則產(chǎn)生CRC碼并發(fā)送出去;接收方接收到CRC碼,根據(jù)接收到的信息序列按照一定規(guī)則進行解析,確定傳輸過程是否出現(xiàn)錯誤。

    發(fā)送方在編碼前由原始數(shù)據(jù)產(chǎn)生原始多項式p(x),p(x)最高次冪為m-1,選用CRC_16查表校驗法,生成多項式k(x)=x16+x15+x2+1,最高次冪為16,將原始多項式p(x)與x16相乘后除以k(x),所得的余式為q(x)[8],即為產(chǎn)生的CRC碼,將CRC碼按照一定的規(guī)則編碼后,得到的多項式

    T(x)=x16p(x)+q(x)。

    接收方將T(x)除以k(x),若余數(shù)為0,則傳輸正確,否則傳輸錯誤。S19所有傳輸數(shù)據(jù)寫入單片機內(nèi)存后,對寫入的所有數(shù)據(jù)進行CRC計算,得到校驗碼A。上位機對發(fā)送給控制器的S19數(shù)據(jù)也進行同樣的CRC算法,得到校驗碼B,對比校驗碼A、B,若相同則證明寫入到控制器單片機內(nèi)存的程序和S19文件完全相同,不同則證明寫入錯誤。

    1.3 工作流程

    S32K144單片機使用ARM Cortex M系列的內(nèi)核,每次單片機上電或復(fù)位后從Reset_Handler復(fù)位向量開始,對內(nèi)部系統(tǒng)及RAM等進行初始化后再跳轉(zhuǎn)到main函數(shù)執(zhí)行程序[9]。EBS 3個控制器芯片相同,升級工作流程相同,控制器升級工作流程如圖2所示。

    圖2 控制器升級工作流程

    1)當控制器上電或復(fù)位后,對單片機應(yīng)用環(huán)境初始化,對時鐘模塊、CAN模塊、Flash模塊等初始化。

    2)在主函數(shù)中等待3 s,如果3 s內(nèi)收到來自上位機的升級指令,進入用戶升級程序,如果未收到來自上位機的升級指令,跳出升級程序,直接執(zhí)行用戶程序。

    3)執(zhí)行用戶升級程序,對原來用戶程序的Flash區(qū)域進行擦除,擦除地址為0x9000~0x7FFFF。

    4)單片機內(nèi)存接收來自上位機傳輸?shù)腟19數(shù)據(jù),接收1幀S19文件數(shù)據(jù)后保存至數(shù)組中,同時應(yīng)答上位機。

    5)上位機發(fā)送完1行S19數(shù)據(jù)后,發(fā)出完畢命令,控制器接收到命令后,將保存在數(shù)組中的整行S19文件數(shù)據(jù)進行解析校驗,校驗通過后應(yīng)答上位機。

    6)循環(huán)往復(fù),直至上位機發(fā)送完畢所有S19文件數(shù)據(jù)。

    7)單片機接收完來自上位機S19文件的所有數(shù)據(jù)后,對寫入至單片機內(nèi)部所有數(shù)據(jù)進行CRC校驗,并與S19文件數(shù)據(jù)CRC校驗碼對比;若校驗通過,則回應(yīng)上位機升級成功,跳轉(zhuǎn)至新用戶程序的開始地址執(zhí)行程序;若校驗未通過,則回應(yīng)上位機升級失敗,不執(zhí)行新的用戶程序。

    2 EBS固件升級系統(tǒng)上位機開發(fā)

    調(diào)用某公司CAN分析儀的相關(guān)庫函數(shù),發(fā)送和接收CAN報文,實現(xiàn)上位機與控制器之間的信息交互[10]。

    2.1 上位機界面設(shè)計

    使用PyCharm中的工具包pyqt5調(diào)用QT Designer庫[11],搭建EBS固件升級系統(tǒng)上位機圖形界面,對搭建好的界面生成對應(yīng)的Python界面配置代碼,如圖3所示。

    圖3 上位機界面

    由圖3可知,上位機界面主要分為CAN配置、下載設(shè)置2部分。CAN配置功能包括配置波特率、打開CAN卡、復(fù)位CAN卡以及關(guān)閉CAN卡。下載設(shè)置功能包括發(fā)送指定控制器(主控制器、前橋控制器、后橋控制器)升級命令報文、加載S19文件、開始更新、導(dǎo)出信息。發(fā)送指定控制器(主控制器、前橋控制器、后橋控制器)升級命令報文對應(yīng)上位機3個不同按鍵,對應(yīng)的升級命令分別為0xFF01、0xFF02、0xFF03。上位機顯示界面分為3個部分:顯示運行狀態(tài)、進度條、運行窗口。顯示運行狀態(tài)將上位機當前運行狀態(tài)在窗口中顯示,進度條顯示當前下載進度,運行窗口實時顯示S19文件下載到第幾行。

    2.2 上位機通信協(xié)議

    為實現(xiàn)上位機與控制器的正常通信,需要自定義通信協(xié)議[12-13]。本通信協(xié)議使用的CAN報文為標準幀,上位機使用CAN分析儀分別與主控制器、前橋控制器及后橋控制器進行通信,上位機與主控制器通信過程如圖4所示。

    圖4 上位機與主控制器間的通信過程

    1)上位機通過ID為0x601的報文發(fā)送主控制器開始升級命令(0xFF01),主控制器接收到命令后進入用戶升級程序。先對保存用戶程序的Flash區(qū)域進行擦除,擦除成功后,通過ID為0x602的報文向上位機發(fā)送0xAC,表示連接成功。

    2)上位機收到0xAC后,通過ID為0x601的報文發(fā)送主控制器要刷寫的S19文件數(shù)據(jù),主控制器接收數(shù)據(jù)后回應(yīng)0xAC,發(fā)送1行S19數(shù)據(jù)完畢后,上位機通過ID為0x601的報文向主控制器發(fā)送0xFE,表示1行S19發(fā)送完畢。

    3)主控制器收到0xFE后,將保存的1行S19數(shù)據(jù)寫入到指定的單片機內(nèi)存,寫入成功后,通過ID為0x602的報文向上位機發(fā)送0xAC,表示刷寫成功。

    4)循環(huán)往復(fù),直至上位機將所有的S19文件數(shù)據(jù)發(fā)送完畢。

    5)上位機通過ID為0x601的報文向主控制器發(fā)送0xFB以及該S19文件的CRC校驗碼,主控制器接收后對寫入到單片機內(nèi)存的數(shù)據(jù)進行CRC校驗,得到另1個校驗碼,比較2個校驗碼,相同則表示數(shù)據(jù)寫入成功,主控制器通過報文ID為0x602的報文發(fā)送0xAB,表示寫入成功;不同表示寫入失敗,主控制器通過報文ID為0x602的報文發(fā)送0xAE,表示CRC校驗失敗,寫入失敗。

    6)S19文件數(shù)據(jù)成功寫入后,主控制器跳出用戶升級程序,執(zhí)行新的用戶程序,實現(xiàn)用戶程序在線升級。

    7)某控制器在用戶程序刷寫時,另2個控制器正常工作。如3個控制器都需進行程序?qū)懭?,先選擇1個控制器進行程序?qū)懭耄瓿珊髮ο?個控制器進行程序?qū)懭?,依次完成在線升級。

    3 臺架試驗驗證

    在商用車氣壓制動系統(tǒng)臺架上進行EBS固件升級試驗。通過S32DS軟件對用戶程序編譯后生成S19文件,上位機CAN卡配置完畢后,點擊主控制器按鍵,完成上位機與主控制器的連接,之后點擊“加載文件”“開始更新”按鈕,主控制器開始升級用戶程序。升級后所有的按鈕變?yōu)椴豢墒褂脿顟B(tài),防止誤觸導(dǎo)致程序下載失敗。當上位機的運行狀態(tài)框中出現(xiàn)“S文件更新完成”后,主控制器完成升級,使用相同的方式對前橋和后橋的控制器進行程序更新。

    EBS系統(tǒng)的3個控制器升級完畢后,使用J_Link讀取單片機內(nèi)存中的數(shù)據(jù),并與下載的S19文件進行對比,驗證程序下載的完整性以及準確性。通過對比用戶程序的S19文件以及讀取的單片機內(nèi)存數(shù)據(jù),二者完全一致,用戶程序正確下載至單片機內(nèi)存中。

    將EBS的3個控制器安裝在商用車氣壓制動系統(tǒng)臺架上,進行制動試驗,踩下制動踏板后,前、后制動控制器工作,打開電磁閥,氣罐中的壓縮氣體被輸送到對應(yīng)管路中實現(xiàn)制動,完成EBS控制器系統(tǒng)升級。

    4 結(jié)語

    1)EBS固件升級系統(tǒng)實現(xiàn)了基于CAN總線通信技術(shù)的在線升級,方便了后期技術(shù)人員對EBS控制器的升級維護。

    2)EBS固件升級系統(tǒng)對用戶程序進行了雙重校驗,S19文件每行數(shù)據(jù)按照S19文件解析校驗方式進行校驗,所有數(shù)據(jù)寫入單片機內(nèi)存后進行1次CRC校驗,提高了升級系統(tǒng)的準確性。

    3)EBS固件升級系統(tǒng)能夠滿足實際工程要求,解決了實車環(huán)境中EBS控制器升級困難的問題,提升了后期維護升級的便利性、安全性。

    猜你喜歡
    用戶程序固件校驗
    變速箱控制系統(tǒng)Bootloader設(shè)計與實現(xiàn)
    嵌入式設(shè)備遠程升級方案設(shè)計
    爐溫均勻性校驗在鑄鍛企業(yè)的應(yīng)用
    基于固件的遠程身份認證
    大型電動機高阻抗差動保護穩(wěn)定校驗研究
    電測與儀表(2015年1期)2015-04-09 12:03:02
    基于加窗插值FFT的PMU校驗方法
    提取ROM固件中的APP
    電腦愛好者(2015年7期)2015-04-09 08:54:02
    鍋爐安全閥在線校驗不確定度評定
    C8051F410單片機BootLoader的實現(xiàn)
    一種通過USB接口的可靠固件升級技術(shù)
    慈利县| 即墨市| 岳阳县| 聂荣县| 霍城县| 西乡县| 松原市| 温宿县| 葵青区| 中阳县| 宣化县| 桦甸市| 绍兴市| 松原市| 奉节县| 星子县| 科技| 潼关县| 张掖市| 犍为县| 常山县| 克拉玛依市| 潮州市| 小金县| 天长市| 固原市| 新田县| 澳门| 杭锦后旗| 喀喇沁旗| 东海县| 昌邑市| 车险| 中方县| 石首市| 洛隆县| 隆回县| 仪陇县| 阿勒泰市| 武城县| 册亨县|