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

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

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

ECU刷寫流程之壓縮刷寫技術(shù)解析

北匯信息POLELINK ? 2024-05-16 08:24 ? 次閱讀

作者 | 小豆
小編 | 不吃豬頭肉

背景
在現(xiàn)代汽車電子技術(shù)中,ECU(電子控制單元)的軟件升級(jí)是一項(xiàng)關(guān)鍵任務(wù)。為了提高數(shù)據(jù)傳輸?shù)男屎桶踩?,壓縮刷寫技術(shù)應(yīng)運(yùn)而生。通過數(shù)據(jù)壓縮傳輸,我們可以有效地增加帶寬利用率,減少刷寫工具與ECU之間的數(shù)據(jù)傳輸量,從而顯著縮短ECU升級(jí)時(shí)間。此外,為了加強(qiáng)數(shù)據(jù)的安全性和保密性,數(shù)據(jù)傳輸還可以進(jìn)行加密處理。在ISO14229-1規(guī)范中,請求下載服務(wù)(SID=0x34)和請求文件傳輸服務(wù)(0x38)定義了數(shù)據(jù)可以基于壓縮和加密的方式進(jìn)行傳輸。本文以請求下載服務(wù)為例重點(diǎn)介紹數(shù)據(jù)壓縮部分。b7425d12-131a-11ef-9118-92fbcf53809c.pngISO14229-1:2020規(guī)范中定義請求下載服務(wù)(0x34)的請求報(bào)文格式b7514ef8-131a-11ef-9118-92fbcf53809c.png
根據(jù)ISO14229-1:2020規(guī)范,請求下載服務(wù)(0x34)允許數(shù)據(jù)通過壓縮和加密的方式進(jìn)行傳輸。在該服務(wù)的請求報(bào)文格式中,”dataFormatIdentifier“是一個(gè)關(guān)鍵的參數(shù),大小為1個(gè)字節(jié),其中高四位(bit4-bit7)為參數(shù)”compressionMethod“,定義數(shù)據(jù)是否需要壓縮, 其中低四位(bit0-bit3)為參數(shù)”encryptingMethod“,定義數(shù)據(jù)是否需要加密。若下載的數(shù)據(jù)既不需要壓縮也不需要加密,則該參數(shù)值為0x00,若使用非0x00的值,則表示下載數(shù)據(jù)需要進(jìn)行壓縮、加密,或二者兼有。如”dataFormatIdentifier“此值為0x10,表示下載數(shù)據(jù)需要壓縮不需要加密,如”dataFormatIdentifier“此值為0x11,表示下載數(shù)據(jù)需要壓縮也需要加密。

值得注意的是,下載數(shù)據(jù)的壓縮與加密需求并不影響參數(shù)”addressAndLengthFormatIdentifier

“和”memoryAddress“,但會(huì)影響”memorySize“參數(shù),該參數(shù)定義了需要刷寫數(shù)據(jù)的大小,這個(gè)大小將與通過TransferData(0x36)服務(wù)傳輸?shù)臄?shù)據(jù)大小進(jìn)行比較。

當(dāng)下載的數(shù)據(jù)是壓縮數(shù)據(jù)時(shí),由OEM來定義”memorySize“代表的是壓縮數(shù)據(jù)的大小還是壓縮前數(shù)據(jù)的大小。不同的定義對于刷寫流程的實(shí)現(xiàn)代碼也不相同。
若”memorySize“代表壓縮數(shù)據(jù)的大小,那么當(dāng)TransferData(0x36)服務(wù)將壓縮數(shù)據(jù)傳輸完成后,ECU將根據(jù)“memorySize”參數(shù)來判斷數(shù)據(jù)是否下載完成,ECU會(huì)比較傳輸?shù)膲嚎s數(shù)據(jù)與”memorySize“參數(shù)定義的數(shù)據(jù)大小是否一致,并相應(yīng)地發(fā)送肯定或否定響應(yīng)。
若”memorySize“代表非壓縮數(shù)據(jù)的大小,那么TransferData(0x36)服務(wù)傳輸?shù)膲嚎s數(shù)據(jù)大小一般小于”memorySize“的值。這時(shí)ECU將接收到的壓縮數(shù)據(jù)解壓,并計(jì)算所有解壓后數(shù)據(jù)大小的總和。在壓縮數(shù)據(jù)傳輸完成后,ECU會(huì)比較解壓后的數(shù)據(jù)大小與”memorySize“參數(shù)定義的數(shù)據(jù)大小是否一致,并相應(yīng)地發(fā)送肯定或否定響應(yīng)。
當(dāng)然,對于”memorySize“代表壓縮數(shù)據(jù)的大小還是非壓縮數(shù)據(jù)大小,數(shù)據(jù)傳輸完成后ECU判斷下載數(shù)據(jù)是否正確的方法各OEM定義也不盡相同。b76dca56-131a-11ef-9118-92fbcf53809c.png壓縮前后刷寫文件比對
軟件刷寫是指將軟件程序燒錄或者通過UDS刷寫傳輸?shù)紼CU芯片內(nèi)存的特定地址段,然后ECU就會(huì)運(yùn)行該軟件程序,去實(shí)現(xiàn)其特有的功能。常用的ECU刷寫文件格式有:.hex,.s19和.bin等。壓縮刷寫文件是通過特定的壓縮算法制作而成。
壓縮前:
b78954c4-131a-11ef-9118-92fbcf53809c.png

刷寫文件分3個(gè)邏輯塊,各塊起始地址、結(jié)束地址、長度為:

Block0:起始地址:0x80138020 結(jié)束地址:0x801FFFDF 長度:0xC7FC0

Block1:起始地址:0x80300020 結(jié)束地址:0x804FFFDF 長度:0x1FFFC0

Block2:起始地址:0xA0078020 結(jié)束地址:0xA0137FFF 長度:0xBFFE0

壓縮后:
b7aebf3e-131a-11ef-9118-92fbcf53809c.png

壓縮后刷寫文件仍分3個(gè)邏輯塊,各塊起始地址、結(jié)束地址、長度為:

Block0:起始地址:0x80138020 結(jié)束地址:0x8015E60E 長度:0x265EF

Block1:起始地址:0x80300020 結(jié)束地址:0x80448DD7 長度:0x148DB8

Block2:起始地址:0xA0078020 結(jié)束地址:0xA00AD0F6 長度:0x350D7

可以發(fā)現(xiàn),壓縮前后的刷寫文件邏輯塊數(shù)量未變化,起始地址未變化,各邏輯塊的數(shù)據(jù)長度變小了,對應(yīng)的結(jié)束地址也產(chǎn)生了變化。每個(gè)邏輯塊獨(dú)立壓縮
對于壓縮前刷寫文件中分為多個(gè)邏輯塊,在壓縮之后的邏輯塊數(shù)量未發(fā)生變化的情況可稱之為“每個(gè)邏輯塊獨(dú)立壓縮”。與之不同,也存在“整體壓縮”的方式。
整體壓縮
壓縮前:
b7c8f2fa-131a-11ef-9118-92fbcf53809c.png

刷寫文件分3個(gè)邏輯塊,各塊起始地址、結(jié)束地址、長度為:

Block0:起始地址:0x8FC0060 結(jié)束地址:0x9194FFF 長度:0x1D4FA0

Block1:起始地址:0x91C0000 結(jié)束地址:0x91D9EBF 長度:0x19EC0

Block2:起始地址:0x9200000 結(jié)束地址:0x9237FFF 長度:0x38000

壓縮后:
b7e3d1a6-131a-11ef-9118-92fbcf53809c.png

壓縮后刷寫文件只有1個(gè)邏輯塊,無起始地址。

對于“整體壓縮方式”,刷寫流程中內(nèi)存擦除(EarseMemmory)服務(wù)和0x34(RequestDownload)服務(wù)中起始地址等信息由ECU供應(yīng)商或者OEM定義。b80c895c-131a-11ef-9118-92fbcf53809c.png壓縮刷寫日志分析
非壓縮刷寫日志:
b81b2520-131a-11ef-9118-92fbcf53809c.png壓縮刷寫日志:
b8340d88-131a-11ef-9118-92fbcf53809c.png
通過分析刷寫日志,我們可以發(fā)現(xiàn)壓縮刷寫與非壓縮刷寫的主要區(qū)別在于:1.請求下載服務(wù)(SID=0x34)指令參數(shù)(dataFormatIdentifier)不同。

非壓縮:刷寫工具發(fā)送:34 00 44 A0 07 80 00 00 10 00 01

壓縮:刷寫工具發(fā)送:34 10 44 A0 07 80 00 00 03 50 F7

其中10代表:使用壓縮數(shù)據(jù);00代表:使用非壓縮數(shù)據(jù)。
2.請求下載服務(wù)(SID=0x34)指令參數(shù)(memorySize)不同。

非壓縮刷寫:刷寫工具發(fā)送:34 00 44 A0 07 80 00 00 10 00 01

壓縮刷寫:刷寫工具發(fā)送:34 10 44 A0 07 80 00 00 03 50 F7

非壓縮刷寫中請求下載服務(wù)(SID=0x34)中memorySize大小大于壓縮刷寫中的memorySize大小,如果最大塊長度值一致,則對于后續(xù)數(shù)據(jù)傳輸服務(wù)(SID=0x36)的個(gè)數(shù),壓縮刷寫則要小于非壓縮刷寫。

如日志中壓縮刷寫與非壓縮刷寫最大塊長度值皆為0xFFF,可計(jì)算出:

非壓縮刷寫后續(xù)數(shù)據(jù)傳輸服務(wù)(SID=0x36)的個(gè)數(shù)為257個(gè);

壓縮刷寫后續(xù)數(shù)據(jù)傳輸服務(wù)(SID=0x36)的個(gè)數(shù)為54個(gè);

數(shù)據(jù)傳輸服務(wù)(SID=0x36)的個(gè)數(shù)越少,則所需數(shù)據(jù)傳輸?shù)臅r(shí)間也就越少,這也就是壓縮刷寫可以提升刷寫效率的主要原因。b85f2838-131a-11ef-9118-92fbcf53809c.png總結(jié)
隨著ECU軟件功能的日益復(fù)雜,提高ECU軟件升級(jí)效率變得尤為重要,Bootloader作為一項(xiàng)必不可少的功能軟件,其高效的刷寫方式是實(shí)現(xiàn)ECU軟件更新的關(guān)鍵。目前,北匯信息已經(jīng)完成壓縮刷寫測試方案的落地,期待與感興趣的朋友進(jìn)行交流合作。

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

    關(guān)注

    9

    文章

    1743

    瀏覽量

    64331
  • ecu
    ecu
    +關(guān)注

    關(guān)注

    14

    文章

    865

    瀏覽量

    54328
  • 電子控制
    +關(guān)注

    關(guān)注

    1

    文章

    68

    瀏覽量

    21597
收藏 人收藏

    評論

    相關(guān)推薦

    TCU的刷寫

    目前對于大陸TCU的刷寫,還找不到一款合適的軟件!如果用專檢刷TCU會(huì)存在一個(gè)問題,安全驗(yàn)證不通過有好人指點(diǎn)一下嗎?
    發(fā)表于 05-14 22:48

    系統(tǒng)起來后怎么對nand flash進(jìn)行刷寫

    系統(tǒng)起來后怎么對nand flash進(jìn)行刷寫?而不是在uboot中進(jìn)行如對/dev/mtdblock3的刷寫
    發(fā)表于 01-13 06:31

    刷寫AT固件相關(guān)資料推薦

    刷寫AT固件一、前提說明二、刷寫1、硬件準(zhǔn)備2、軟件準(zhǔn)備3、固件準(zhǔn)備4、開始燒錄一、前提說明一般是模塊固件損壞或者買回來里面可能被別人刷過固件需要擦除或者增加固件才用,在這里結(jié)合我刷過的AT固件進(jìn)行
    發(fā)表于 01-21 13:35

    memtool刷寫問題

    MEMTOOL刷寫底層提示以下內(nèi)容 1、failed to read DBGSR 2、failed to get monitor extension result 3、initializing
    發(fā)表于 02-16 09:54

    驅(qū)動(dòng)僅提供32位刷寫的情況下如何完成刷寫單數(shù)字節(jié)

    [Ooonly] 前情提要:需要刷寫一整個(gè)app程序,分包刷寫,每包字節(jié)數(shù)為單數(shù),要求CRC校驗(yàn)正確。(芯片底層提供32位全字刷寫和16位半字刷寫,驅(qū)動(dòng)只整合了32位全字
    發(fā)表于 08-15 11:35

    linkit_Smart_7688_DUO_固件刷寫說明書

    linkit_Smart_7688_DUO_固件刷寫說明書
    發(fā)表于 06-21 17:02 ?0次下載

    用戶自定義操作Custom Action的兩種開發(fā)方式

    vFlash專為汽車OEM和ECU供應(yīng)商中執(zhí)行刷寫任務(wù)的人員所設(shè)計(jì),用以實(shí)現(xiàn)高效的ECU刷寫。vFlash可以通過標(biāo)準(zhǔn)軟件的圖形界面進(jìn)行控制,也可以簡單地作為庫集成到現(xiàn)有環(huán)境中實(shí)現(xiàn)自動(dòng)
    的頭像 發(fā)表于 09-02 17:55 ?2209次閱讀

    致遠(yuǎn)電子CAN智慧云如何賦能ECU遠(yuǎn)程刷寫

    汽車步入智能網(wǎng)聯(lián)時(shí)代,汽車總線面臨技術(shù)升級(jí),ECU刷寫仍然是車輛性能優(yōu)化的關(guān)鍵測試。本文介紹ZLG致遠(yuǎn)電子提出的遠(yuǎn)程ECU刷寫方案。 智能網(wǎng)
    的頭像 發(fā)表于 10-12 09:31 ?3284次閱讀
    致遠(yuǎn)電子CAN智慧云如何賦能<b class='flag-5'>ECU</b>遠(yuǎn)程<b class='flag-5'>刷寫</b>

    NodeMCU-刷寫AT固件

    NodeMCU-刷寫AT固件本來不想寫的,發(fā)現(xiàn)自己親自去刷的時(shí)候,刷了好幾個(gè)官網(wǎng)的AT固件包,都不匹配。壇友提供的版本比較老,看到下載鏈接延伸到其他下載地方,直接放棄了。(果然這里有坑!)安信可官網(wǎng)
    發(fā)表于 10-28 10:21 ?3次下載
    NodeMCU-<b class='flag-5'>刷寫</b>AT固件

    筆記本電腦BIOS修改及刷寫教程

      刷寫BIOS是一個(gè)相對危險(xiǎn)的事,如果刷寫過程中出了意外那么電腦就會(huì)壞掉,只能拆開電腦把BIOS芯片卸下來用編程器重新刷寫了。首先科普一下筆記本電腦BIOS芯片是個(gè)啥?來自360百科的釋義
    發(fā)表于 12-17 18:28 ?7次下載
    筆記本電腦BIOS修改及<b class='flag-5'>刷寫</b>教程

    認(rèn)識(shí)一下并列刷寫(Parallel Flash)

    再有,在車輛下線時(shí)EOL(End of Line),工廠追求效率,一般會(huì)1(刷寫上位機(jī))拖N(N個(gè) ECU)刷寫,這是不是一種Parallel Flash呢?
    的頭像 發(fā)表于 11-15 16:03 ?4075次閱讀
    認(rèn)識(shí)一下并列<b class='flag-5'>刷寫</b>(Parallel Flash)

    應(yīng)用筆記 | TSMaster使用教程—UDS刷寫流程

    今天給大家介紹基于TSMaster的UDS診斷刷寫流程。基本流程主要分為基本參數(shù)配置、刷寫流程兩部分。1基本參數(shù)配置1、新建工程打開TSMa
    的頭像 發(fā)表于 01-06 09:53 ?3664次閱讀
    應(yīng)用筆記 | TSMaster使用教程—UDS<b class='flag-5'>刷寫</b><b class='flag-5'>流程</b>

    同星智能為英飛凌TLE989X系列芯片提供刷寫方案

    01方案概述同星智能為英飛凌TLE989X系列芯片提供定制開發(fā)的代碼包和刷寫工具,主要包括代碼包、基于TSMaster的刷寫工程、刷寫硬件工具TF1011等。使用TF1011可以不需要英飛凌本身
    的頭像 發(fā)表于 10-14 08:21 ?975次閱讀
    同星智能為英飛凌TLE989X系列芯片提供<b class='flag-5'>刷寫</b>方案

    TDA4刷寫技術(shù)

    電子發(fā)燒友網(wǎng)站提供《TDA4刷寫技術(shù).pdf》資料免費(fèi)下載
    發(fā)表于 08-23 10:15 ?2次下載
    TDA4<b class='flag-5'>刷寫</b><b class='flag-5'>技術(shù)</b>

    刷寫實(shí)用程序-mflash

    電子發(fā)燒友網(wǎng)站提供《刷寫實(shí)用程序-mflash.pdf》資料免費(fèi)下載
    發(fā)表于 10-10 09:19 ?0次下載
    <b class='flag-5'>刷寫</b>實(shí)用程序-mflash