SGM2203-3.3YK3LG/TR公司大量 全新現貨長期供應
瀚佳科技是一家專業從事集成電路配套的供應商,在本行擁有多年的銷售經驗!
備有大量現貨庫存,誠信為本,客戶至上,為客戶把產品的質量關!
由于公司型號眾多,無法一一上傳,如在網站找不到您要的產品,請聯系業務員,本司可提供電子元器件配單服務。
聯系電話:0755-23140719/15323480719微信同號 (李先生)
聯系QQ:3441530696/3449124707
聯系地址:廣東省深圳市福田區中航路鼎城大廈1607室
公司網址:http://www.szhanjia.com
如果你想買到便宜優質的產品,請聯系我們
如果你想享受舒心周到的服務,請聯系我們
如果你想尋求穩定長期的合作,請聯系我們
汽車電子ECU bootloader的工作原理及開發要點有哪些?本文告訴你
隨著半導體技術的不斷進步(按照摩爾定律),MCU內部集成的邏輯功能外設越來越多,存儲器也越來越大。消費者對于汽車節能(經濟和法規對排放的要求)型、舒適性、互聯性、安全性(功能安全和信息安全)的要求越來越高,特別是近年來新能源電動車、車聯網和自動駕駛技術的興起,更大大加速了汽車電子技術的發展。汽車電子ECU(Electronic Control Unit--電控單元)集成的功能日益復雜,為了應對軟件遠程(在線)功能升級(增加新的功能)和bug修復的需求、對bootLoader(啟動加載程序)的需求越來越多。本文詳細介紹了汽車電子ECU bootloader的一般性工作原理和開發要點,其適用于所有的汽車電子ECU bootloader開發。
BootLoader,顧名思義,就是駐留在ECU非易失性存儲器中的一段程序加載代碼,每次ECU復位后,都會運行bootloader。它會檢查是否有來自通信總線的遠程程序加載請求,如果有,則進入bootloader模式,建立與程序下載端(通常為PC上位機)的總線通信并接收通信總線下載的應用程序、解析其地址和數據代碼,運行NVM(None Valitale Momory--非易失性存儲器)驅動程序,將其編程到NVM中,并校驗其完整性,從而完成應用程序更新。如果沒有來自通信總線的遠程程序加載請求,則直接跳轉到應用程序復位入口函數(復位中斷ISR,也稱作Entry_Point()--使用Processor Expert的CodeWarrior 工程或者Startup()函數--普通CodeWarrior 工程),運行應用程序。
基于此,汽車ECU的bootloader三大主要概念如下:
與遠程程序下載端建立可靠的總線通信以獲取要更新應用程序;
解析應用程序編程文件(S19/HEX/BIN)獲得其在NVM中的地址和程序代碼及數據;
運行NVM驅動將應用程序的代碼和數據編程到NVM中并校驗;
二、如何建立可靠的總線通信?
汽車ECU常見的數據總線有CAN和LIN,因此通常汽車ECU的bootloader都是通過CAN或者LIN下載數據的。當然也可以基于其他總線,比如基于SPI總線或者I2C總線(典型如一些帶有安全監測的功能安全ECU,通過主MCU對功能安全監測MCU的程序進行升級)以及以太網(基于Enternet通信的中控或者全液晶儀表的ECU以及下一代高速網關和ADAS ECU)。
TIps:
a、不同的ECU通信總線不一樣,具體需要用到某種通信總線取決于實際應用;
b、通信總線有ECU的MCU外設實現,所以在bootloader中必須開發相應的通信總線外設驅動程序,實現基本的數據發送和接收功能;
c、為了保證通信的可靠性,必須開發一個基于通信總線完善的通信協議,應用程序下載端和bootloader之間需要建立請求命令(request command)、確認(acknowledge)、等待(block wait)、錯誤重傳(error re-send)等機制----bootloader根據不同的請求命令完成不同的任務并確認操作是否完成(ACK)以及數據是否正被確完整的傳輸,若出現數據錯誤(通過校驗和或者ECC實現),需要進行自動重傳;
d、應用程序下載端通過需要在PC上基于VC或者C#、QT、Labview等開發GUI軟件,實現c中要求的總線通信協議,一般在其底層都是通過調用相應的總線設備,如USB轉CAN/LIN的轉發器設備的動態庫(DLL)的API接口來實現數據的收發,相應的總線USB轉發設備都會提供相應的驅動庫(DLL)。因此bootloader開發者一般還需具備一定的PC上位機軟件開發能力;
瀚佳科技是一家專業從事集成電路配套的供應商,在本行擁有多年的銷售經驗!備有大量現貨庫存,誠信為本,客戶至上,為客戶把產品的質量關!
由于公司型號眾多,無法一一上傳,如在網站找不到您要的產品,請聯系業務員,本司可提供電子元器件配單服務。
聯系電話:0755-23140719/15323480719微信同號 (李先生)
聯系QQ:3441530696/3449124707
聯系地址:廣東省深圳市福田區中航路鼎城大廈1607室
公司網址:http://www.szhanjia.com
如果你想買到便宜優質的產品,請聯系我們
如果你想享受舒心周到的服務,請聯系我們
如果你想尋求穩定長期的合作,請聯系我們
e、為了實現數據的可靠傳輸,一般在總線通信協議中添加信源編碼,即在發送是對有效數據進行校驗和或者ECC計算并將結果在通信數據幀中和有效數據一起發送,bootloader接收端,接收到數據幀后對有效數據域進行發送端同樣的校驗和或者ECC計算,得出結果與接收到的校驗和或者ECC計算結果值進行比較從而判斷數據的完整性。應用程序編程文件(S19/HEX/BIN)都具有相應的校驗和機制,所以可以采取直接傳送程序編程文件行的方式;否則,用戶需要在上位機軟件中首先解析編程文件,再將其中的地址和數據及代碼封裝打包成某種定制的通信協議,在bootloader中還得對其進行解包,這樣一來,略顯麻煩,但有些主機廠(Car OEM)為了知識產權保護,有自己的bootloader協議,這種情況下,bootloader開發者就必須按照主機廠的要求來開發;
f、一些正規的大主機廠要求其ECU供應商開發放入ECU bootloader必須基于UDS等總線診斷協議,在UDS中規定了相應的CAN ID給bootloader使用,那么久必須在該類ECU中的bootloader工程中加入相應的UDS協議棧;
三、解析編程文件(S19/HEX/BIN)
不同的MCU軟件開發IDE編譯鏈接生成的編程文件格式可能不同,但S19、HEX和BIN文件之間是可以相互轉化的,所以只需要在bootloader中開一種編程文件的解析程序就可以了,其他的可以使用相應的轉換工具(convert tool)在上位機上進行轉換;
對編程文件的解析,目的在于獲得應用程序的程序代碼和數據及其在NVM中的存儲地址;
為了解析編程文件必須先了解其中的編碼格式和原理,常用的S19、HEX和BIN文件的格式說明請參考如下維基百科鏈接:
S19文件:https://en.wikipedia.org/wiki/SREC_(file_format)
HEX文件:https://en.wikipedia.org/wiki/Intel_HEX
BIN文件:https://en.wikipedia.org/wiki/Binary_file
TIps:
S19和HEX文件都是可以直接使用文本編輯器(比如記事本,notepad++)打開的,只需要將包含地址和數據代碼的S1、S2和S3開始的S19文件行合并即可,可以手動拷貝,也可以編寫window批處理腳本來處理;當然也有專門的可以支持兩個S19文件的合并,網上可以找到很多開源軟件,比如常見的Srecord等;
MCU的軟件開發IDE一般都集成不同編程文件之間的轉換工具:比如S32DS的objcopy(Create Flash Image )
四、NVM驅動程序開發
ECU的NVM一般包括其MCU片內集成的用于存放數據的EEPROM或者Data-Flash和用于存儲程序代碼/數據的Code-Flash/Program-Flash以及MPU擴展的片外NOR Flash或者NAND-Flash;NVM驅動程序包括對NVM的擦除(erase)、編程(program)和校驗(verify)等基本操作,也包括對NVM的加密(secure)/解密(unsecure)和加保護(protecTIon)/解保護(unprotecTIon)操作。