• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于UDS協(xié)議的CAN BootLoader的開(kāi)發(fā)與驗(yàn)證

      2021-01-04 03:59:28余瑩瑩王法龍王定庚
      客車(chē)技術(shù)與研究 2020年6期
      關(guān)鍵詞:程序代碼下位上位

      余瑩瑩, 王法龍, 楊 卓, 王定庚

      (安徽安凱汽車(chē)股份有限公司, 合肥 230051)

      隨著汽車(chē)電子技術(shù)的迅猛發(fā)展,電控單元越來(lái)越復(fù)雜,新技術(shù)的出現(xiàn)導(dǎo)致電控產(chǎn)品需要不斷更新?lián)Q代,其在線程序升級(jí)就顯得尤為重要。采用基于UDS協(xié)議CAN總線的BootLoader 來(lái)實(shí)現(xiàn)VCU軟件代碼的更新是一種有效的解決方案[1]。本文基于UDS協(xié)議中的診斷服務(wù),設(shè)計(jì)一種CAN BootLoader來(lái)完成上下位機(jī)之間的通訊以及信息交互,實(shí)現(xiàn)對(duì)VCU程序代碼的在線更新。

      1 CAN BootLoader 系統(tǒng)總體設(shè)計(jì)

      BootLoader程序是VCU上電后最先運(yùn)行的一段代碼,首先會(huì)對(duì)硬件設(shè)備進(jìn)行初始化,同時(shí)會(huì)為相關(guān)的寄存器進(jìn)行賦值,設(shè)置內(nèi)核啟動(dòng)參數(shù)。初始化完成后,BootLoader會(huì)進(jìn)入CAN總線通信循環(huán)等待上位機(jī)命令,當(dāng)接收到啟動(dòng)命令后,它會(huì)將電控單元FLASH中的應(yīng)用程序代碼加載至系統(tǒng)內(nèi)存RAM中,并跳轉(zhuǎn)到應(yīng)用程序入口開(kāi)始運(yùn)行;當(dāng)BootLoader接收到上位機(jī)發(fā)送的下載命令后,它會(huì)通過(guò)CAN總線從上位機(jī)上將應(yīng)用程序代碼下載下來(lái)并燒寫(xiě)到電控單元的FLASH 中存儲(chǔ)起來(lái),從而實(shí)現(xiàn)VCU的在線程序下載功能[2]。

      本文主要是基于UDS診斷服務(wù)協(xié)議,將上位機(jī)發(fā)送的數(shù)據(jù)經(jīng) USB轉(zhuǎn) CAN接口轉(zhuǎn)換器轉(zhuǎn)換成 CAN幀,發(fā)送至下位機(jī)的 CAN 接收緩沖區(qū),下位機(jī)接收到信息處理后作出應(yīng)答,并將數(shù)據(jù)幀通過(guò) USB轉(zhuǎn) CAN接口轉(zhuǎn)換器發(fā)送至上位機(jī)形成循環(huán),實(shí)現(xiàn)信息交互。圖1為 CAN BootLoader系統(tǒng)架構(gòu)圖。

      圖1 CAN BootLoader系統(tǒng)架構(gòu)圖

      UDS(Unified Diagnostic Services)診斷服務(wù)協(xié)議[2]即 ISO 14229 統(tǒng)一診斷服務(wù),是ISO國(guó)際標(biāo)準(zhǔn)化組織為實(shí)現(xiàn)車(chē)輛電子系統(tǒng)故障診斷服務(wù)而制定的統(tǒng)一國(guó)際標(biāo)準(zhǔn)。通過(guò)讀取數(shù)據(jù)流獲取 VCU 內(nèi)部狀態(tài)信息,是PC上位機(jī)與整車(chē)VCU 之間通信必不可少的一部分。在診斷規(guī)范中,定義了上位機(jī)和整車(chē)VCU 之間的請(qǐng)求響應(yīng)規(guī)則,以及對(duì)于請(qǐng)求報(bào)文時(shí)整車(chē)VCU 的處理行為[3]。

      基于UDS協(xié)議的CAN BootLoader在線程序升級(jí)刷新操作,需要依照 UDS 協(xié)議規(guī)則來(lái)處理會(huì)話, 用到相關(guān)的 UDS 服務(wù)有 VCU 握手識(shí)別、 數(shù)據(jù)之間的交互、 FLASH擦除、 數(shù)據(jù)寫(xiě)入及擦寫(xiě)保護(hù)等。

      2 CAN BootLoader各部分具體設(shè)計(jì)

      2.1 CAN BootLoader PC上位機(jī)設(shè)計(jì)

      CAN BootLoader PC上位機(jī)是一個(gè)下載工具,主要用于配合VCU下位機(jī) BootLoader 讀取和下載升級(jí)應(yīng)用程序代碼。對(duì)于本文所使用的 MPC5534 芯片,通過(guò)其集成開(kāi)發(fā)環(huán)境對(duì)應(yīng)用程序進(jìn)行編譯后,生成下載所需的 S19 文件[4]。本文使用 Microsoft Visual Studio 軟件設(shè)計(jì) CAN BootLoader 的PC上位機(jī)通信界面,如圖 2 所示。

      圖2 CAN BootLoader 上位機(jī)通信界面

      在PC上位機(jī)程序中直接設(shè)置好發(fā)送幀類(lèi)型、CAN 通道以及發(fā)送 ID 號(hào)等參數(shù),在其通信界面上選擇相應(yīng)的目標(biāo)設(shè)備以及波特率后,點(diǎn)擊 Connect 按鈕,初始化 CAN 成功后,點(diǎn)擊界面上的 OpenFile 按鈕,在文件路徑選擇目標(biāo) S19 文件,點(diǎn)擊 Program 按鈕,讓PC上位機(jī)與VCU下位機(jī)建立 CAN 通信連接。當(dāng)PC上位機(jī)和VCU下位機(jī)基于UDS協(xié)議規(guī)則流程成功握手后,PC上位機(jī)通過(guò) CAN 總線不斷向VCU下位機(jī)發(fā)送程序下載命令并等待來(lái)自下位機(jī)的響應(yīng),同時(shí)在上位機(jī)通信界面Record 顯示框中觀察接收到的 CAN 數(shù)據(jù)幀及相關(guān)信息。當(dāng)目標(biāo) S19 文件全部解析并下載完成后,VCU 的新程序就升級(jí)完畢。

      2.2 CAN BootLoader下載流程設(shè)計(jì)

      VCU下位機(jī) 與PC上位機(jī)之間需通過(guò) UDS 協(xié)議的下載流程規(guī)則來(lái)處理會(huì)話。本文UDS_BootLoader下載流程如圖3所示,主要內(nèi)容如下:

      1) 首先進(jìn)入待機(jī)握手階段,PC上位機(jī)發(fā)送診斷會(huì)話擴(kuò)展模式請(qǐng)求,VCU下位機(jī)肯定響應(yīng)后進(jìn)入BootLoader下載過(guò)程[5]。

      2) 在程序下載之前,需進(jìn)入安全訪問(wèn)服務(wù)。

      圖3 UDS_BootLoader流程圖

      3) 更新主程序之前,PC上位機(jī)需請(qǐng)求擦除FLASH服務(wù),VCU下位機(jī)給予肯定響應(yīng)后,此時(shí)程序擦除完畢。

      4) 上位機(jī)發(fā)送下載服務(wù)請(qǐng)求VCU肯定響應(yīng)。

      5) 上位機(jī)接收到下載確認(rèn)請(qǐng)求后,開(kāi)始解析應(yīng)用程序代碼,通過(guò)CAN總線循環(huán)發(fā)送給VCU,進(jìn)行數(shù)據(jù)傳輸。

      6) 上位機(jī)將數(shù)據(jù)校驗(yàn)碼發(fā)送給VCU,VCU對(duì)接收到的數(shù)據(jù)進(jìn)行校驗(yàn)比對(duì)后,給予肯定響應(yīng),完成數(shù)據(jù)校驗(yàn)。

      7) 上位機(jī)向VCU發(fā)送下載結(jié)束請(qǐng)求,VCU給出肯定應(yīng)答后,下載數(shù)據(jù)完畢。

      8) VCU復(fù)位重啟后運(yùn)行應(yīng)用程序,程序刷寫(xiě)升級(jí)完成。

      2.3 CAN BootLoader 的VCU下位機(jī)實(shí)現(xiàn)

      VCU下位機(jī)按照UDS協(xié)議對(duì)PC上位機(jī)的請(qǐng)求進(jìn)行響應(yīng)。車(chē)輛上電后,嵌入式芯片一般都會(huì)在 FLASH 存儲(chǔ)區(qū)首地址尋找程序代碼并執(zhí)行。FLASH 存儲(chǔ)空間由 BootLoader 程序和應(yīng)用程序共同占據(jù)[6]。BootLoader 是用戶應(yīng)用程序運(yùn)行之前運(yùn)行的一段程序,對(duì)硬件進(jìn)行相應(yīng)的初始化和設(shè)定,最終為操作系統(tǒng)準(zhǔn)備好環(huán)境[7]。因此,CAN BootLoader 的嵌入式系統(tǒng)會(huì)在 FLASH 的起始段為 BootLoader 專(zhuān)門(mén)開(kāi)辟一個(gè)較小的存儲(chǔ)空間。BootLoader 代碼作為芯片上電后需要最先運(yùn)行的程序[8],其中斷向量表首地址會(huì)與 FLASH 存儲(chǔ)區(qū)首地址一致,而應(yīng)用程序作為被引導(dǎo)的程序代碼,則需配置在剩余空間內(nèi)。

      圖4 VCU下位機(jī)BootLoader整體流程圖

      CAN BootLoader上位機(jī)與下位機(jī)的CAN信息交互,均使用標(biāo)準(zhǔn)幀ID[9]。本文中的下位機(jī) CAN BootLoader 主要基于 CodeWarrior 5.1 軟件開(kāi)發(fā),采用UDS協(xié)議規(guī)則對(duì) BootLoader 存儲(chǔ)空間實(shí)現(xiàn)讀取、寫(xiě)入以及擦除功能。其整體流程[10]如圖4所示。

      3 CAN BootLoader 功能測(cè)試驗(yàn)證

      基于 UDS 協(xié)議的 CAN BootLoader 開(kāi)發(fā)好后,通過(guò)BootLoader上位機(jī)下載工具可以對(duì)VCU下位機(jī)內(nèi)的BootLoader進(jìn)行功能測(cè)試,具體測(cè)試方法如下:

      1) 首先將裝有上位機(jī)軟件的 PC 機(jī)和事先刷寫(xiě)好 BootLoader 的 VCU 下位機(jī)通過(guò) PCAN 卡相連,通過(guò) CAN 總線建立通信,并在上位機(jī)上監(jiān)測(cè) CAN 通信信息。

      2) 當(dāng)VCU下位機(jī)上電時(shí),啟動(dòng)上位機(jī),CAN 初始化成功后向下位機(jī)發(fā)送握手請(qǐng)求。

      3) 上位機(jī)和下位機(jī)建立連接后,將目標(biāo) S19 文件加載至上位機(jī)中,并對(duì)下位機(jī)發(fā)送下載請(qǐng)求,按照?qǐng)D3所示的UDS_BootLoader流程,將應(yīng)用程序順利地下載至 VCU下位機(jī)中,此時(shí)上位機(jī)通信界面上可以實(shí)時(shí)監(jiān)測(cè)程序下載完成情況以及 CAN 報(bào)文信息,部分結(jié)果如圖 5所示。

      圖5 下載CAN 報(bào)文信息

      4) 重啟VCU下位機(jī),并下載一個(gè)與之前不同的應(yīng)用程序,下載完成后,VCU下位機(jī)重啟上電。通過(guò)上位機(jī)監(jiān)測(cè) CAN 總線報(bào)文,發(fā)現(xiàn)下載至下位機(jī)中的應(yīng)用程序已被更換。

      經(jīng)過(guò)以上多次反復(fù)測(cè)試后,驗(yàn)證結(jié)果表明該 CAN BootLoader 在不同應(yīng)用程序的刷寫(xiě)效率、刷寫(xiě)成功率以及穩(wěn)定性上都滿足設(shè)計(jì)需求,能夠很好地實(shí)現(xiàn)應(yīng)用程序的下載和升級(jí)功能。刷寫(xiě)測(cè)試數(shù)據(jù)如下:文件大小分別為10 kB、35 kB、133 kB、254 kB,對(duì)應(yīng)的刷寫(xiě)時(shí)間分別為3.0 s、10.2 s、38.1 s、72.2 s,刷寫(xiě)次數(shù)都為15次,都刷寫(xiě)成功。

      4 結(jié)束語(yǔ)

      本文闡述了基于UDS協(xié)議的系統(tǒng)總體架構(gòu),設(shè)計(jì)了UDS_BootLoader通信流程,將應(yīng)用程序 S19 文件通過(guò) CAN 總線從設(shè)計(jì)的 BootLoader PC上位機(jī)界面下載至所開(kāi)發(fā)的VCU下位機(jī) FLASH 中進(jìn)行功能測(cè)試。結(jié)果表明,該 CAN BootLoader 能夠快速、穩(wěn)定地實(shí)現(xiàn)對(duì) VCU下位機(jī)的軟件更新,為以后的升級(jí) OTA 打下了基礎(chǔ)。

      猜你喜歡
      程序代碼下位上位
      發(fā)射機(jī)房監(jiān)控系統(tǒng)之下位機(jī)
      特斯拉 風(fēng)云之老阿姨上位
      車(chē)迷(2018年12期)2018-07-26 00:42:22
      計(jì)算機(jī)網(wǎng)絡(luò)信息安全未來(lái)發(fā)展趨勢(shì)
      基于圖元裝接模式由程序流程圖自動(dòng)生成源代碼
      軟件工程(2016年11期)2017-01-17 16:56:57
      “三扶”齊上位 決戰(zhàn)必打贏
      基于ZigBee和VC上位機(jī)的教室智能監(jiān)測(cè)管理系統(tǒng)
      景洪電廠監(jiān)控系統(tǒng)下位機(jī)數(shù)據(jù)傳輸網(wǎng)絡(luò)改造
      圍觀黨“下位”,吐槽帝“登基”
      以新思路促推現(xiàn)代農(nóng)業(yè)上位
      CAN總線并發(fā)通信時(shí)下位機(jī)應(yīng)用軟件設(shè)計(jì)
      名山县| 武清区| 定远县| 霞浦县| 从化市| 乡城县| 皮山县| 油尖旺区| 平遥县| 苍山县| 招远市| 汝南县| 白银市| 麦盖提县| 乐都县| 江孜县| 宁陕县| 富平县| 永平县| 板桥市| 都江堰市| 南漳县| 闻喜县| 平度市| 孙吴县| 同仁县| 白城市| 德安县| 屏边| 凭祥市| 嫩江县| 龙州县| 大厂| 襄樊市| 大理市| 怀宁县| 米林县| 沛县| 田东县| 托里县| 沭阳县|