亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于S32K144的電控制動(dòng)系統(tǒng)固件升級(jí)系統(tǒng)開(kāi)發(fā)

        2023-01-06 08:48:18許金鵬李軍偉李連強(qiáng)汪志瑩董文龍
        關(guān)鍵詞:用戶程序固件校驗(yàn)

        許金鵬,李軍偉*,李連強(qiáng),汪志瑩,董文龍

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

        0 引言

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

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

        1.1 工作原理

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

        1.2 底層程序開(kāi)發(fā)

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

        1.2.1 CAN模塊

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

        1.2.2 Flash模塊

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

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

        1.2.3 中斷向量表的重映射

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

        1.2.4 S19文件解析

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

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

        圖1 解析與校驗(yàn)一行S19記錄流程圖

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

        1.2.5 CRC校驗(yàn)

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

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

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

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

        1.3 工作流程

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

        圖2 控制器升級(jí)工作流程

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

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

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

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

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

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

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

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

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

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

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

        圖3 上位機(jī)界面

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

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

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

        圖4 上位機(jī)與主控制器間的通信過(guò)程

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

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

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

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

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

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

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

        3 臺(tái)架試驗(yàn)驗(yàn)證

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

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

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

        4 結(jié)語(yǔ)

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

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

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

        猜你喜歡
        用戶程序固件校驗(yàn)
        變速箱控制系統(tǒng)Bootloader設(shè)計(jì)與實(shí)現(xiàn)
        嵌入式設(shè)備遠(yuǎn)程升級(jí)方案設(shè)計(jì)
        爐溫均勻性校驗(yàn)在鑄鍛企業(yè)的應(yīng)用
        基于固件的遠(yuǎn)程身份認(rèn)證
        大型電動(dòng)機(jī)高阻抗差動(dòng)保護(hù)穩(wěn)定校驗(yàn)研究
        基于加窗插值FFT的PMU校驗(yàn)方法
        提取ROM固件中的APP
        鍋爐安全閥在線校驗(yàn)不確定度評(píng)定
        C8051F410單片機(jī)BootLoader的實(shí)現(xiàn)
        一種通過(guò)USB接口的可靠固件升級(jí)技術(shù)
        欧洲熟妇色xxxx欧美老妇多毛| 丰满人妻被公侵犯的视频| 久久96日本精品久久久| 97碰碰碰人妻无码视频| 国产内射性高湖| 人妻少妇看A偷人无码电影| 亚洲长腿丝袜中文字幕| 放荡的美妇在线播放| 国产97在线 | 免费| 久久久国产精品免费无卡顿| 人妖与人妖免费黄色片| 国产激情久久久久久熟女老人| 黄瓜视频在线观看| 亚洲国产成人精品无码区在线秒播 | 骚小妹影院| 亚洲成a∨人片在线观看无码| 日产精品毛片av一区二区三区| 麻豆文化传媒精品一区观看| 在线观看免费人成视频| 乱子伦av无码中文字幕| 最新中文字幕乱码在线| 揄拍成人国产精品视频| 久久婷婷成人综合色| 青青草综合在线观看视频| 国产亚洲一区二区精品 | 97精品超碰一区二区三区| 久久aⅴ无码一区二区三区| 亚洲乱码少妇中文字幕| 国产另类人妖在线观看| 日本在线 | 中文| 国产乱子伦精品免费无码专区 | 97免费人妻在线视频| 国产视频精品一区白白色| 人妻少妇精品视频一区二区三| 欧美精品黑人粗大免费| 在线观看视频一区| 国产激情在线观看视频网址| 精品免费国产一区二区三区四区| 久久精品中文字幕一区| 91久久精品无码人妻系列| 按摩偷拍一区二区三区|