
發(fā)布
注冊
/
登錄汽車Bootloader
關(guān)注創(chuàng)建者:匿名 創(chuàng)建時間:2021-07-23

汽車Bootloader的實例教程
來源 |
汽車ECU開發(fā)
BootLoader(下文簡稱Boot)也稱為引導(dǎo)程序,其主要用于軟件更新。這就帶來一個問題,ECU的軟件更新方式有很多,比如通過JTAG調(diào)試更新軟件,為什么要Boot呢?
由于ECU軟件中難免會有BUG存在,以及要滿足整車OTA需求,必須可以在不開蓋的情況下更新軟件。而ECU控制器對外的接口通常只有總線、電源和控制IO等。出于最大化復(fù)用接口(減少線束的重量和成本)考慮,通常采用基于UDS的Boot,而最常用的總線為CAN。為什么不用JTAG口呢?主要是ECU裝車后,直接通過燒錄器或者仿真器更新軟件的很不方便,難以實現(xiàn)遠(yuǎn)程更新,另外由于JTAG口的權(quán)限很高,可以任意修改內(nèi)部程序,安全風(fēng)險很大。
BootLoader的設(shè)計需求
Boot除了正常滿足更新軟件需求外,還需滿足以下需求。
1、安全需求
Boot和APP應(yīng)該放在不同的內(nèi)存區(qū)域,防止相互干擾。Boot中不應(yīng)集成Flash Driver,避免程序在正常運行時非法修改FLash,導(dǎo)致軟件異常,通常在刷寫App或者標(biāo)定數(shù)據(jù)時,先將Flash Driver下載至芯片的RAM中。
另外,在Boot執(zhí)行App或者標(biāo)定數(shù)據(jù)更新時,應(yīng)該具有多重安全檢查機制,確保刷入正確的軟件。
首先在執(zhí)行刷寫流程之前,上位機對需要更新的軟件包進(jìn)行檢查,通常包括兩項,其一是在生成軟件包時,開發(fā)人員會在特定位置增加一個與上位機約定的特定的ID,當(dāng)上位機加載軟件包時,會去檢查軟件包中存儲的ID是否與上位機中相同,如果不同,則終止刷寫,這樣可以防止刷入其他ECU的軟件包。
展開 汽車明確規(guī)定通過UDS進(jìn)行更新程序,主機廠要求擦寫內(nèi)部存儲的代碼不可寫入正常代碼中。汽車電子中ECU一旦設(shè)計完成,裝車量產(chǎn)就很難再拆卸并返回零部件供應(yīng)商完成功能升級或補丁修復(fù)。一旦出現(xiàn)售后質(zhì)量問題,如果召回的話,零部件供應(yīng)商和整車廠將面臨嚴(yán)重的經(jīng)濟(jì)損失,因此設(shè)計基于CAN總線的ECU在線程序更新Bootloader可以很好的解決這一問題,將零部件供應(yīng)商和整車廠的損失降低到最小。目前國外大部分汽車整機廠(主機廠)和全球的一級汽車零部件供應(yīng)商 (Tier 1) 都要求在其設(shè)計的ECU實現(xiàn)Bootloader功能。
圖1-3 Bootloader簡易框圖
假如使用CAN,框架則會設(shè)計成如圖1-3。
2.3 Bootloader框架
Bootloader由主機廠或者自己,可以選擇用或者不用,本次主要針對使用Bootloader情況進(jìn)行分析。主機使用協(xié)議由自己進(jìn)行定義,ECU啟動模式選擇由芯片廠商進(jìn)行技術(shù)支持(如果沒有廠商支持是不可以的,是不被主機廠認(rèn)可的,大多數(shù)是購買商業(yè)軟件包,由服務(wù)商進(jìn)行技術(shù)支持與芯片廠商共同支持的)。內(nèi)部編寫均需要遵循協(xié)議,大多數(shù)開發(fā)都是由多年開發(fā)經(jīng)驗沉淀下來,修改而成的,協(xié)議依然在進(jìn)步,代碼可能無法維護(hù)而無法支持,主機廠也會被迫選擇使用舊版協(xié)議。
圖1-4 Bootloader架構(gòu)
2.4 ECU Bootloader原理
主機廠規(guī)定不可把擦寫內(nèi)部代碼的功能直接寫入程序中,因此,只能每次用時才能將代碼放入ECU,ECU內(nèi)部可以有Bootloader,但不可以有擦寫內(nèi)部代碼的功能,擦寫代碼的功能稱作NVM (None Valitale Momory–非易失性存儲器)驅(qū)動程序。
展開 比如本公眾號的下面的圖片,帶邊緣陰影和淡紅色水印,都是自己做出來的,里面用到了很復(fù)雜的底層數(shù)學(xué)處理邏輯
CANDE汽車網(wǎng)絡(luò)設(shè)計平臺。用到了很復(fù)雜的報文結(jié)構(gòu)體處理邏輯,使得師子一號堅定認(rèn)為:數(shù)據(jù)結(jié)構(gòu)是代碼的核心
收銀軟件。用LabVIEW+C#實現(xiàn),走的支付寶的支付通道。
軟件加密技術(shù)。用的是LabVIEW直接控制MBR保留分區(qū)字節(jié),以及對BIOS的控制技術(shù),使用了自己開發(fā)了一個DLL。
Excel2DBC工具
。純LabVIEW實現(xiàn),這個軟件目前正在無償共享給廣大同行。毫不謙虛地說,
是目前業(yè)內(nèi)最好用的轉(zhuǎn)換工具,也是我們在LabVIEW領(lǐng)域雄厚實力的證明
。有需要的朋友,可以轉(zhuǎn)發(fā)一下本文并截圖發(fā)給我,免費領(lǐng)取工具。
PID仿真及控制。
對ActiveX的調(diào)用。調(diào)用Excel,實現(xiàn)形形色 色的自動報告格式
汽車UDS診斷。
汽車NM網(wǎng)絡(luò)管理。
汽車BOOTloader。
示波器數(shù)據(jù)的獲取和分析。
前面板控件自動布局。這個是Labview的軟肋,縮放幾次就扭曲了,所以我自己做了個程序,自動識別前面板大小、各個控件的大小及在前面板的坐標(biāo),從而實現(xiàn)動態(tài)自動布局。不過,一般而言,我們使用labview的目的是實現(xiàn)功能,對界面的美觀度要求一般不高。
LabVIEW憑借著簡單易用的特性,以及強大的擴展功能,給我?guī)砹颂嗟捏@喜,也幫我解決了不少的問題。
展開 
汽車Bootloader的相關(guān)專題、標(biāo)簽、搜索
汽車Bootloader的最新內(nèi)容
01
原理概述
單片機通常燒錄有三種:
ISP(In-System Programming)
在系統(tǒng)編程,使用引導(dǎo)程序(Bootloader)加上外圍UART/SPI等接口進(jìn)行燒錄。
ICP (In-circuit
汽車BOOTloader。
示波器數(shù)據(jù)的獲取和分析。
前面板控件自動布局。這個是Labview的軟肋,縮放幾次就扭曲了,所以我自己做了個程序,自動識別前面板大小、各個控件的大小及在前面板的坐標(biāo),從而實現(xiàn)動態(tài)自動布局。不過,一般而言,我們使用labview的目的是實現(xiàn)功能,對界面的美觀度要求一般不高。
來源 |
汽車ECU開發(fā)
BootLoader(下文簡稱Boot)也稱為引導(dǎo)程序,其主要用于軟件更新。這就帶來一個問題,ECU的軟件更新方式有很多,比如通過JTAG調(diào)試更新軟件,為什么要Boot呢?
由于ECU軟件中難免會有BUG存在,以及要滿足整車OTA需求,必須可以在不開蓋的情況下更新軟件。而ECU控制器對外的接口通常只有總線、電源和控制IO等。出于最大化復(fù)用接口