中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. "); //-->

        博客專欄

        EEPW首頁 > 博客 > OTA與控制器

        OTA與控制器

        發(fā)布人:電巢 時間:2022-12-11 來源:工程師 發(fā)布文章

        隨著特斯拉將OTA的功能引入到汽車中,汽車行業(yè)發(fā)生了新的范式革命,智能汽車相比傳統(tǒng)汽車成為新物種的存在,OTA不僅是汽車不斷成長的“生命通道”,更是成為了車企新商業(yè)模式的“黃金通道”。然而,OTA仍然面臨諸多挑戰(zhàn),這需要匯集行業(yè)的智慧共同面對。

        OTA到底對控制器做了什么?

        現(xiàn)如今整車OTA是一個非常熱門的話題,無論是新勢力還是傳統(tǒng)主機(jī)廠都極力宣傳自己的OTA能力,但在cao sir看來,目前市面上所有的OTA都是不夠徹底的OTA,cao sir稱之為半OTA!

        當(dāng)廠家說OTA時他在說什么?

        OTA:空中升級(ON THE AIR)是通過無線通訊網(wǎng)絡(luò),實現(xiàn)對汽車控制器MCU里的軟件進(jìn)行更新。

        這里面有一個許多人搞混淆的問題,OTA更新MCU哪一部分的軟件?

        要想回答這個問題需要我們首先得知道汽車控制器是什么!

        汽車控制器本質(zhì)上就是一個嵌入式系統(tǒng)的單片機(jī)MCU,可以完整實現(xiàn)特定的功能!

        嵌入式單片機(jī)MCU的最大特點是,它的硬件結(jié)構(gòu)會根據(jù)實現(xiàn)功能的差異而進(jìn)行裁剪。(劃重點,此處很重要,后面要用到)

        與強(qiáng)大的個人計算機(jī)(PC)不同的是,結(jié)構(gòu)簡單功能單一的控制器單片機(jī)的內(nèi)部軟件代碼有兩大類,一部分是操作系統(tǒng)、用戶數(shù)據(jù)、標(biāo)定數(shù)據(jù)等代碼,統(tǒng)稱為應(yīng)用程序(APP),另一部分則是運行引導(dǎo)程序(Bootloader)。

        Bootloader是一段獨立的代碼(這段Boot代碼一般是出廠預(yù)置,或使用編程器燒錄的,通常只有1k或4k,通常是占用一塊獨立的Block,當(dāng)系統(tǒng)上電之后,Bootloader可以進(jìn)行:關(guān)閉WATCHDOG、改變系統(tǒng)時鐘、初始化存儲控制器、將更多的代碼復(fù)制到內(nèi)存中等一系列初始化動作,然后再將操作系統(tǒng)內(nèi)核制到內(nèi)存中運行。簡單地說,Bootloader就是這么一小段程序,它在系統(tǒng)上電時開始執(zhí)行,初始化硬件設(shè)備、準(zhǔn)備好軟件環(huán)境,最后調(diào)用操作系統(tǒng)內(nèi)核進(jìn)入工作。與之對應(yīng)的是PC中的BIOS。

        由于Bootloader保存在Flash的首地址,MCU上電后,默認(rèn)從Flash開始的第一個讀取棧指針,第二個字就是復(fù)位中斷的入口,并根據(jù)該指針進(jìn)度復(fù)位處理函數(shù)中執(zhí)行相應(yīng)的函數(shù),由于中斷向量表1尋找復(fù)位中斷處理函數(shù)指向Bootloader,所以必然首先進(jìn)入Bootloader程序中中執(zhí)行,進(jìn)行初始化設(shè)置,然后再進(jìn)入下一個中斷向量表2中執(zhí)行APP程序的復(fù)位中斷處理函數(shù)。

        Bootloader和APP應(yīng)用程序在嵌入式存儲器中的位置如下:

        image.png


        由于我們所有的操作系統(tǒng)和用戶數(shù)據(jù)都放在APP程序中,通過更改這部分?jǐn)?shù)據(jù)可以優(yōu)化控制器的使用體驗,所以許多汽車廠家所謂對MCU進(jìn)行固件更新(FOTA)實際上就是對MCU內(nèi)存中的APP存儲區(qū)域進(jìn)行刷寫。

        如何進(jìn)行刷寫?

        刷寫(在線編程)目前有兩種實現(xiàn)方法:在系統(tǒng)編程(ISP)和在應(yīng)用編程(IAP)。ISP一般是通過單片機(jī)專用的串行編程接口對單片機(jī)內(nèi)部的Flash存儲器進(jìn)行編程,而IAP技術(shù)是從結(jié)構(gòu)上將Flash存儲器映射為兩個存儲體,當(dāng)運行一個存儲體上的用戶程序時,可對另一個存儲體重新編程,之后將控制從一個存儲體轉(zhuǎn)向另一個。ISP和IAP很相似,都是不需要把芯片從板子上拔出來,就達(dá)到了用PC-MCU的編程接口(JTAG、串口、雙絞線、SPI等)搞定新版本的升級的目的,但是他倆又有著很大的不同。

        IAP技術(shù)從結(jié)構(gòu)上將Flash存儲器中APP程序運行區(qū)映射為兩個存儲體,當(dāng)運行一個存儲體上的用戶程序時,可對另一個存儲體重新編程,之后將控制從一個存儲體轉(zhuǎn)向另一個。支持在應(yīng)用編程(IAP)的芯片會將內(nèi)存分3個程序區(qū):1、引導(dǎo)程序區(qū)Bootloader,2、APP程序運行區(qū),3、下載區(qū)。芯片通過串口接收到下載命令,進(jìn)入引導(dǎo)區(qū)運行引導(dǎo)程序,在引導(dǎo)程序下將new code內(nèi)容下載到下載區(qū),下載完畢并校驗通過后,Bootloader控制擦除原程序并將下載區(qū)內(nèi)容復(fù)制到2區(qū),運行復(fù)位程序,則IAP完成。

        IAP刷寫的好處是,在不改變引導(dǎo)程序區(qū)的前提下,對APP程序運行區(qū)進(jìn)行編程,從而優(yōu)化應(yīng)用層的軟件的體驗。

        image.png


        為了方便實現(xiàn)IAP刷寫,ISO發(fā)布了統(tǒng)一診斷標(biāo)準(zhǔn)UDS(ISO14229),用于診斷儀(客戶端)和MCU(服務(wù)器)之間的會話控制、安全訪問、例程控制、DTC讀取,MCU軟件刷寫(軟件下載)等服務(wù).

        其中在編程會話模式下(Programming Session),先通過$31 01 FF 00指令將Flash中的APP數(shù)據(jù)擦除,再通過$34+$36服務(wù)指令可將軟件數(shù)據(jù)寫入到單片機(jī)的RAM中,再通過$31 01 02服務(wù)指令對內(nèi)存進(jìn)行確認(rèn),最后重新啟動MCU就完成了刷寫。

        需要指出的是在數(shù)據(jù)傳輸層面,根據(jù)傳輸協(xié)議的不同分為基于控制局域網(wǎng)的診斷DoCAN(ISO15765)或者基于以太網(wǎng)的診斷DoIP(ISO13400)。

        image.png


        目前車輛的OTA的大致流程是:

        首先云端服務(wù)器TSP通過無線通訊協(xié)議(DDS/MQTT)將要刷新的軟件發(fā)送給車輛網(wǎng)聯(lián)模塊T-BOX;

        然后車輛網(wǎng)聯(lián)模塊T-BOX通過CAN或者Ehernet傳輸協(xié)議發(fā)給車輛網(wǎng)關(guān)GATEWAY;

        第三步將車輛網(wǎng)關(guān)GATEWAY作為上位機(jī),通過UDS診斷服務(wù)對MCU進(jìn)行IAP刷寫;

        最后一步,刷寫完成后,重新啟動,MCU運行新的APP軟件。

        image.png


        而ISP一般是通過單片機(jī)專用的串行編程接口直接對單片機(jī)內(nèi)部的Flash存儲器進(jìn)行編程。也就是將PC編譯完成的MCU可運行的二進(jìn)制代碼文件通過尋址直接編程入MCU內(nèi)相應(yīng)的程序存儲器中。ISP刷寫不僅可以對APP程序進(jìn)行在線編程,還可以對引導(dǎo)程序區(qū)Bootloader進(jìn)行在線編程。

        image.png


        ISP刷寫的硬線連接框圖

        由于不同MCU的Bootloader支持的刷寫方式以及MCU支持的通訊協(xié)議不同,導(dǎo)致ISP刷寫工具千花百樣。比如飛思卡爾嵌入式單片機(jī)常用P&E的Multilink刷寫工具,一端通過USB串口與上位機(jī)連接,一端通過SWD串口與單片機(jī)通訊,進(jìn)入BDM模式刷寫。

        image.png


        P&G Mutilink刷寫工具

        OTA的短板是無法對控制器的Bootloader進(jìn)行刷寫

        還記得前面說過的一句話么:嵌入式單片機(jī)的最大特點是,它的硬件結(jié)構(gòu)會根據(jù)實現(xiàn)功能的差異而進(jìn)行裁剪。

        Bootloader的實現(xiàn)嚴(yán)重依賴于具體硬件,在嵌入式系統(tǒng)中硬件配置千差萬別,即使是相同的CPU,它的外設(shè)(比如Flash)也可能不同,所以不可能有一個Bootloader支持所有的CPU、所有的電路板。即使是支持CPU架構(gòu)比較多的U-Boot,也不是一拿來就可以使用的(除非里面的配置剛好與你的板子相同),需要進(jìn)行一些移植。

        目前整車上的控制器是由不同的供應(yīng)商來提供,每個供應(yīng)商都會根據(jù)自己控制器的功能特點,選擇最合適的嵌入式系統(tǒng)硬件。在產(chǎn)品的開發(fā)階段,工程師使用專用燒錄工具對MCU的程序進(jìn)行燒錄;然而到了產(chǎn)品的生產(chǎn)階段或者售后階段,進(jìn)行應(yīng)用程序燒錄或升級操作的往往是生產(chǎn)線上的工人,他們不易掌握程序燒錄器的使用方法,貿(mào)然對Bootloader刷寫可能會造成MCU程序崩潰(變磚頭),因此在控制器開發(fā)完成以后,往往會把控制器的JTAG調(diào)試口封住以防軟件被窺視。

        在OTA中,由于每個控制器的Bootloader不同,上位機(jī)(一般是網(wǎng)關(guān))是不支持對所有控制器的Bootloader進(jìn)行刷新的,只能基于CAN或者Ethernet通訊,使用UDS協(xié)議對MCU中的APP軟件進(jìn)行刷寫。

        image.png


        例如在Bootloader程序中,要求在編程模式下支持UDS的$14清除故障碼的服務(wù),就必須修改Bootloader程序,通過OTA就無法實現(xiàn)此功能。

        未來,隨著域控制器或者中央控制器的發(fā)展,汽車控制器數(shù)量會減少,硬件配置則向個人電腦PC看齊,如果整車MCU能像PC那樣使用一套標(biāo)準(zhǔn)的配置主板,那么通過OTA對Bootloader進(jìn)行刷寫有望成為現(xiàn)實!


        *博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。



        關(guān)鍵詞: OTA 控制器

        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉