日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 汽車(chē)電子 > 汽車(chē)電子技術(shù)文庫(kù)
[導(dǎo)讀] 隨著半導(dǎo)體技術(shù)的不斷進(jìn)步(按照摩爾定律),MCU內(nèi)部集成的邏輯功能外設(shè)越來(lái)越多,存儲(chǔ)器也越來(lái)越大。消費(fèi)者對(duì)于汽車(chē)節(jié)能(經(jīng)濟(jì)和法規(guī)對(duì)排放的要求)型、舒適性、互聯(lián)性、安全性(功能安全和信息安全)的要

隨著半導(dǎo)體技術(shù)的不斷進(jìn)步(按照摩爾定律),MCU內(nèi)部集成的邏輯功能外設(shè)越來(lái)越多,存儲(chǔ)器也越來(lái)越大。消費(fèi)者對(duì)于汽車(chē)節(jié)能(經(jīng)濟(jì)和法規(guī)對(duì)排放的要求)型、舒適性、互聯(lián)性、安全性(功能安全和信息安全)的要求越來(lái)越高,特別是近年來(lái)新能源電動(dòng)車(chē)、車(chē)聯(lián)網(wǎng)和自動(dòng)駕駛技術(shù)的興起,更大大加速了汽車(chē)電子技術(shù)的發(fā)展。汽車(chē)電子ECU(Electronic Control Unit--電控單元)集成的功能日益復(fù)雜,為了應(yīng)對(duì)軟件遠(yuǎn)程(在線)功能升級(jí)(增加新的功能)和bug修復(fù)的需求、對(duì)bootLoader(啟動(dòng)加載程序)的需求越來(lái)越多。本文詳細(xì)介紹了汽車(chē)電子ECUbootloader的一般性工作原理和開(kāi)發(fā)要點(diǎn),其適用于所有的汽車(chē)電子ECU bootloader開(kāi)發(fā)。

一、bootloader的功能

BootLoader,顧名思義,就是駐留在ECU非易失性存儲(chǔ)器中的一段程序加載代碼,每次ECU復(fù)位后,都會(huì)運(yùn)行bootloader。它會(huì)檢查是否有來(lái)自通信總線的遠(yuǎn)程程序加載請(qǐng)求,如果有,則進(jìn)入bootloader模式,建立與程序下載端(通常為PC上位機(jī))的總線通信并接收通信總線下載的應(yīng)用程序、解析其地址和數(shù)據(jù)代碼,運(yùn)行NVM(None Valitale Momory--非易失性存儲(chǔ)器)驅(qū)動(dòng)程序,將其編程到NVM中,并校驗(yàn)其完整性,從而完成應(yīng)用程序更新。如果沒(méi)有來(lái)自通信總線的遠(yuǎn)程程序加載請(qǐng)求,則直接跳轉(zhuǎn)到應(yīng)用程序復(fù)位入口函數(shù)(復(fù)位中斷ISR,也稱(chēng)作Entry_Point()--使用Processor Expert的CodeWarrior 工程或者Startup()函數(shù)--普通CodeWarrior 工程),運(yùn)行應(yīng)用程序。

基于此,汽車(chē)ECU的bootloader三大主要概念如下:

與遠(yuǎn)程程序下載端建立可靠的總線通信以獲取要更新應(yīng)用程序;

解析應(yīng)用程序編程文件(S19/HEX/BIN)獲得其在NVM中的地址和程序代碼及數(shù)據(jù);

運(yùn)行NVM驅(qū)動(dòng)將應(yīng)用程序的代碼和數(shù)據(jù)編程到NVM中并校驗(yàn);

二、如何建立可靠的總線通信?

汽車(chē)ECU常見(jiàn)的數(shù)據(jù)總線有CAN和LIN,因此通常汽車(chē)ECU的bootloader都是通過(guò)CAN或者LIN下載數(shù)據(jù)的。當(dāng)然也可以基于其他總線,比如基于SPI總線或者I2C總線(典型如一些帶有安全監(jiān)測(cè)的功能安全ECU,通過(guò)主MCU對(duì)功能安全監(jiān)測(cè)MCU的程序進(jìn)行升級(jí))以及以太網(wǎng)(基于Enternet通信的中控或者全液晶儀表的ECU以及下一代高速網(wǎng)關(guān)和ADAS ECU)。

TIps:

a、不同的ECU通信總線不一樣,具體需要用到某種通信總線取決于實(shí)際應(yīng)用;

b、通信總線有ECU的MCU外設(shè)實(shí)現(xiàn),所以在bootloader中必須開(kāi)發(fā)相應(yīng)的通信總線外設(shè)驅(qū)動(dòng)程序,實(shí)現(xiàn)基本的數(shù)據(jù)發(fā)送和接收功能;

c、為了保證通信的可靠性,必須開(kāi)發(fā)一個(gè)基于通信總線完善的通信協(xié)議,應(yīng)用程序下載端和bootloader之間需要建立請(qǐng)求命令(request command)、確認(rèn)(acknowledge)、等待(block wait)、錯(cuò)誤重傳(error re-send)等機(jī)制----bootloader根據(jù)不同的請(qǐng)求命令完成不同的任務(wù)并確認(rèn)操作是否完成(ACK)以及數(shù)據(jù)是否正被確完整的傳輸,若出現(xiàn)數(shù)據(jù)錯(cuò)誤(通過(guò)校驗(yàn)和或者ECC實(shí)現(xiàn)),需要進(jìn)行自動(dòng)重傳;

d、應(yīng)用程序下載端通過(guò)需要在PC上基于VC或者C#、QT、Labview等開(kāi)發(fā)GUI軟件,實(shí)現(xiàn)c中要求的總線通信協(xié)議,一般在其底層都是通過(guò)調(diào)用相應(yīng)的總線設(shè)備,如USB轉(zhuǎn)CAN/LIN的轉(zhuǎn)發(fā)器設(shè)備的動(dòng)態(tài)庫(kù)(DLL)的API接口來(lái)實(shí)現(xiàn)數(shù)據(jù)的收發(fā),相應(yīng)的總線USB轉(zhuǎn)發(fā)設(shè)備都會(huì)提供相應(yīng)的驅(qū)動(dòng)庫(kù)(DLL)。因此bootloader開(kāi)發(fā)者一般還需具備一定的PC上位機(jī)軟件開(kāi)發(fā)能力;

e、為了實(shí)現(xiàn)數(shù)據(jù)的可靠傳輸,一般在總線通信協(xié)議中添加信源編碼,即在發(fā)送是對(duì)有效數(shù)據(jù)進(jìn)行校驗(yàn)和或者ECC計(jì)算并將結(jié)果在通信數(shù)據(jù)幀中和有效數(shù)據(jù)一起發(fā)送,bootloader接收端,接收到數(shù)據(jù)幀后對(duì)有效數(shù)據(jù)域進(jìn)行發(fā)送端同樣的校驗(yàn)和或者ECC計(jì)算,得出結(jié)果與接收到的校驗(yàn)和或者ECC計(jì)算結(jié)果值進(jìn)行比較從而判斷數(shù)據(jù)的完整性。應(yīng)用程序編程文件(S19/HEX/BIN)都具有相應(yīng)的校驗(yàn)和機(jī)制,所以可以采取直接傳送程序編程文件行的方式;否則,用戶需要在上位機(jī)軟件中首先解析編程文件,再將其中的地址和數(shù)據(jù)及代碼封裝打包成某種定制的通信協(xié)議,在bootloader中還得對(duì)其進(jìn)行解包,這樣一來(lái),略顯麻煩,但有些主機(jī)廠(Car OEM)為了知識(shí)產(chǎn)權(quán)保護(hù),有自己的bootloader協(xié)議,這種情況下,bootloader開(kāi)發(fā)者就必須按照主機(jī)廠的要求來(lái)開(kāi)發(fā);

f、一些正規(guī)的大主機(jī)廠要求其ECU供應(yīng)商開(kāi)發(fā)放入ECU bootloader必須基于UDS等總線診斷協(xié)議,在UDS中規(guī)定了相應(yīng)的CAN ID給bootloader使用,那么久必須在該類(lèi)ECU中的bootloader工程中加入相應(yīng)的UDS協(xié)議棧;

三、解析編程文件(S19/HEX/BIN)

不同的MCU軟件開(kāi)發(fā)IDE編譯鏈接生成的編程文件格式可能不同,但S19、HEX和BIN文件之間是可以相互轉(zhuǎn)化的,所以只需要在bootloader中開(kāi)一種編程文件的解析程序就可以了,其他的可以使用相應(yīng)的轉(zhuǎn)換工具(convert tool)在上位機(jī)上進(jìn)行轉(zhuǎn)換;

對(duì)編程文件的解析,目的在于獲得應(yīng)用程序的程序代碼和數(shù)據(jù)及其在NVM中的存儲(chǔ)地址;

為了解析編程文件必須先了解其中的編碼格式和原理,常用的S19、HEX和BIN文件的格式說(shuō)明請(qǐng)參考如下維基百科鏈接:

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++)打開(kāi)的,只需要將包含地址和數(shù)據(jù)代碼的S1、S2和S3開(kāi)始的S19文件行合并即可,可以手動(dòng)拷貝,也可以編寫(xiě)window批處理腳本來(lái)處理;當(dāng)然也有專(zhuān)門(mén)的可以支持兩個(gè)S19文件的合并,網(wǎng)上可以找到很多開(kāi)源軟件,比如常見(jiàn)的Srecord等;

MCU的軟件開(kāi)發(fā)IDE一般都集成不同編程文件之間的轉(zhuǎn)換工具:比如S32DS的objcopy(Create Flash Image )

以及Keil的Motorola S-Record to BINARY File Converter

四、NVM驅(qū)動(dòng)程序開(kāi)發(fā)

ECU的NVM一般包括其MCU片內(nèi)集成的用于存放數(shù)據(jù)的EEPROM或者Data-Flash和用于存儲(chǔ)程序代碼/數(shù)據(jù)的Code-Flash/Program-Flash以及MPU擴(kuò)展的片外NOR Flash或者NAND-Flash;NVM驅(qū)動(dòng)程序包括對(duì)NVM的擦除(erase)、編程(program)和校驗(yàn)(verify)等基本操作,也包括對(duì)NVM的加密(secure)/解密(unsecure)和加保護(hù)(protecTIon)/解保護(hù)(unprotecTIon)操作。

Tips:

a、MCU片上集成的NVM中EEPROM/D-Flash和C_Flash/P-Flash一般屬于不同的block,所以可以直接在Flash上運(yùn)行NVM驅(qū)動(dòng)對(duì)EEPROM/D-Flash進(jìn)行擦除和編程操作;

b、NVM驅(qū)動(dòng)一般都是通過(guò)運(yùn)行一個(gè)NVM command序列,在其中通過(guò)NVM控制器寄存器給出不同的NVM操作命令代碼、NVM編程數(shù)據(jù)和目標(biāo)地址的方式完成,典型的NVM command序列如下(Freescale的S12(X)系列MCU Flash write command 序列):

c、由于NVM的工作速度一般較CPU內(nèi)核頻率和總線頻率低,所以運(yùn)行NVM驅(qū)動(dòng)前必須對(duì)NVM進(jìn)行初始化,將設(shè)置分頻器其工作頻率設(shè)置為正常工作所需頻率范圍;

d、MCU片內(nèi)的NVM同一個(gè)block上不能運(yùn)行NVM的驅(qū)動(dòng)對(duì)其自身進(jìn)行擦除和編程操作,否則會(huì)傳出read while write的總線訪問(wèn)沖突(每個(gè)NVM block只有一條數(shù)據(jù)總線,一個(gè)時(shí)刻只能進(jìn)行讀出或者寫(xiě)入,不支持同時(shí)讀出和寫(xiě)入)。因此對(duì)于僅有一個(gè)block Flash的MCU來(lái)說(shuō),就必須在RAM中調(diào)用其N(xiāo)VM驅(qū)動(dòng),來(lái)對(duì)其自身進(jìn)行擦除和編程操作,同時(shí)在launch Flash command到等待command完成期間必須關(guān)閉CPU全局中斷,禁止外設(shè)中斷響應(yīng),否則取中斷向量和運(yùn)行中斷ISR都會(huì)訪問(wèn)Flash。要使能中斷,就必須將中斷向量表偏移到RAM或者NVM block(EEPROM/D-Flash)并將響應(yīng)的中斷ISR也拷貝到其他RAM或者NVM block上(當(dāng)然該中斷向量表也必須更新指導(dǎo)新的中斷ISR);

e、由于以上b的要求,通常需要將bootloader的NVM驅(qū)動(dòng)拷貝到MCU的RAM中運(yùn)行,其可以將其完成的NVM拷貝到RAM中運(yùn)行,也可以只拷貝NVM command launch到等待command完成的幾條指令到RAM執(zhí)行即可,因?yàn)镹VM驅(qū)動(dòng)中其他操作(比如填寫(xiě)NVM操作命令、寫(xiě)入編程地址和數(shù)據(jù)等)并不會(huì)往占用數(shù)據(jù)總線上往NVM中寫(xiě)入數(shù)據(jù);

f、NVM的驅(qū)動(dòng)程序駐留在Flash中,如果出現(xiàn)堆棧溢出等意外程序跑飛意外運(yùn)行NVM驅(qū)動(dòng)程序則會(huì)造成NVM內(nèi)容意外擦除丟失或者修改的情況。因此需要對(duì)關(guān)鍵數(shù)據(jù)或代碼(比如bootloader本身)進(jìn)行保護(hù)以防止意外修改,或者更為安全的方法是不將NVM驅(qū)動(dòng)程序存放在NVM中,而是在bootloader最開(kāi)始通過(guò)上位機(jī)將其下載到RAM中運(yùn)行,bootloader結(jié)束后將該區(qū)域RAM清除,從而避免由于意外運(yùn)行NVM驅(qū)動(dòng)程序造成的NVM數(shù)據(jù)丟失和修改。(PS:后續(xù)我會(huì)專(zhuān)門(mén)寫(xiě)一篇文章介紹相關(guān)的方法,盡請(qǐng)關(guān)注閱讀)

g、一般MCU廠商都會(huì)給出其MCU的NVM驅(qū)動(dòng)庫(kù),用戶可以使用該類(lèi)庫(kù)實(shí)現(xiàn)NVM操作,如果是Freescale/NXP的汽車(chē)級(jí)MCU,還可以使用CodeWarrior IDE集成的Processor Expert生成相應(yīng)的NVM驅(qū)動(dòng)程序;

五、bootloader開(kāi)發(fā)的其他要點(diǎn)

a、bootloader與應(yīng)用程序的關(guān)系

bootloader和應(yīng)用程序分別是兩個(gè)完整的MCU軟件工程,各自都由自己的啟動(dòng)代碼、main()函數(shù)、鏈接文件、外設(shè)驅(qū)動(dòng)程序和中斷向量表;

因此bootloader和應(yīng)用程序的鏈接文件中,對(duì)NVM的地址空間分配必須分開(kāi)獨(dú)立,不能重疊(overlap),但其RAM分配沒(méi)有約束,兩者都可以使用整個(gè)RAM空間,因?yàn)樘D(zhuǎn)到應(yīng)用工程后,

[1] [2]

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動(dòng)電源

在工業(yè)自動(dòng)化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動(dòng)力設(shè)備,其驅(qū)動(dòng)電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動(dòng)勢(shì)抑制與過(guò)流保護(hù)是驅(qū)動(dòng)電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動(dòng)性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問(wèn)題卻十分常見(jiàn),不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問(wèn)題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動(dòng)電源的公式,電感內(nèi)電流波動(dòng)大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

電動(dòng)汽車(chē)(EV)作為新能源汽車(chē)的重要代表,正逐漸成為全球汽車(chē)產(chǎn)業(yè)的重要發(fā)展方向。電動(dòng)汽車(chē)的核心技術(shù)之一是電機(jī)驅(qū)動(dòng)控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動(dòng)系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動(dòng)汽車(chē)的動(dòng)力性能和...

關(guān)鍵字: 電動(dòng)汽車(chē) 新能源 驅(qū)動(dòng)電源

在現(xiàn)代城市建設(shè)中,街道及停車(chē)場(chǎng)照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢(shì)逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

LED通用照明設(shè)計(jì)工程師會(huì)遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問(wèn)題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會(huì)影響LED燈具的正常工作,還可能對(duì)周?chē)娮釉O(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來(lái)解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

開(kāi)關(guān)電源具有效率高的特性,而且開(kāi)關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動(dòng)電源

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開(kāi)關(guān)電源

LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉