0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

汽車ECU的Bootloader升級(jí)過(guò)程分析

汽車ECU開(kāi)發(fā) ? 來(lái)源:汽車ECU開(kāi)發(fā) ? 作者:汽車ECU開(kāi)發(fā) ? 2022-04-20 10:31 ? 次閱讀

前言

最近負(fù)責(zé)的ECU報(bào)了CAN升級(jí)失敗的問(wèn)題,反饋到開(kāi)發(fā)這邊就是問(wèn)題描述和一堆的Error log,因?yàn)榘l(fā)生問(wèn)題的車輛在外地,這就需要我們從Error Log中找到問(wèn)題所在(起碼找到是上位機(jī)問(wèn)題還是ECU端問(wèn)題,如果是ECU的問(wèn)題還要繼續(xù)分析ECU為啥故障),因?yàn)橐郧暗腂ootloader升級(jí)知識(shí)還停留在理論階段,到真正找問(wèn)題的時(shí)候還是有很多模糊的地方的,終歸還是對(duì)一些基礎(chǔ)試著掌握的不牢固,這里把分析過(guò)程中需要的基礎(chǔ)知識(shí)都列出來(lái),同時(shí)把升級(jí)的分析過(guò)程也記錄下來(lái),希望以后分析Bootlodaer的升級(jí)問(wèn)題時(shí)能更加得心應(yīng)手。

正文

1.什么是Bootloader

MCU正常運(yùn)行時(shí)總是從固定地方取指令,順序運(yùn)行,程序更新時(shí)需要使用燒錄器等工具燒錄,于是有人將程序設(shè)計(jì)成,由一個(gè)程序跳轉(zhuǎn)到另一個(gè)程序,這個(gè)程序通常稱作Bootloader,另一個(gè)叫做APP。

Bootloader程序常常具有通信接口和擦寫(xiě)內(nèi)部存儲(chǔ)空間的功能,可將需要更新的APP擦除,寫(xiě)入新的APP。有時(shí)會(huì)設(shè)計(jì)成相互跳轉(zhuǎn),技術(shù)也是可以實(shí)現(xiàn)的。有些為了保證程序不丟失,單獨(dú)預(yù)留出備份區(qū)和出廠版本,出現(xiàn)某些錯(cuò)誤時(shí)可以恢復(fù)到出廠版本或使用其他APP均可。

2.汽車ECU的Bootloader

汽車ECU也就是汽車控制器單元,專門用在汽車上。ECU經(jīng)常會(huì)用在汽車零部件中,零部件密封性等要求都比較苛刻,并且裝車,如果想取下零部件可能需要將車拆解才可以做到,這種行為是不被允許的,成本極高,操作復(fù)雜,因此大多主機(jī)廠(OEM)要求ECU具有升級(jí)功能,并且通過(guò)多年的積淀制定了行業(yè)標(biāo)準(zhǔn)UDS。

b7b9d64a-bfb0-11ec-bce3-dac502259ad0.png

3.Bootloader刷寫(xiě)使用的協(xié)議

UDS(Unified Diagnostic Services,統(tǒng)一診斷服務(wù))診斷協(xié)議是用于汽車行業(yè)診斷通信的需求規(guī)范,由ISO 14229系列標(biāo)準(zhǔn)定義。應(yīng)用于OSI七層模型的應(yīng)用層(第7層),它只規(guī)定了與診斷相關(guān)的服務(wù)需求,并未涉及通信機(jī)制,所以,它可以在不同的汽車總線(例如CAN, LIN, Flexray, Ethernet)上實(shí)現(xiàn)。

ISO 14229 一個(gè)用于汽車行業(yè)診斷通信的需求規(guī)范,它只規(guī)定了與診斷相關(guān)的服務(wù)需求,并沒(méi)有涉及通信機(jī)制,因此要實(shí)現(xiàn)一個(gè)完整的診斷通信還需要定義網(wǎng)絡(luò)層協(xié)議(比如ISO 15765),還有底層硬件實(shí)現(xiàn)方式(比如CAN控制器)。由于不涉及網(wǎng)絡(luò)通信機(jī)制,可以架設(shè)在各種網(wǎng)絡(luò)之上,因此ISO 14229也稱為UDS(Unified Diagnostic Services)。

ISO 15765 協(xié)議是一種CAN總線上的診斷協(xié)議。ISO 15765 3 協(xié)議是按照 ISO 14229 1,描述了在 ISO 11898 定義的控制器局域網(wǎng)中統(tǒng)一診斷服務(wù)(UDS)的實(shí)施。它給所有汽車連接至CAN網(wǎng)絡(luò)服務(wù)器及外部測(cè)試設(shè)備提供診斷服務(wù)及服務(wù)器存儲(chǔ)器編程的需求?;贑AN總線的升級(jí)方式是目前汽車ECU升級(jí)的最主要升級(jí)方式。

ISO 17987 其中定義LIN通信相關(guān)部分。診斷通信用于建立診斷儀與ECU之間的通信連接,并負(fù)責(zé)將ECU中的診斷結(jié)果輸送到診斷儀中。

UDS的作用非常廣泛,幾乎跟隨ECU軟件開(kāi)發(fā)的全過(guò)程。

b7d14870-bfb0-11ec-bce3-dac502259ad0.png

CAN Driver:最小化的CAN驅(qū)動(dòng)。

TP:提供最小化的 CAN TP,實(shí)現(xiàn)ISO-15765-2傳輸協(xié)議。

Diag:診斷層,實(shí)現(xiàn)裁剪后適用Boot的診斷服務(wù)。

3.1基于CAN的傳輸層協(xié)議

分析升級(jí)過(guò)程的報(bào)文Log時(shí),看到的都是最原始的報(bào)文數(shù)據(jù)(標(biāo)準(zhǔn)CAN:8 Byte,CANFD:8,12,16,20,24,32,48,64 Byte),所以我們不光要熟悉應(yīng)用層的數(shù)據(jù)格式,也要熟悉傳輸層的數(shù)據(jù)格式。

如果使用標(biāo)準(zhǔn)CAN,則所有的報(bào)文數(shù)據(jù)都是8 Byte,如下圖所示:

如果診斷應(yīng)用層數(shù)據(jù)長(zhǎng)度小于等于7 Byte,則使用單幀(SingleFrame, SF)數(shù)據(jù),Byte 0的Bit0-Bit3為應(yīng)用層協(xié)議數(shù)據(jù)長(zhǎng)度,Bit4-Bit7為單幀固定標(biāo)識(shí)00。

例如:

Request: 02 10 03 CC CC CC CC CC --> 單幀數(shù)據(jù),協(xié)議數(shù)據(jù)長(zhǎng)度SF_DL為2,協(xié)議數(shù)據(jù)為10 03,后面的CC為填充數(shù)據(jù)

Response: 06 50 03 00 32 00 C8 AA --> 單幀數(shù)據(jù),協(xié)議數(shù)據(jù)長(zhǎng)度SF_DL為6,協(xié)議數(shù)據(jù)為0 03 00 32 00 C8,后面的CC為填充數(shù)據(jù)

b7e5be5e-bfb0-11ec-bce3-dac502259ad0.png

如果診斷應(yīng)用層數(shù)據(jù)長(zhǎng)度大于7Byte,則需要使用首幀(FF)+連續(xù)幀(CF)傳輸數(shù)據(jù),首幀(FF)的Byte 0的Bit4-7為首幀的固定標(biāo)識(shí)01,Byte 0的Bit0-Bit3+Byte 1為應(yīng)用層協(xié)議數(shù)據(jù)長(zhǎng)度。

Response: 10 14 62 F1 89 00 00 00 --> 首幀數(shù)據(jù),協(xié)議數(shù)據(jù)長(zhǎng)度為0x014(20)個(gè)字節(jié),首幀協(xié)議數(shù)據(jù)長(zhǎng)度固定6個(gè)字節(jié),內(nèi)容為 62 F1 89 00 00 00。

b7f08aaa-bfb0-11ec-bce3-dac502259ad0.png

連續(xù)幀(CF)的Byte0的Bit4-Bit7為連續(xù)幀的固定標(biāo)識(shí)20,Byte 0的Bit0-Bit3為SN編號(hào)(連續(xù)幀序號(hào),共4bit,0--0xF循環(huán)),協(xié)議數(shù)據(jù)長(zhǎng)度為7個(gè)Byte。

Respons: 21 00 00 00 00 00 B8 AC --> 連續(xù)幀的第一幀數(shù)據(jù)(0x21),協(xié)議數(shù)據(jù)為7個(gè)Byte,內(nèi)容為00 00 00 00 00 B8 AC。

b802bbb2-bfb0-11ec-bce3-dac502259ad0.png

流控幀(FC)Byte0的Bit4-7為固定標(biāo)識(shí)(11b),bit0-bit3為FS,Byte 1為BS(Block size),Bite 2為STmin(Seperation time)。

b8106e92-bfb0-11ec-bce3-dac502259ad0.png

b81d2ef2-bfb0-11ec-bce3-dac502259ad0.png

表1:標(biāo)準(zhǔn)CAN的傳輸層幀格式

如果使用標(biāo)準(zhǔn)CANFD,則數(shù)據(jù)長(zhǎng)度是可變的如下圖所示,這里不在贅述。

b83248aa-bfb0-11ec-bce3-dac502259ad0.png

表2:CANFD的傳輸層幀格式

b846ed1e-bfb0-11ec-bce3-dac502259ad0.png

表3:CANFD下首幀或連續(xù)幀的最后一幀的幀長(zhǎng)度

3.2Bootloader使用到的關(guān)鍵應(yīng)用層協(xié)議

診斷工具使用0x34服務(wù)初始化從診斷工具到ECU的數(shù)據(jù)傳輸(下載)。接收到此服務(wù)的請(qǐng)求報(bào)文時(shí),ECU應(yīng)在發(fā)送肯定響應(yīng)報(bào)文前,采取所有必要?jiǎng)幼饔糜跀?shù)據(jù)接收。

b856c6a8-bfb0-11ec-bce3-dac502259ad0.png

表4:0x34服務(wù)的請(qǐng)求幀數(shù)據(jù)格式

b868d578-bfb0-11ec-bce3-dac502259ad0.png

表5:0x34服務(wù)的積極響應(yīng)幀數(shù)據(jù)格式

診斷工具使用0x36服務(wù)從診斷工具到ECU傳輸數(shù)據(jù)(下載)或者從ECU到診斷工具傳輸數(shù)據(jù)(上傳)。

b87bf4e6-bfb0-11ec-bce3-dac502259ad0.png

表6:0x36服務(wù)的請(qǐng)求幀數(shù)據(jù)格式

b88ba8b4-bfb0-11ec-bce3-dac502259ad0.png

表7:0x36服務(wù)的積極響應(yīng)幀數(shù)據(jù)格式

診斷工具使用0x37服務(wù)終止診斷工具與ECU的數(shù)據(jù)傳輸。

b8a0ec38-bfb0-11ec-bce3-dac502259ad0.png

表8:0x37服務(wù)的請(qǐng)求幀數(shù)據(jù)格式

b8ac111c-bfb0-11ec-bce3-dac502259ad0.png

表9:0x37服務(wù)的積極響應(yīng)幀數(shù)據(jù)格式

4.Bootloader中診斷升級(jí)流程

UDS服務(wù)設(shè)計(jì)復(fù)雜,Bootloader升級(jí)一般分為以下三步:

1)預(yù)編程:主要進(jìn)行一些環(huán)境配置

2)編程:刷寫(xiě)過(guò)程

3)刷新完成:恢復(fù)配置

b8ba6686-bfb0-11ec-bce3-dac502259ad0.png

Bootloader可以保證在上述三個(gè)階段任一問(wèn)題出現(xiàn)都能再次進(jìn)入該過(guò)程重新刷新。

4.1預(yù)編程階段

在進(jìn)入刷新之前,UDS的85服務(wù)和28服務(wù),關(guān)閉DTC診斷同時(shí)停發(fā)非診斷報(bào)文。使整個(gè)CAN網(wǎng)絡(luò)處于靜默(Silent)狀態(tài)。這是對(duì)整車網(wǎng)絡(luò)進(jìn)行操作的,一般都是以功能尋址(Functional addressing)的方式來(lái)發(fā)送。注意先用85服務(wù)關(guān)閉DTC,再使用28服務(wù)關(guān)報(bào)文。關(guān)閉DTC診斷是防止升級(jí)過(guò)程誤報(bào)DTC(例如通信丟失DTC等),關(guān)閉CAN通信是為了降低總線負(fù)載,加快刷寫(xiě)速度。

4.2編程階段

UDS設(shè)計(jì)了安全訪問(wèn)功能,安全訪問(wèn)是為了保證ECU數(shù)據(jù)的安全,實(shí)現(xiàn)方式是由ECU發(fā)送一個(gè)隨機(jī)數(shù)種子到主機(jī),主機(jī)通過(guò)對(duì)應(yīng)ECU預(yù)先定義好的算法算出結(jié)果與ECU算出結(jié)果進(jìn)行比對(duì),結(jié)果一致則解鎖成功通過(guò)安全驗(yàn)證。ECU解鎖可以存在多個(gè)等級(jí),安全要求越高則需要的安全等級(jí)越高(使用0x27服務(wù)實(shí)現(xiàn))。

寫(xiě)時(shí)候先寫(xiě)DID指紋,標(biāo)記寫(xiě)軟件人的身份(按照主機(jī)廠要求),擦寫(xiě)下載等操作。

4.3編程結(jié)束

刷寫(xiě)完成之后,ECU進(jìn)行重啟,重新進(jìn)入擴(kuò)展會(huì)話,打開(kāi)之前關(guān)閉的配置。

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • ecu
    ecu
    +關(guān)注

    關(guān)注

    14

    文章

    890

    瀏覽量

    54623
  • bootloader
    +關(guān)注

    關(guān)注

    2

    文章

    235

    瀏覽量

    45668
  • 汽車控制器
    +關(guān)注

    關(guān)注

    0

    文章

    25

    瀏覽量

    5594

原文標(biāo)題:Bootlodaer升級(jí)過(guò)程分析

文章出處:【微信號(hào):eng2mot,微信公眾號(hào):汽車ECU開(kāi)發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    請(qǐng)問(wèn)汽車ECU通信如何實(shí)現(xiàn)?

    汽車ECU通信如何實(shí)現(xiàn)?
    發(fā)表于 02-01 07:09

    汽車電子控制單元ECU的設(shè)計(jì)

    汽車電子控制單元ECU 的設(shè)計(jì)摘要:本文給出了汽車電子控制單元ECU 的IP 核設(shè)計(jì)。該IP 核基于RISC 技術(shù)的單指令、單周期的體系結(jié)構(gòu),并采用了自頂向下(top-down)的設(shè)計(jì)
    發(fā)表于 10-06 15:13

    汽車ECU以及外圍線路

    汽車ECU以及外圍線路 有沒(méi)有做過(guò)汽車ECU的,公司現(xiàn)在想要外面公司給我們做個(gè)控制器。需要提出技術(shù)協(xié)議,我能想到的有2方面:1:個(gè)環(huán)境要求(最好能不能介紹個(gè)標(biāo)準(zhǔn))。其中包括
    發(fā)表于 05-16 17:04

    汽車電子ECU bootloader的一般性工作原理和開(kāi)發(fā)要點(diǎn)

    軟件遠(yuǎn)程(在線)功能升級(jí)(增加新的功能)和bug修復(fù)的需求、對(duì)bootLoader(啟動(dòng)加載程序)的需求越來(lái)越多。本文詳細(xì)介紹了汽車電子ECU bo
    發(fā)表于 04-24 06:20

    車載ECUBootloader實(shí)現(xiàn)方法概述

    車載ECUBootloader實(shí)現(xiàn)方法概述Flash Bootloader軟件架構(gòu)CAN驅(qū)動(dòng)(CAN Driver)Flash驅(qū)動(dòng)(Flash Driver)傳輸層(Transport
    發(fā)表于 07-23 06:33

    無(wú)法使用內(nèi)置Bootloader的DFU方式進(jìn)行固件升級(jí)的問(wèn)題進(jìn)行分析

    本文將針對(duì)客戶無(wú)法使用內(nèi)置Bootloader的DFU方式進(jìn)行固件升級(jí)的問(wèn)題進(jìn)行分析
    發(fā)表于 08-06 09:52

    汽車ECU分類

    汽車ECU分類現(xiàn)如今ECU已經(jīng)成為汽車上最為常見(jiàn)的部件之一,依據(jù)功能的不同可以分為不同的類型。最常見(jiàn)的有如下幾種ECU:EMS(Engine
    發(fā)表于 08-31 07:09

    一文看懂汽車電子ECU bootloader開(kāi)發(fā)(工作原理及開(kāi)發(fā)要點(diǎn))

    越來(lái)越高,特別是近年來(lái)新能源電動(dòng)車、車聯(lián)網(wǎng)和自動(dòng)駕駛技術(shù)的興起,更大大加速了汽車電子技術(shù)的發(fā)展。本文詳細(xì)介紹了汽車電子ECU bootloader的一般性工作原理和開(kāi)發(fā)要點(diǎn),其適用于所
    發(fā)表于 04-23 11:45 ?1.5w次閱讀

    ECU bootloader工作原理及開(kāi)發(fā)

    本文詳細(xì)介紹了汽車電子ECUbootloader的一般性工作原理和開(kāi)發(fā)要點(diǎn),其適用于所有的汽車電子ECU bootloader開(kāi)發(fā)。
    發(fā)表于 05-03 03:52 ?1.4w次閱讀

    Bootloader是什么Bootloader的介紹和過(guò)程詳細(xì)解

    3.Bootloader工作模式 4.Bootloader啟動(dòng)過(guò)程5.vivi Bootloader源代碼分析 6.vivi
    發(fā)表于 12-11 17:33 ?48次下載
    <b class='flag-5'>Bootloader</b>是什么<b class='flag-5'>Bootloader</b>的介紹和<b class='flag-5'>過(guò)程</b>詳細(xì)解

    怎樣對(duì)ECU進(jìn)行固件升級(jí)

    汽車電子開(kāi)發(fā)、測(cè)試和售后診斷中,我們經(jīng)常需要對(duì)ECU進(jìn)行固件升級(jí),即“刷新”。
    發(fā)表于 12-10 17:02 ?5935次閱讀
    怎樣對(duì)<b class='flag-5'>ECU</b>進(jìn)行固件<b class='flag-5'>升級(jí)</b>

    汽車ECU是什么?ECU是如何工作的

    如果把發(fā)動(dòng)機(jī)比喻成汽車的“心臟”,那么汽車的“大腦”就應(yīng)該是ECU了。何為ECUECU是如何工作的?本文詳細(xì)解析。
    發(fā)表于 06-14 09:31 ?1.2w次閱讀

    剖析汽車ECUbootloader程序

    BootLoad(簡(jiǎn)稱Boot)是一種啟動(dòng)加載程序,或者稱為引導(dǎo)程序,我們?cè)诓僮飨到y(tǒng)和嵌入式開(kāi)發(fā)中經(jīng)常用到,因?yàn)?b class='flag-5'>汽車ECU也是一種嵌入式系統(tǒng),Boot程序主要用于ECU軟件更新,汽車O
    的頭像 發(fā)表于 09-24 10:52 ?3821次閱讀
    剖析<b class='flag-5'>汽車</b><b class='flag-5'>ECU</b>的<b class='flag-5'>bootloader</b>程序

    英飛凌XC2000系列——汽車ECU Bootloader 設(shè)計(jì)詳解

    簡(jiǎn)介:參考了xxxx 。。。一 、Ecu Bootloader 詳解1目的1、為了能讓新手快速入門2、讓更多的人了解BootLoader3、如何維護(hù)、開(kāi)發(fā)BootLoader二、BO
    發(fā)表于 11-06 11:21 ?14次下載
    英飛凌XC2000系列——<b class='flag-5'>汽車</b><b class='flag-5'>ECU</b> <b class='flag-5'>Bootloader</b> 設(shè)計(jì)詳解

    記錄一下bootloader升級(jí)Bug分析及復(fù)現(xiàn)最后解決的整個(gè)過(guò)程

    當(dāng)前程序處于A分區(qū) --> 開(kāi)始升級(jí),跳入bootloader --> 升級(jí)A分區(qū)程序 --> 故障注入,跳過(guò)升級(jí)的0x34服務(wù),直接開(kāi)始0x36服務(wù)傳輸
    的頭像 發(fā)表于 11-22 09:03 ?5033次閱讀