小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

二萬五千字解讀OTA

 小毛HYL 2020-10-17

編者:
本文共三大章節(jié),分別為整車OTA為什么困難重重、整車OTA需要注意些什么、uboot介紹,字?jǐn)?shù)接近二萬五千字,建議收藏閱讀。

第1

整車OTA為什么困難重重

什么是汽車OTA

首先,我們先來看看各位吃瓜群眾對OTA的理解,搞清楚什么是OTA?

群眾A: 小寶,這個(gè)我清楚,無非就是升級打補(bǔ)丁嘛,形象一些,就是衣服穿的破爛了,然后再打一個(gè)好看點(diǎn)的補(bǔ)丁。

曾經(jīng),小寶上初中的時(shí)候,為了讓衣服顯得酷一些,在好的衣服上也弄一個(gè)超酷的補(bǔ)丁,現(xiàn)在也有一些車企也在這么做,為了顯示自己能OTA,本來沒有必要的升級,非得弄的高大上,所謂讓用戶更有粘度。

群眾B:小寶,汽車OTA太嚇人了,動不動就整“趴火”,這個(gè)不太安全吧。在2019年1月30日,蔚來ES8在長安街出糗的這條朋友圈截圖,火遍了圈里圈外。

小寶回復(fù):也許很多朋友會覺得整車OTA不安全,小寶要在這里鄭重的強(qiáng)調(diào)一下,不錯(cuò),你的感覺沒有錯(cuò),目前整車OTA確實(shí)不太成熟。不過上次那個(gè)事件和OTA運(yùn)營有一定的關(guān)系,這個(gè)駕駛員,確實(shí)有魄力,在長安街這種稍作停留都會引來警察的敏感位置敢于停車后掛P擋,且在不詳細(xì)閱讀提示的情況下進(jìn)入ES8的整車OTA(記住整車OTA這個(gè)詞,后面很關(guān)鍵)升級,結(jié)果尷尬的被堵在車?yán)镆粋€(gè)小時(shí)。

群眾C:小寶,OTA我知道,這個(gè)是好家伙,自從購買了特斯拉以后,隔三差五的升級新功能,解鎖新姿勢,感覺每天開得都是新車。

小寶:土豪,我們交一個(gè)朋友吧,OTA運(yùn)營好,確實(shí)是主機(jī)廠發(fā)家致富的一條好道路,正所謂要致富,先修路。

特斯拉官方針對Model3長續(xù)航全輪驅(qū)動版車型推出了加速提升包服務(wù)。這套升級包售價(jià)為1.41萬元,升級后車輛百公里加速能力可以從從4.6秒提升到4.1秒。車主只需通過OTA升級功能,就可完成升級包的安裝升級。此套加速提升包是通過釋放Model3長續(xù)航全輪驅(qū)動版雙電機(jī)的冗余性能。

不要小看這0.5s,如果是傳統(tǒng)汽車,就需要3-4年才能實(shí)現(xiàn),因?yàn)橐薷挠布?shù),要重新設(shè)計(jì)一款新車,改變發(fā)動機(jī)相關(guān)性能參數(shù),整個(gè)車的性能在設(shè)計(jì)之前就確定了。通過OTA升級,所以特斯拉一輛車讓你隨時(shí)都感覺在開新車的驚喜,競爭力大大提升。

說了這么多,到底OTA是什么?是補(bǔ)丁,是驚喜,是增加新體驗(yàn),到底是什么呢?為什么有的廠家宣傳的是OTA,有的宣傳的是FOTA,有的又說SOTA,這有什么區(qū)別?

名詞解釋

OTA,Over The Air/空中下載,所謂“空中”指的是遠(yuǎn)程無線方式,指通過移動通信(GSM或CDMA)的空中接口對 SIM 卡數(shù)據(jù)及應(yīng)用進(jìn)行遠(yuǎn)程管理,OTA 技術(shù)可以理解為一種遠(yuǎn)程無線升級技術(shù)。

我們先來看看軟件的一個(gè)架構(gòu),其實(shí)可以分為驅(qū)動層、系統(tǒng)層、應(yīng)用層、不同的層級的內(nèi)容是不同的,而且對于硬件的影響是不同的,就好比你手機(jī)上升級失敗騰訊視頻,不會影響到其他APP功能的正常使用,但是如果你升級整個(gè)手機(jī)OS軟件版本,如果升級不成功,那么就極容易變磚頭了,此時(shí)需要拿到手機(jī)售后維修店進(jìn)行強(qiáng)制修復(fù)。

FOTA說的更容易理解點(diǎn)就是對驅(qū)動的升級和對系統(tǒng)的升級。FOTA的升級是涉及硬件的,如果刷寫失敗,硬件就會變磚。所以,F(xiàn)OTA在技術(shù)上還是有一定難度的。汽車上有很多的控制器,車輛在什么狀態(tài)下進(jìn)行刷寫,如何確保刷寫過程穩(wěn)定,安全,這些實(shí)現(xiàn)上的難點(diǎn)都是要考慮的。行業(yè)里常規(guī)所說的整車升級,就是基于FOTA技術(shù)的。原則上,車上任何一個(gè)控制器都是可以升級的,但為什么現(xiàn)在很多車還有做到這一點(diǎn),主要是考慮到穩(wěn)定性。畢竟,升級生成磚這種事情連蘋果都不敢說100%的避免,更何況一輛更為復(fù)雜的汽車產(chǎn)品。

SOTA,Software Over The Air/軟件空中升級,偏向于應(yīng)用軟件升級。SOTA是在操作系統(tǒng)的基礎(chǔ)上對應(yīng)用程序進(jìn)行升級,整個(gè)過程相當(dāng)于我們在電腦上對一個(gè)程序進(jìn)行了升級,特別指出只是程序的升級,WINDOWS系統(tǒng)更新打補(bǔ)丁的技術(shù)都比SOTA要難。市面上的安卓車機(jī),如果想要對APP進(jìn)行升級,只要找?guī)讉€(gè)開發(fā)和測試就能干完,幾乎沒有技術(shù)壁壘。也許有人問,既然實(shí)現(xiàn)起來很簡單,也沒有什么技術(shù)含量,那為什么很多車上都沒有呢。最主要的原因是,創(chuàng)建了一個(gè)應(yīng)用市場,關(guān)鍵的點(diǎn)在于應(yīng)用從哪來。即便是現(xiàn)在也是這樣,在導(dǎo)航車機(jī)上能使用的互聯(lián)網(wǎng)應(yīng)用還是很少,即便是放的最開的后裝車機(jī),也沒有超過上百個(gè)應(yīng)用。

事實(shí)上 FOTA 與 SOTA 界限比較模糊,Windows 操作系統(tǒng)升級、手機(jī)升級、嵌入式系統(tǒng)、單片機(jī)控制程序等都的遠(yuǎn)程升級可以籠統(tǒng)地稱為 FOTA;轉(zhuǎn)移到汽車電子這塊,為了方便討論,我們將 HU 中的 APP 更新稱為 SOTA,將其他 ECU 的更新甚至于所有更新統(tǒng)稱為 OTA。

群眾C:小寶,你這個(gè)解釋完,我還是沒有看懂怎么辦?

小寶:逼著我出大招了,那我用通俗易懂的方式再解釋一遍。

類似于裝修,F(xiàn)OTA是對驅(qū)動和系統(tǒng)升級,這個(gè)驅(qū)動底層就是你好比你家的涂墻的油漆,布置的走線,地磚的選擇、裝修的風(fēng)格,這些都是屬于底層驅(qū)動。

你家的沙發(fā)、餐桌這些都要和家里的這些進(jìn)行搭配恰當(dāng),這個(gè)就相當(dāng)于APP應(yīng)用軟件。如果哪天你覺得不喜歡這個(gè)沙發(fā)的樣式了,想換一個(gè)沙發(fā)就行了,這個(gè)更換就比較容易,所以SOTA升級是比較簡單的,更換一個(gè)沙發(fā),如果沙發(fā)沒有買來的情況下是不允許餐桌的正常使用的。

要是不喜歡這個(gè)地磚了,那就比較麻煩,需要把這些拆了重新來,此時(shí)你家餐桌、沙發(fā)都需要搬離出去,不用使用,只有等地磚翻新完后再搬進(jìn)來使用,所以FOTA是比較困難的,而且如果你裝修期間遇到事情,停下來不裝修地磚了,此時(shí)整個(gè)家里是沒有辦法使用的,所以FOTA升級失敗的話,整個(gè)器件相關(guān)的APP是不能使用的,風(fēng)險(xiǎn)度會比較高。

OEM為什么熱衷于研究OTA

1、OTA能夠給車企帶來的好處

對很多車企而言,OTA 技術(shù)上車的主要?jiǎng)恿κ浅鲇诔杀竟?jié)約的考慮。網(wǎng)絡(luò)安全則是 OTA 必須成為互聯(lián)汽車標(biāo)配的另一個(gè)重要原因。

而 OTA 升級對主機(jī)廠真正具有吸引力的地方在于它能夠?qū)崿F(xiàn)車輛重要功能的常用常新。通過 OTA,汽車制造商通過軟件升級的方式可以在產(chǎn)品售出后通過增加功能的方式繼續(xù)獲得收入。這也是為什么 Musk 認(rèn)為未來搭載了 FSD 的特斯拉車型會變成一件持續(xù)升值的產(chǎn)品。

此外,在搭載了一套雙向通信的 OTA 平臺后,車輛能夠?qū)④嚩讼到y(tǒng)和零部件的診斷及運(yùn)行信息及時(shí)傳輸至云服務(wù)器,這也有利于主機(jī)廠對某些潛在隱患進(jìn)行預(yù)防性監(jiān)測,做到將風(fēng)險(xiǎn)提前扼殺在搖籃里。

快速修復(fù)系統(tǒng)缺陷

傳統(tǒng)汽車在用戶行駛驗(yàn)證中出現(xiàn)了系統(tǒng)方面的缺陷,而這些問題的解決辦法只有一個(gè),汽車廠家啟動召回程序,在用戶收到召回程序后返廠進(jìn)行系統(tǒng)的統(tǒng)一升級。而OTA技術(shù)則可以通過遠(yuǎn)程快速的通過數(shù)據(jù)包的形式完成缺陷的修復(fù),大大避免了持續(xù)數(shù)月的進(jìn)廠召回帶來的風(fēng)險(xiǎn)。

快速迭代、提升產(chǎn)品和使用體驗(yàn)

由于在產(chǎn)品設(shè)計(jì)中的硬件的超前配備,智聯(lián)網(wǎng)汽車操作系統(tǒng)可以通過一次次OTA升級,不斷給車主逐步開啟新功能,優(yōu)化產(chǎn)品體驗(yàn),進(jìn)行快速迭代,提供更加優(yōu)質(zhì)的系統(tǒng)服務(wù)。真正讓車主感受到什么是“常開常新”。

進(jìn)行界面優(yōu)化更新,提升人機(jī)交互體驗(yàn)。汽車連接互聯(lián)網(wǎng),改變了過去銷售是研發(fā)過程結(jié)束的汽車銷售模式,使銷售成為廠商與客戶互動的開始,因此會帶來投訴率高的風(fēng)險(xiǎn)。而是用界面和內(nèi)容的更新可以從一定程度上降低投訴率。

節(jié)約雙方的時(shí)間和金錢

傳統(tǒng)的召回是需要走內(nèi)部及外部審批的過程,時(shí)間和金錢的成本都非常高。通過OTA升級的形式,可以大大降低由于軟件缺陷帶來的召回成本,把這個(gè)錢省下來給大家研發(fā)新產(chǎn)品不好么?

2、軟件定義汽車已經(jīng)形成共識,軟件風(fēng)險(xiǎn)也是趨勢

大眾汽車之前宣布,組建自己的軟件部門:數(shù)字汽車與服務(wù)部(Digital Car&Service),大眾CEO迪思在今年的達(dá)沃斯世界經(jīng)濟(jì)論壇上表示:“在不遠(yuǎn)的將來,汽車將成為一個(gè)軟件產(chǎn)品,大眾也將會成為一家軟件驅(qū)動公司”。在汽車行業(yè)向出行服務(wù)和智能化轉(zhuǎn)型的大趨勢下,新的智能功能和服務(wù)需求幾乎每個(gè)月都需要更新,大眾的組織變革表明軟件定義汽車已經(jīng)成為業(yè)界共識。

計(jì)算集中化:服務(wù)導(dǎo)向的系統(tǒng)構(gòu)架(SOA)將成為主流,為軟件提供高性能實(shí)時(shí)計(jì)算平臺,在這樣一個(gè)大的理念下,計(jì)算集中化將催生真正的汽車大腦:超級中央計(jì)算機(jī)。目前各個(gè)玩家對這個(gè)概念的叫法五花八門,包括車載計(jì)算平臺、主機(jī)(Host)以及服務(wù)器(Server)等,但本質(zhì)都一樣。

為了滿足ASIL-D功能安全的要求,一臺汽車通常需要有兩臺相同的主機(jī)互為備份,目前領(lǐng)先的Tier1如安波福、大陸等都使用這樣的理念。

伴隨著計(jì)算集中化,產(chǎn)生了一個(gè)新的概念:區(qū)控制(zone control),與目前流行的域控制器概念不同的是,區(qū)控制模塊沒有高級功能決策權(quán),而是完成執(zhí)行器、傳感器、診斷以及傳統(tǒng)I/O的連接匯總,類似于PC中的南北橋。

在這樣的構(gòu)架下,決策通常都是由中央計(jì)算機(jī)來發(fā)出,但是也有例外,比如AEB緊急制動的功能,是最重要的ADAS功能,一旦前向智能傳感器發(fā)現(xiàn)前方有障礙而且即將發(fā)生碰撞,可以不經(jīng)中央計(jì)算機(jī)決策指令,直接啟動執(zhí)行機(jī)構(gòu)進(jìn)行剎車,或者在兩臺中央計(jì)算機(jī)都出現(xiàn)故障的時(shí)候接管剎車執(zhí)行器,從而提供更高的安全冗余。

如果我們對照人的決策機(jī)制,會發(fā)現(xiàn)有高度類似的情況:假如我們在野外突然碰到一頭老虎,身體的第一反應(yīng)是僵住不動,這個(gè)決策并不是來自大腦的高級理性系統(tǒng)(即皮質(zhì)),而是來自非常原始的大腦邊緣系統(tǒng)(哺乳動物都有),它在緊急情況下會切斷大腦對軀干的控制,自動接管以保證能夠在瞬間完成必須的生存反應(yīng)。手碰到燙的東西立馬縮回去也是一樣的決策機(jī)制,這樣的例子不勝枚舉。

在未來,OEM交付的汽車將不是一個(gè)功能固化的產(chǎn)品,而是一個(gè)持續(xù)進(jìn)化的機(jī)器人,在汽車整個(gè)生命周期內(nèi),硬件平臺需要持續(xù)支持軟件迭代升級,這意味著,我們必須打造一個(gè)開放的、工具鏈完善的、擁有強(qiáng)大算力保障的計(jì)算平臺,提供高達(dá)1000TOPS的算力,為各種軟件功能提供充足的算力儲備。

軟件定義汽車的其核心思想是:決定未來汽車的是以人工智能為核心的軟件技術(shù),而不再是汽車的馬力大小、是否真皮座椅、機(jī)械性能好壞。

高端汽車控制器節(jié)點(diǎn) 80~100,整車代碼量已經(jīng)突破 1 億行。而汽車行業(yè)80%~90% 的創(chuàng)新基于電子,離不開軟件的支撐,還在不斷發(fā)展。

不斷攀升的代碼量即使按照 CMMI(capability maturity Model integration,能力成熟度集成模型)5 級的最高軟件標(biāo)準(zhǔn)進(jìn)行控制,代碼缺陷率仍為 0.32‰,潛在問題的規(guī)模不容小覷;OTA 可有效解決軟件故障, 通過應(yīng)急響應(yīng)降低開發(fā)周期短帶來的軟件風(fēng)險(xiǎn)問題,以及完成對信息安全漏洞的修復(fù)

3、汽車由于軟件質(zhì)量導(dǎo)致的召回成本巨大

汽車廠家召回一輛車,需要車主把車開到4S店,有的需要下發(fā)優(yōu)盤進(jìn)行升級,而且需要人工去操作,整體費(fèi)用算上一輛車的召回費(fèi)用基本上是500-800元,如果是重要器件,費(fèi)用會更貴,(比如什么機(jī)油漏油處理,需要把整個(gè)發(fā)動機(jī)抬起來,整個(gè)汽車拆卸的費(fèi)用會更貴),召回100W車的費(fèi)用就是5-8億RMB,如果僅僅是通過軟件升級的話,這筆錢是非??捎^的。

整車 OTA 應(yīng)該成為汽車產(chǎn)業(yè)優(yōu)先解決的問題,自動駕駛汽車可能確實(shí)對降低交通事故傷亡率有幫助,但如果沒有靠譜的修補(bǔ)軟件漏洞的方法,一旦面臨大規(guī)模召回,消費(fèi)者的不滿情緒對品牌而言是最大的災(zāi)難。

我們細(xì)數(shù)下近些年發(fā)生的因軟件問題而導(dǎo)致的汽車召回事件:

1. 2016 年,日產(chǎn)召回320 萬因氣囊系統(tǒng)問題無法識別乘客的車輛;

2. 2016 年,通用召回360 萬氣囊系統(tǒng)自動進(jìn)入診斷模式的車輛;

3. 2017 年,道奇召回125 萬輛安全氣囊傳感器故障的車型;

更嚴(yán)重的是,很多消費(fèi)者在知曉車企發(fā)布的召回通知后,繼續(xù)放任軟件故障存在。根據(jù)調(diào)研機(jī)構(gòu) Stout Research 發(fā)布的數(shù)據(jù),購買 5 年內(nèi)的車輛在召回通知發(fā)布后的九個(gè)月內(nèi),維修率只有 40%。例如,2018 年通用宣布因方向盤軟件故障召回 100 萬輛車型,到現(xiàn)在約有 60 萬臺未得到修復(fù)的車輛仍行駛在道路上。

如果車企的整車 OTA 技術(shù)能夠就位的話,對付這些 bug 就變得易如反掌了。而且 OTA 升級不光能讓產(chǎn)品的電子系統(tǒng)保持最新,一旦出現(xiàn)因軟件故障導(dǎo)致的召回,可以節(jié)省大量的時(shí)間和金錢成本。

汽車整車OTA升級為什么困難重重

1、汽車電子的架構(gòu)介紹

ECU(Electronic Control Unit) 是電子控制單元, 也稱“行車電腦”是汽車專用微機(jī)控制器。一般ECU由CPU、存儲器(ROM、RAM)輸入/輸出接口(I/O)、模數(shù)轉(zhuǎn)換器(A/D)以及整形、驅(qū)動等大規(guī)模集成電路組成。

最開始ECU是用于控制發(fā)動機(jī)工作, 后來隨著車輛的電子化發(fā)展,ECU逐漸占領(lǐng)了整個(gè)汽車, 從防抱死制動系統(tǒng)、4輪驅(qū)動系統(tǒng)、電控自動變速器、主動懸架系統(tǒng)、安全氣囊系統(tǒng),到現(xiàn)在逐漸延伸到了車身各類安全、網(wǎng)絡(luò)、娛樂、傳感控制系統(tǒng)等。

隨著車子電子化程度越來越高,尤其是自動駕駛、主動安全等功能的增加,車子的ECU會急速增加。汽車EE架構(gòu)中存在著數(shù)十到上百數(shù)量的功能ECU,這些功能ECU由不同的供應(yīng)商提供,不存在統(tǒng)一的中央代碼倉庫,其中運(yùn)行著各種不同的操作系統(tǒng)及應(yīng)用軟件,以至于整車代碼行數(shù)規(guī)模達(dá)到上億級。過去分散的功能架構(gòu)使得汽車不像現(xiàn)代手機(jī)一樣有中央大腦處理器集中處理軟件邏輯。在分散的EE架構(gòu)中做整車OTA,就好比把30個(gè)人的腳綁在一起大家同時(shí)往前邁一步一樣,這個(gè)協(xié)調(diào)難度比起只有2~3個(gè)人做這件事情困難很多。

傳統(tǒng)軟件應(yīng)用開發(fā),功能代碼耦合,程序整體打包,修改部分邏輯,需整體重新編譯跨控制器功能分散,所有相關(guān)控制器都需要更新軟件。如果我要更新一個(gè)ABS,那關(guān)聯(lián)的BCM、儀表、網(wǎng)關(guān)都要改,而且都分屬于不同的供應(yīng)商,代碼也是別人寫的。從這一點(diǎn)也應(yīng)證傳統(tǒng)車企被供應(yīng)商綁架了。這個(gè)屬于牽一發(fā)而動全身,比較麻煩。

2、傳統(tǒng)整車廠還不具備OTA升級相關(guān)的條件

為什么這么說呢,目前夠?qū)崿F(xiàn)整車 OTA 功能的新能源車型共有 7 款,分別是蔚來 ES6/ES8、特斯拉 MODEL S/X/3、理想 ONE、小鵬 G3。

可以看到這些車型無一例外都是新能源車,他們的E/E架構(gòu)與傳統(tǒng)車的電氣架構(gòu)有著很大的區(qū)別,基本上核心的域控制的軟件是在自己手里,才能實(shí)現(xiàn)整車的OTA,否則只能實(shí)現(xiàn)部分ECU的OTA功能。

這里舉一個(gè)小例子,傳統(tǒng)車廠如果實(shí)現(xiàn)了OTA升級皮膚主題收取費(fèi)用,這部分錢在傳統(tǒng)車廠找不到收費(fèi)的部門,軟件部門是負(fù)責(zé)升級軟件的,沒有收費(fèi)的權(quán)限,以前都是通過4S店收取費(fèi)用,現(xiàn)在直接OTA后沒有運(yùn)營部門,收費(fèi)都不知道誰去收取。這就需要傳統(tǒng)整車廠不僅僅是技術(shù)方面的改變,對于部門架構(gòu)也要做對應(yīng)的調(diào)整和改變。軟件升級絕非想象的那么簡單,在升級任務(wù)執(zhí)行的過程中,會遇到各種各樣的問題,需要運(yùn)營部門、服務(wù)部門、營銷部門甚至是當(dāng)?shù)氐?S店參與。

前面提到了ECU復(fù)雜,整車通訊網(wǎng)絡(luò)也復(fù)雜,而且整車OTA升級慢,其實(shí)OTA涉及到很多部門,而且涉及到的事情非常多,舉例一個(gè)版本管理需要考慮和設(shè)計(jì)注意事項(xiàng):

1、不同車型的系統(tǒng)適配

2、不同品牌的系統(tǒng)適配

3、同車型不同配置的系統(tǒng)適配

4、同車型不同系統(tǒng)版本的適配

5、不同車型不同配置不同品牌不同系統(tǒng)版本的適配

如果把這些問題穿插起來,你會發(fā)現(xiàn)跨品牌、跨車型、跨版本的OTA系統(tǒng)升級,將是一件工作量巨大的系統(tǒng)工程。甚至也超乎我們的想象。

OTA設(shè)計(jì)主要從安全、時(shí)間、版本管理、異常處理等方面綜合考慮,具體為:

升級安全是OTA的最基礎(chǔ)的要求。車輛上ECU的軟件運(yùn)行狀況直接會影響到車輛上的人員的生命安全。從升級包制作,發(fā)布,下載,分發(fā),刷寫等環(huán)節(jié),OTA需要從云,網(wǎng)絡(luò),車端來保證安全。在云端通過證書,簽名和加密機(jī)制保證升級包的不會隨意被制作和發(fā)布,升級包內(nèi)容不會被惡意獲取。通過可靠的物理鏈路和安全傳輸協(xié)議來保證網(wǎng)絡(luò)傳輸安全。通過汽車的功能域隔離,劃分不同ASIL等級,通過冗余設(shè)計(jì)保證整車的功能可靠性,通過安全啟動來保證可信的軟件在ECU上加載啟動運(yùn)行。

版本管控對于OTA來說很重要,因?yàn)檐囕v上ECU眾多,不同ECU有不同版本的軟件,不同車型ECU的需求有不同,版本也存在差異。版本的升級路徑管理,需要能夠全面準(zhǔn)確進(jìn)行管控。

整車升級進(jìn)行車載ECU刷寫時(shí),特別涉及動力域傳統(tǒng)ECU的刷寫,是通過CAN網(wǎng)絡(luò)進(jìn)行安裝包的分發(fā)。由于CAN傳輸速率很低(實(shí)際典型的速率為500Kb/s),并且CAN總線負(fù)載率通常要控制在30%以內(nèi),因此在帶寬允許的情況下,盡可能采取并行刷寫模式,選取刷寫時(shí)間最長的節(jié)點(diǎn)優(yōu)先處理等設(shè)計(jì)原則減少OTA升級時(shí)長。 

防變磚等異常處理。在OTA傳輸過程中,外界干擾或者其他因素導(dǎo)致刷寫異?;蛘咧袛啵囕dECU必須支持軟件回滾、斷點(diǎn)續(xù)傳、丟失重傳等處理機(jī)制。

3、目前電子架構(gòu)下,整車OTA時(shí)間非常長

人們都是利用自己熟悉的事物去思考和理解新事物的,講到升級大部分人對升級的理解是手機(jī)上APP的升級,手機(jī)系統(tǒng)的升級,windows系統(tǒng)的更新等這些熟悉的事物,覺得升級是一件相對比較容易的事情。汽車軟件升級要比手機(jī)和電腦升級所消耗的時(shí)間長,主要的原因是:

 汽車內(nèi)部各控制器的刷寫需要時(shí)間。汽車內(nèi)部各個(gè)控制器是有安全防護(hù)的,不是誰給我發(fā)刷寫指令我就認(rèn)的,首先要通過控制器的安全認(rèn)證,然后將文件傳輸給控制器,控制器再重啟完成刷寫。如果中間出了錯(cuò)誤,刷寫不成功,還需要重試。這個(gè)過程類似于我們給電腦的硬件升級驅(qū)動程序,整個(gè)過程需要較長的時(shí)間。如果是遇到那種運(yùn)算能力和存儲空間小的控制器,需要將數(shù)據(jù)按照一定的格式慢慢的寫進(jìn)控制器里去。那消耗的時(shí)間就更多的。

汽車內(nèi)部通訊網(wǎng)絡(luò)的傳輸速度較慢。手機(jī)和電腦內(nèi)部的數(shù)據(jù)傳輸是非??斓?,為了保證數(shù)據(jù)傳輸?shù)乃俣龋瑑?nèi)部總線的條數(shù)和傳輸頻率都是很高的。汽車則大不相同,汽車內(nèi)現(xiàn)在主流的還是采取CAN網(wǎng)絡(luò),理論上高速CAN的傳輸速率是1M/s,低速CAN的傳輸速率是125K/S,這些都是理論上,實(shí)際的傳輸速度要遠(yuǎn)低于這個(gè)速度,如果我們將一個(gè)100M的文件從一個(gè)零件傳輸?shù)搅硗庖粋€(gè)零件,消耗的時(shí)間本身就比較長??赡苡腥藭?,為啥汽車?yán)锊荒苡镁W(wǎng)線呢?,F(xiàn)在是有的,但關(guān)鍵就是成本啊。

基于以上兩點(diǎn),整車軟件OTA的耗時(shí)會是小時(shí)來計(jì)算,升級的控制器越多,升級的時(shí)間也就越長。所以,各位車主如果想要給自己的愛車進(jìn)行軟件升級,最好是選擇一個(gè)網(wǎng)絡(luò)條件好,停車方便的地方,同時(shí)還得關(guān)注一下,自己的電瓶電量是不是夠。另外,升級過程中車輛的一些設(shè)備是不能夠使用的,也有可能會出現(xiàn)屏幕或者是儀表的突然黑屏或者是閃動等現(xiàn)象,不用擔(dān)心,現(xiàn)在汽車軟件遠(yuǎn)程升級技術(shù)已經(jīng)非常成熟,所有的升級過程都是經(jīng)過了非常嚴(yán)格的測試才準(zhǔn)予上線的,有點(diǎn)小異常,只要等待的時(shí)間不是太長,完全可以忽略。

4、整車OTA對于硬件底層的架構(gòu)知識要求非常清晰

很多人之前把未來的汽車暢想成「一臺手機(jī)加四個(gè)輪子」,所以也理所當(dāng)然地認(rèn)為整車 OTA 應(yīng)該和我們升級手中的 iPhone 一樣簡單。但其實(shí)從架構(gòu)的角度來看,智能手機(jī)基本只配備了一臺處理器來運(yùn)行各種 APP,但汽車內(nèi)部 ECU 的數(shù)量至少有上百個(gè),它們連接在不同的車內(nèi)通訊網(wǎng)絡(luò)上,同時(shí)每條網(wǎng)絡(luò)又有著不同的數(shù)據(jù)傳輸協(xié)議。

目前絕大多數(shù) OTA 能夠做到的還只是將軟件升級包發(fā)送至車內(nèi)的 T-Box,而不能實(shí)現(xiàn) ECU 層面的軟件升級,譬如對氣囊、動力總成、車身控制或安全等功能做出及時(shí)更改。

之前也提到過了,互聯(lián)汽車和智能手機(jī)有著截然不同的電子架構(gòu)。要在汽車上實(shí)現(xiàn)真正的 OTA(從云端到 ECU),供應(yīng)商首先要在計(jì)算硬件上有很深的知識儲備,比如了解車內(nèi)不同硬件單元的區(qū)別。因?yàn)槿绻c ECU 進(jìn)行通訊直連,你得知道它是不是有兩個(gè)內(nèi)存庫。這樣在 OTA 的時(shí)候,其中一個(gè)內(nèi)存庫可以寫入升級包,而另一個(gè)內(nèi)存庫則可以存放舊版本的程序。

顯然這種雙內(nèi)存的配置十分占用空間。盡管升級數(shù)據(jù)可以進(jìn)行壓縮,但 OTA 供應(yīng)商仍需要考慮它要傳輸升級包的 ECU 是否有足夠的片上內(nèi)存(on-chip memory)。

其次,OTA 供應(yīng)商還應(yīng)該熟悉車內(nèi)的通訊網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)。因?yàn)椴煌?ECU 連接著從 CAN 總線、FlexRay、LIN 到 MOST、以太網(wǎng)等不同的通訊網(wǎng)絡(luò),只有對每條線路的特點(diǎn)有清晰的認(rèn)知才能高效地實(shí)現(xiàn)軟件升級。

對此,芯片供應(yīng)商瑞薩認(rèn)為要實(shí)現(xiàn)從 OTA 的第一階段(對單一 ECU 的升級)進(jìn)化到能夠?qū)φ嚬δ芨?,包括一些安全部件的更新。需要從兩個(gè)方面入手:一是降低車內(nèi)通訊網(wǎng)絡(luò)的復(fù)雜性;二是簡化車內(nèi) API 接口同時(shí)增加 MCU 對多個(gè)系統(tǒng)的集成化控制。

這其實(shí)涉及到了從傳統(tǒng)燃油平臺向智能電動化邁進(jìn)的過程中,整車電子電氣架構(gòu)隨之發(fā)生的演化:從分布式逐步向集中式過渡。而全新車用計(jì)算平臺的引入能夠簡化車內(nèi)網(wǎng)絡(luò)的結(jié)構(gòu),加速通訊協(xié)議的編譯過程同時(shí)增強(qiáng)各個(gè)子版塊的安全性。同時(shí)位于整個(gè)中樞系統(tǒng)的 MCU 應(yīng)該足夠智能,它需要把從以太網(wǎng)獲得的數(shù)據(jù)提前進(jìn)行壓縮,然后再傳輸給 CAN 總線。

汽車OTA從經(jīng)銷商推廣有難度,這點(diǎn)我們不難看出,以前我們車要升級都要去經(jīng)銷商升級,升級同時(shí)會幫你檢測車輛然后推廣一些用品和服務(wù),一旦OTA全面實(shí)行難免會使客戶與經(jīng)銷商的接觸少了很多,這是一個(gè)面包與愛情的故事,所以是不可避免的

由于上述OTA升級要求非常高、目前傳統(tǒng)車廠的電氣架構(gòu)又不能滿足車廠OTA、而且整車電氣架構(gòu)非常復(fù)雜,各個(gè)零部件的耦合度高、傳統(tǒng)車廠又對于ter1非常依賴,自己開發(fā)軟件能力非常弱,升級某個(gè)零部件就會涉及到關(guān)聯(lián)件的升級,而且整車上基本上沒有自己的服務(wù)器,需要ter1去搭建云平臺,而且會涉及到遠(yuǎn)程升級安全問題,升級策略、綜合因素造就了整車OTA升級困難重重。

汽車OTA典型架構(gòu)簡單介紹

上圖展示車輛內(nèi)從主機(jī)廠服務(wù)器更新程序到指定 ECU 的過程中的主要部件。首先通過蜂窩網(wǎng)絡(luò)建立車輛與服務(wù)器之間的安全連接,確保全新的,待更新的固件安全地傳輸?shù)杰囕v的 TelemaTIcs Unit,然后再傳輸給 OTA Manager。OTA Manager 管理車輛所有 ECU 的更新過程。它控制著將固件更新分發(fā)到 ECU,并告知 ECU 何時(shí)執(zhí)行更新 - 在多個(gè) ECUs 需要同時(shí)更新的情況下尤為重要 - 例如推送一項(xiàng)新功能,而該新功能涉及多個(gè) ECUs。更新過程完成后,OTA Manager 將向服務(wù)器發(fā)送確認(rèn)。

針對 OTA Manager 它可能需要外掛 NAND flash 用來存儲固件包,同樣也可以用來存儲其他車輛 ECUs 的備份,以期在 ECU 升級失敗之后進(jìn)行調(diào)用。這些備份應(yīng)該通過加密&認(rèn)證的方式進(jìn)行防護(hù)避免外部攻擊。

OTA Manager 內(nèi)部有一個(gè)表格,包含各個(gè)車輛 ECU 的相關(guān)信息,譬如 SN 號以及當(dāng)前的固件版本。這樣便于 OTA Manager 核實(shí)接收到的固件升級包并確保是通過授權(quán)的。如果是正在更新的 ECU 不具備加密能力那么 OTA Manager 同樣需要負(fù)責(zé)更新過程的解碼及驗(yàn)簽。

從上圖不難看出 OTA Manager 的重要性,也正是基于此,并結(jié)合網(wǎng)關(guān)的安全性、隔離性以及天然的多連接屬性,部分主機(jī)廠啟動自研網(wǎng)關(guān)(集成 OTA Manager 角色),譬如蔚來、FF。

汽車OTA升級過程中有哪些技術(shù)問題需要注意?

綜合看來汽車上實(shí)現(xiàn)OTA在線升級軟硬件,主要考量的還是安全問題,包括Telematics以及通信技術(shù)都已成熟并且在電腦、手機(jī)這些設(shè)備上都經(jīng)過實(shí)踐的驗(yàn)證,把這種技術(shù)轉(zhuǎn)移到汽車上就需要考慮更多環(huán)境、汽車工況等安全因素。歸納起來主要包括以下兩個(gè)方面:

信息安全:主要是通信加密、軟件包驗(yàn)簽、更新隔離以及安全芯片等;

功能安全:主要包括OTAManager的啟動條件判斷(車輛狀態(tài)等)、ECU升級的預(yù)編程條件判斷、整車模式配合以及升級方案考量(A/B法等);對于汽車OTA,我們不能很隨便地做整車ECU升級,而必須要在一個(gè)合適的時(shí)間、合適的地點(diǎn)以及車輛合適的狀態(tài)下進(jìn)行升級。

這就要求車企制定相應(yīng)的升級策略,特別是對“合適”二字進(jìn)行定義,以盡可能安全、經(jīng)濟(jì)的方式來開展這項(xiàng)操作,而不是像手機(jī)一樣在任何時(shí)間、任何地點(diǎn)實(shí)施升級。

當(dāng)然,安全是 OTA 升級中最關(guān)鍵的問題所在。不像手機(jī),升級不成功頂多是「變磚」,但汽車就不一樣了,稍有不慎就可能車損人亡。所以顯然不能很隨便地做整車 ECU 升級,這就要求車企要制定相應(yīng)的升級策略,特別是定義好「合適」二字,避免出現(xiàn)類似蔚來車主在長安街遭遇的窘迫事件。

這里的「合適」既包括了對時(shí)間、地點(diǎn)、車輛狀態(tài)等要求,同時(shí)還要對軟件的功能性進(jìn)行區(qū)分,比如關(guān)鍵系統(tǒng)一定要保持車輛靜止且電量充足等,像音樂、視頻類似的 APP 則可以在行駛過程中升級,只要確保不影響行車安全即可。

從這個(gè)角度出發(fā)考慮的話,在對汽車進(jìn)行 OTA 升級時(shí),其實(shí)要先讓云端服務(wù)器與目標(biāo)車輛進(jìn)行通訊,鎖定并同時(shí)對目標(biāo)進(jìn)行持續(xù)監(jiān)測,確保其符合升級要求。而一旦進(jìn)入升級狀態(tài),又會涉及一個(gè)新問題:中間發(fā)生錯(cuò)誤怎么辦?

其實(shí)升級過程中出現(xiàn) bug 很正常,但對汽車而言,需要制定更妥善的防錯(cuò)機(jī)制保證車輛功能安全不受影響。像「斷點(diǎn)續(xù)傳」就是目前已知的 OTA 防錯(cuò)機(jī)制中一種較常見的方案。此外還有回滾機(jī)制,因?yàn)樯壓笮孪到y(tǒng)如果不穩(wěn)定就需要退回到之前的版本,這也是對車輛安全的一種保護(hù)方式。

OTA場景策略與規(guī)則

從OEM車聯(lián)網(wǎng)運(yùn)營角度劃分,根據(jù)車輛銷售前和銷售后不同,OTA升級場景一般會區(qū)分為靜默升級和非靜默升級。靜默升級主要用于銷售前處于庫存狀態(tài)的車輛升級。OTA云平臺通過發(fā)送遠(yuǎn)程喚醒命令,通過TBOX喚醒車輛上電,連接到平臺進(jìn)行升級任務(wù)的處理。

非靜默升級主要是用于是銷售后車輛歸屬于車主后的升級場景,軟件升級變更需告知給車主,在車主知情和同意的下進(jìn)行升級。非靜默升級其中又分為普通升級和緊急升級,緊急升級一般是用于特別重要安全補(bǔ)丁的推送升級,車主知情但是無法拒絕。

OTA升級任務(wù)下發(fā)到車輛后,升級管理程序OTA Manager也必須判斷車輛條件是否符合。對于不符合條件的車輛,升級管理程序必須中止升級任務(wù)并上報(bào)給云平臺。在OTA架構(gòu)中,升級規(guī)則定義了各個(gè)車型在升級包下載,安裝刷寫階段的判斷條件。升級規(guī)則會隨著云平臺上的升級任務(wù)下發(fā)到車輛。例如最低版本要求,車輛運(yùn)行狀態(tài)、車輛位置。

某電動車廠商的車輛在長安街街心升級導(dǎo)致交通堵塞的新聞曾在互聯(lián)網(wǎng)上議論紛紛,如果在升級執(zhí)行前能否判斷車輛處于一個(gè)不適合升級的地點(diǎn),那么升級任務(wù)也不會推送給停車等候紅綠燈的車主了。一個(gè)好的OTA系統(tǒng)一定是能夠靈活的配置升級條件,并且合理準(zhǔn)確控制升級和用戶推送的系統(tǒng)。

最后,結(jié)合OEM運(yùn)營的要求,OTA升級還需要能夠靈活定義升級的具體范圍,升級時(shí)機(jī),升級內(nèi)容,提示事項(xiàng),失敗后給用戶的失敗處理提示,提升大規(guī)模升級中的運(yùn)營效率和運(yùn)營體驗(yàn),持續(xù)為車主和OEM提供價(jià)值。

第2

整車OTA需要注意些什么

上期我們聊了由于OTA升級要求非常高、目前傳統(tǒng)車廠的電氣架構(gòu)又不能滿足車廠OTA、而且整車電氣架構(gòu)非常復(fù)雜,各個(gè)零部件的耦合度高、傳統(tǒng)車廠又對于ter1非常依賴,自己開發(fā)軟件能力非常弱,升級某個(gè)零部件就會涉及到關(guān)聯(lián)件的升級,而且整車上基本上沒有自己的服務(wù)器,需要ter1去搭建云平臺,而且會涉及到遠(yuǎn)程升級安全問題,升級策略、綜合因素造就了整車OTA升級困難重重。

這期重點(diǎn)來講講OTA中需要注意的問題點(diǎn),整個(gè)升級流程中需要注意的地方。本文有借鑒參考艾比拉李總的演講和PPT內(nèi)容,一家專注于OTA升級的公司,非常的牛。

OTA方案架構(gòu)

汽車OTA系統(tǒng)是一個(gè)云管端的系統(tǒng)方案。云端主要負(fù)責(zé)升級策略、升級任務(wù)、軟件版本、數(shù)據(jù)分析等升級管理工作。車端主要負(fù)責(zé)軟件包下載,軟件包刷寫,差分還原、安全及完整性校驗(yàn)等單車軟件升級工作。車端與云端的連接方式也有很多種,如WiFi、蜂窩網(wǎng)絡(luò)、近場通訊(藍(lán)牙、LoRa、ZigBee等),無論哪種連接方式,都是讓云端與車端建立連接,讓軟件包和車輛刷寫策略能夠下發(fā)到車端執(zhí)行,完成汽車軟件升級的最終目標(biāo)。

OTA云平臺,主要包括了OTA云端的升級模型管理,升級包管理,升級任務(wù),升級策略以及日志管理的功能。OTA云端的設(shè)計(jì)要求是物理上實(shí)現(xiàn)租戶隔離的云平臺,能夠支持多種協(xié)議下升級接入,支持多車型、多品牌、多種類型ECU軟件版本管理,升級包制作,升級模型定義和升級策略和規(guī)則配置。能夠支持批量升級任務(wù)的調(diào)度和分發(fā)。能夠提供適配層與TSP平臺和OEM的IT系統(tǒng)進(jìn)行集成。性能上能否實(shí)現(xiàn)100萬以上車輛升級并發(fā),差分效率能夠不小于90%,可靠性能否實(shí)現(xiàn)3個(gè)9的要求和7*24小時(shí)的系統(tǒng)連續(xù)服務(wù)。

車端架構(gòu)按功能域劃分,分為動力系統(tǒng)域、車身系統(tǒng)域、影音娛樂域、ADAS主動安全域、自動駕駛域,不同的功能域有著不同的通信網(wǎng)絡(luò)和功能安全等級設(shè)計(jì)。。自動駕駛域或者影音娛樂域等部分ECU存在主備分區(qū)的設(shè)計(jì),即ECU內(nèi)部用于兩片區(qū)域,一部分用于存儲當(dāng)前運(yùn)行的程序,一部分用于存儲備份程序。除第一次安裝或者設(shè)備下線時(shí),ECU內(nèi)部只有一份軟件外,之后更新安裝的軟件都會與上一份共存。當(dāng)前運(yùn)行的是最新的軟件,如果升級過程中發(fā)生錯(cuò)誤或者刷寫的程序不能運(yùn)行,ECU根據(jù)OTA Manager的升級策略要求,能否自動回滾至上一個(gè)版本的程序,防止車輛ECU變磚。

升級任務(wù)是OTA平臺用于執(zhí)行和監(jiān)控一組設(shè)備的升級活動的集合。升級任務(wù)可針對特定范圍的設(shè)備,使用相應(yīng)的升級包和升級策略,進(jìn)行升級任務(wù)創(chuàng)建,下發(fā),監(jiān)控,狀態(tài)維護(hù)等整組活動的管理。升級任務(wù)的監(jiān)控功能,提供了對一組升級活動中,升級任務(wù)狀態(tài),進(jìn)度和結(jié)果的反饋。按照升級任務(wù)狀態(tài)的狀態(tài),主要包含了成功,失敗,升級中等設(shè)備的數(shù)量和各個(gè)狀態(tài)下的比例。升級任務(wù)的控制功能,提供了對一組升級活動中,升級任務(wù)的啟動,停止,暫停,恢復(fù),重啟,撤銷等操作能力,實(shí)際上是維護(hù)了任務(wù)狀態(tài)機(jī)的狀態(tài)變遷干預(yù)能力。

升級日志包括云平臺的日志,車端與云平臺通信產(chǎn)生的日志和車端升級程序搜集上來的日志。主要用于升級失敗后的分析和支撐升級運(yùn)維運(yùn)營管理。

OTA車端主要包含通信終端和各功能域的ECU。OTA通信終端一般由TBOX負(fù)責(zé),上面運(yùn)行OTA升級管理程序和升級代理程序。其中,OTA升級管理程序OTA Manager是負(fù)責(zé)連接車輛與OTA云平臺的管理程序。它實(shí)現(xiàn)了端云的安全通信,包括協(xié)議通信鏈接管理,升級指令接收和升級狀態(tài)發(fā)送,升級包下載、升級包解密、差分包重構(gòu)等功能。升級代理Update Agent,是為了兼容不同的車內(nèi)通信網(wǎng)絡(luò)和通信協(xié)議,以及不同OEM間各品牌車型的接口差異,進(jìn)行封裝適配的部分。升級代理提供了統(tǒng)一接口,由OTA廠商負(fù)責(zé)實(shí)現(xiàn)接口,完成接口和業(yè)務(wù)邏輯的適配。

OTA升級流程簡單介紹

汽車軟件升級一般從ECU的軟件新版本產(chǎn)生開始,到車端升級結(jié)果反饋回云端結(jié)束。升級過程涉及云端(由OEM來掌控)和車端(由用戶來掌控),雙方的交界點(diǎn)就在于升級任務(wù)的發(fā)布,用戶開始接受到升級通知。大致的流程描述如下:

· 軟件新版本:OEM自身或供應(yīng)商研發(fā)了某個(gè)電子元器件(ECU)的軟件新版本,經(jīng)過測試后,將軟件包上傳到OTA的云端系統(tǒng)。

· 升級包生成:OTA云端會依據(jù)上傳的軟件包和零部件當(dāng)前的軟件版本情況,自動或手動生成軟件升級包。其中包含對體量較大升級包的差分等相關(guān)功能。

· 升級包測試:為了確保升級過程中不出現(xiàn)問題,所有的升級包都必須經(jīng)過測試,經(jīng)過測試后的升級包才會被下發(fā)給真實(shí)的用戶。好的OTA系統(tǒng)還會有測試車輛的管理能力。

· 升級策略:不同的車型的不同控制器升級,在升級過程、升級條件及安全上都有不同的要求,云端要能夠?qū)⑦@些升級所需的操作制作成升級策略。升級策略測試通過后,再跟軟件包一起下發(fā)到車端。升級策略制定的靈活性,決定了OTA系統(tǒng)的優(yōu)劣。

· 升級任務(wù):升級策略約定的是一輛車的升級過程,升級任務(wù)則是約定一批車輛的升級過程。升級任務(wù)一般都會約定哪些車的哪些零部件要升級,升級前要給用戶發(fā)什么樣的通知,向用戶提示哪些內(nèi)容等。升級任務(wù)在內(nèi)部還需要有必要的審核機(jī)制。升級任務(wù)發(fā)布后,車輛就可以接受到相應(yīng)的升級通知。

· 獲取通知:OEM在云端發(fā)布升級任務(wù)后,在升級范圍內(nèi)的車輛就會獲取到升級通知,通知內(nèi)容一般情況下是云端約定好的內(nèi)容,包含升級范圍、升級耗時(shí)等內(nèi)容。

· 用戶授權(quán):車輛銷售給用戶后,其搭載的程序和存儲空間都是用戶的私人財(cái)產(chǎn),OEM想要在車輛上做軟件改動必須要經(jīng)過用戶授權(quán)。用戶授權(quán)后才能夠下載軟件包,并執(zhí)行相應(yīng)的升級操作。

· 升級包下載:車端從云端獲取本次升級所需的軟件包和相應(yīng)的升級執(zhí)行腳本。在車端進(jìn)行安全性和完整性校驗(yàn),確保安全后才能夠執(zhí)行升級。

· 升級包安裝:升級包的安裝就是汽車軟件升級的具體過程。不同的零部件有不同的升級方式,這個(gè)過程類似我們在電腦上對某個(gè)軟件進(jìn)行升級,但實(shí)際上區(qū)別較大。

· 升級結(jié)果反饋:車端在升級過程執(zhí)行完成后,無論成功還是失敗,都需要向云端報(bào)告相關(guān)的情況,車端數(shù)據(jù)的回傳是做好管理的基礎(chǔ)。

汽車OTA升級重點(diǎn)的幾個(gè)地方

1、升級包的生成考驗(yàn)OTA廠家的算法功力

軟件包是用于升級使用的程序或配置。軟件包包含有設(shè)備軟件修復(fù)的缺陷或者要加入的新功能,更新前和更新后需要做哪些驗(yàn)證檢查邏輯等,都會被打包到這個(gè)文件里。軟件包一般都是由設(shè)備軟件供應(yīng)商提供的,會通過特定渠道,發(fā)布給OTA服務(wù)方。在整車升級中,OTA 分為兩類,一種是 FOTA固件在線升級),指的是給一個(gè)零部件的ECU閃存下載完整的固件鏡像,或者修補(bǔ)現(xiàn)有固件、更新閃存。而固件之外的軟件更新,就是 SOTA(軟件在線升級)。例如,車機(jī)屏應(yīng)用程序和車載地圖的升級,都屬于 SOTA 的范疇。這兩種文件形態(tài),都屬于軟件包管理的范疇,通過軟件包分類進(jìn)行區(qū)分。軟件包管理允許軟件包能夠基于軟件包版本進(jìn)行分版本的存儲和管理,并維護(hù)軟件類型,全量與差分等屬性。

升級包是在升級任務(wù)中,用于真正下載和安裝部署的文件。升級包可以是設(shè)備軟件供應(yīng)商發(fā)布的軟件包文件,也可以是經(jīng)過OTA平臺完成了打包處理的文件。常見的升級包制作處理包括文件壓縮合并,生成特定的文件描述信息,文件簽名和加密處理。許多物聯(lián)網(wǎng)設(shè)備和車輛設(shè)備的閃存都比較小,升級包需要要能在嵌入式設(shè)備的小內(nèi)存中完成安裝。因此,升級包會盡可能地壓縮大小。為了保證效率和成功率,OTA平臺在升級包制作中提供了差分生成的離線和在線工具。升級差分包之前,通過比較新舊版本之間的差異,生成差異文件。差分更新的核心技術(shù)是各家OTA供應(yīng)商掌握的字節(jié)差分算法。

2、升級策略至關(guān)重要

升級策略是升級活動中的用于描述任務(wù)特征和目標(biāo)設(shè)備升級行為的配置。升級主要會涉及到下載和安裝兩個(gè)階段,升級策略中,一般會包含升級包下載策略和升級包安裝的策略,以及異常情況下的處理策略。例如,在整車升級中,升級策略包括靜默升級,常規(guī)升級和緊急升級的分類,也包括了升級包下載前,是否需要通知給用戶下載確認(rèn)的配置。

OTA升級場景一般會區(qū)分為靜默升級和非靜默升級。靜默升級主要用于銷售前處于庫存狀態(tài)的車輛升級。OTA云平臺通過發(fā)送遠(yuǎn)程喚醒命令,通過TBOX喚醒車輛上電,連接到平臺進(jìn)行升級任務(wù)的處理。

非靜默升級主要是用于是銷售后車輛歸屬于車主后的升級場景,軟件升級變更需告知給車主,在車主知情和同意的下進(jìn)行升級。非靜默升級其中又分為普通升級和緊急升級,緊急升級一般是用于特別重要安全補(bǔ)丁的推送升級,比如某些發(fā)動機(jī)的軟件故障等等,車主知情但是無法拒絕。

某電動車廠商的車輛在長安街街心升級導(dǎo)致交通堵塞的新聞曾在互聯(lián)網(wǎng)上議論紛紛,如果在升級執(zhí)行前能否判斷車輛處于一個(gè)不適合升級的地點(diǎn),那么升級任務(wù)也不會推送給停車等候紅綠燈的車主了。一個(gè)好的OTA系統(tǒng)一定是能夠靈活的配置升級條件,并且合理準(zhǔn)確控制升級和用戶推送的系統(tǒng)。

手機(jī)升級扔在一邊等手機(jī)自動升級,反正升級時(shí)間也快,尤其汽車是一個(gè)大件物品,很多老司機(jī)在升級的時(shí)候生怕有什么問題,就會熄火坐在車?yán)锏日嘜TA,目前的升級速度又慢,一做就是1個(gè)小時(shí),而且涉及到娛樂系統(tǒng)&空調(diào)系統(tǒng)升級的時(shí)候,大夏天30多℃,汗流浹背的焦急等待1個(gè)小時(shí),確實(shí)不會是一個(gè)好的體驗(yàn),哪怕你告訴升級后汽車能飛,我都不想升級。

其實(shí)此時(shí)可以通過手機(jī)授權(quán),在車停在地上停車場后,通過手機(jī)聯(lián)網(wǎng)授權(quán),預(yù)約OTA升級,在空調(diào)房里面吹著冷風(fēng),吃著西瓜,升級成功后把信息反饋到手機(jī)給你提示,下班后就是一輛升級完后的新車了,這樣的體驗(yàn)是不是超級perfect。

在整車升級中,因?yàn)樯婕暗杰囆团cECU的配套關(guān)系,因此升級模型一般能夠體現(xiàn)一個(gè)車型下各個(gè)零部件ECU的依賴關(guān)系,例如多個(gè)零部件ECU直接軟件包配套關(guān)系和升級順序控制,對于升級任務(wù)在設(shè)備側(cè)的準(zhǔn)確完整執(zhí)行非常重要。此外,升級模型還包含了升級規(guī)則的定義。升級規(guī)則可以用于描述升級流程中,用于允許升級能否繼續(xù)進(jìn)行的判定條件。在整車升級中,一般包括了一款車型在升級下載前,下載中,安裝前,和安裝中的判定規(guī)則配置。

3、OTA的運(yùn)營管理是OTA能否展開工作

現(xiàn)在OTA系統(tǒng)的兩大核心目的是修復(fù)車輛上的軟件問題,給車輛新增更好的功能。針對OTA發(fā)揮價(jià)值的這兩個(gè)點(diǎn)上,運(yùn)營的目標(biāo)是怎樣的呢?

1、針對問題修復(fù)類的軟件升級運(yùn)營。運(yùn)營目標(biāo)很明顯,那就是在最短的時(shí)間內(nèi)修復(fù)所有有問題的車輛,讓可能會發(fā)生的質(zhì)量問題或者是投訴都被扼殺在搖籃里。這就要求OTA系統(tǒng)在升級效率上要有所保障?,F(xiàn)在很多人說OTA系統(tǒng)運(yùn)營難,其實(shí)大部分指的是想要快速的讓新版本取代舊版本是一件非常難的事情。升級任務(wù)的執(zhí)行總是會給你一開始的驚喜,然后是焦灼的期待和漫長的等待,最后是手足無措的放棄。

2、針對新增軟件功能類的軟件升級運(yùn)營。我們就是奔著把軟件功能成功賣給用戶賺錢這個(gè)目標(biāo)去的。之前聽說過一句話,講的很有意思,世界上最難的事情有兩種,一種是把別人口袋里的錢拿到自己口袋里,另一種是把自己的思想放到別人的腦子里去。想要在車上軟件掙錢,行的通,但很多OEM還沒有這方面成功的商業(yè)模式。且不說商業(yè)模式,后面我們會說,想要賣功能掙錢,首先得有東西賣才行。

行業(yè)里大家都在拿著特斯拉、小鵬、蔚來等企業(yè)來說OTA,每每說到的時(shí)候都會說,你看人家有更新了什么功能,所以他們的OTA技術(shù)一定很牛。這里我想澄清一下,OTA是軟件更新的通道,主機(jī)廠通過這個(gè)通道升級什么并不是通道來決定的。所以,看到特斯拉更新了新功能,例如賽道模式,就下結(jié)論說特斯拉的OTA技術(shù)做的好,這兩者之間是沒有什么本質(zhì)聯(lián)系的。只能說,新銳電動車廠商在軟件功能定義上做的好,運(yùn)營做的好,而不是他們的OTA技術(shù)多牛。所以,對于想急切進(jìn)步的傳統(tǒng)OEM,OTA運(yùn)營才是關(guān)鍵所在,只有經(jīng)歷過項(xiàng)目打磨,做過深度思考的供應(yīng)商,在運(yùn)營上才會有真知灼見。“技術(shù)+服務(wù)+運(yùn)營”才是OTA系統(tǒng)的全部。

汽車軟件遠(yuǎn)程升級絕對不是在系統(tǒng)上下發(fā)一個(gè)升級任務(wù),然后新版軟件機(jī)會乖乖的跑到用戶車上的過程。車輛已經(jīng)銷售給客戶,我們在用戶車輛上下載文件、安裝程序必須要經(jīng)過用戶同意。因?yàn)檐囕v的所有者是用戶,而不是OEM。所以,在升級的過程中,我們必須獲取用戶的授權(quán),否則我們升級就如同電腦中的流氓軟件,自己下載自己安裝,還會彈消息。

在以往的軟件升級運(yùn)營活動中,遇到的最大的問題不是升級刷寫速度的問題,不是網(wǎng)絡(luò)不暢通的問題,而是如何獲取用戶授權(quán),用戶不授權(quán)升級任務(wù)就只能等待,這個(gè)等待的時(shí)間可能會比車輛升級過程的真正耗時(shí)要長很多倍。升級任務(wù)下發(fā)后,如果時(shí)間設(shè)置的好,通知設(shè)計(jì)的巧妙,一開始會有很多用戶配合進(jìn)行升級,但一段時(shí)間后,升級用戶的數(shù)量會逐漸減少,甚至是停滯。究其原因,是用戶對升級這件事情的不理解。

車輛用戶會想,我的車現(xiàn)在挺好的,為什么要升級?升級會不會給自己的車輛帶來新的問題?升級后會不會像蘋果手機(jī)一樣,老機(jī)型會卡頓和變慢?。窟€有的用戶會開始懷疑OEM升級的動機(jī),沒有問題為什么樣升級呢?這車肯定是哪出問題了,要是遇到幾個(gè)較真的用戶,解釋起來都是一件讓售后服務(wù)頭疼的事情。

其實(shí),提出問題的用戶我們一般都不擔(dān)心,至少他們關(guān)注到了車輛的軟件版本更新,最怕的是那種什么反饋都沒有,反正就是不升級的用戶,想要調(diào)用他們的積極性,那可是十分困難的事情。

用戶不是OEM的木偶,發(fā)一個(gè)指令就會讓用戶有相應(yīng)的動作。對于運(yùn)營人員而言,可以說無所不用,甚至用其極啊。個(gè)人總結(jié)出來的經(jīng)驗(yàn)是,打著車輛安全旗號的軟件更新往往會執(zhí)行的比較快,但同樣的方法用的多了,用戶也不會信你了。他們會甩給你一個(gè)表情包:我信你個(gè)鬼!

從本質(zhì)上來說,需要用戶配合的升級運(yùn)營活動,要從用戶意愿,時(shí)間和操作說明幾個(gè)點(diǎn)上去思考。任何一個(gè)升級活動在開始宣傳的時(shí)候就要思考清楚,如果我作為車主,我為什么要對車輛進(jìn)行升級,如果不升級對我有什么壞處?我們應(yīng)該怎樣發(fā)通知,怎樣描述軟件的變化才會讓用戶更容易接受。

做的再精細(xì)點(diǎn),不同的用戶群體也需要有不同的運(yùn)營策略。依托用戶的用車時(shí)間和用車習(xí)慣,以及用戶的活躍度等信息,給一個(gè)固定的群體制定細(xì)分的升級方案,是升級效率提升的有效手段。只不過,OEM要有人來負(fù)責(zé)這個(gè)事情,如果我們把這個(gè)事情交給OTA系統(tǒng)建設(shè)的信息部或者是技術(shù)部門,那效果可想而知。

OTA的運(yùn)營是需要專業(yè)人才的,這些人要懂車,懂車主,懂互聯(lián)網(wǎng)運(yùn)營,同時(shí)還需要有一個(gè)功能足夠強(qiáng)大的OTA系統(tǒng)。OEM還是要騰出點(diǎn)時(shí)間來關(guān)注系統(tǒng)的運(yùn)營功能,一開始做好了,就會減少很多后期的煩惱。例如:升級任務(wù)的重要度排序,升級任務(wù)中未升級車輛的額外通知,升級任務(wù)的灰度發(fā)布設(shè)置等等。每一個(gè)功能設(shè)計(jì)的細(xì)節(jié)都是經(jīng)驗(yàn)的積累啊。正所謂,一分錢一分貨,有些供應(yīng)商之所以價(jià)格低肯定是有原因的。

用戶獲取軟件升級的正式通知,了解到自己的車輛已經(jīng)有新版本可以使用。雖然就是一個(gè)簡單的通知,但有的時(shí)候細(xì)節(jié)上好的設(shè)計(jì)也能夠讓人耳目一新,特斯拉這個(gè)升級通知就一目了然。


4、升級的信息安全才是整個(gè)OTA升級的守門員

去年有兩名白帽黑客遠(yuǎn)程控制了一輛吉普切諾基,當(dāng)然這次“事故”只是潛在的危險(xiǎn),并沒有造成嚴(yán)重的損失,隨后克洛斯勒召回了140萬輛車。

今年已經(jīng)看到歐洲最大的汽車俱樂部(ADAC)的研究人員展示了無鑰匙的“舒適鎖定”機(jī)制在市場上的普及程度,無疑是技術(shù)精明的小偷。在阿爾法羅密歐,雪佛蘭,福特,藍(lán)旗亞,歐寶,標(biāo)致和雷諾等大眾汽車集團(tuán)中,可以使用廉價(jià)且易于使用的硬件工具繞過整個(gè)車輛系列的鎖定機(jī)構(gòu)。

車輛網(wǎng)絡(luò)安全的核心挑戰(zhàn)之一是汽車的各種ECU通過內(nèi)部網(wǎng)絡(luò)連接。因此,如果黑客設(shè)法訪問易受工具的外圍ECU(比如汽車的藍(lán)牙或者信息娛樂系統(tǒng)),那么黑客們就可以控制關(guān)鍵的ECU,如制動器或者發(fā)動機(jī),從而造成嚴(yán)重的破壞。

如今的汽車有多達(dá)100多個(gè)ECU,超過1億行的代碼,這就給與了巨大的供給面。困難的是汽車制造商是從許多不同的供應(yīng)商里獲取ECU,意味著沒有一個(gè)黑客可以控制甚至熟悉車輛的所有源代碼。

汽車越來越附能也就意味著攻擊汽車的點(diǎn)越來越多,上圖中顯示有很多點(diǎn)都是新能源汽車相對于傳統(tǒng)汽車的“高大上”功能,比如手機(jī)的遠(yuǎn)程控制,云端的遠(yuǎn)程監(jiān)控等。通信和娛樂系統(tǒng)特別容易受到攻擊,并且可以通過逆向工程來訪問API庫,從而促進(jìn)系統(tǒng)之間的數(shù)據(jù)共享。從這里,攻擊甚至可以將惡意代碼注入到電子控制單元(ECU)和控制器區(qū)域網(wǎng)絡(luò)(CAN)總線中,該總線控制關(guān)鍵系統(tǒng),如電動轉(zhuǎn)向和制動。OBD設(shè)備是廠商用來診斷汽車的各種數(shù)據(jù),該接口集成了很多ECU的CAN總線接口,通過OBD接口可以變向的訪問汽車其他設(shè)備,比如雨刷,空調(diào)等,現(xiàn)在有很多創(chuàng)業(yè)公司在做基于OBD外設(shè)控制汽車,但目前做的都不溫不火,甚至有些公司在基于該接口做自動駕駛的方案。

很多汽車廠商的服務(wù)器甚至都沒有提供安全加密的算法,當(dāng)然網(wǎng)絡(luò)攻擊只是入侵汽車的步驟之一,汽車攻擊相對于PC或者手機(jī)難以攻擊的點(diǎn)在于汽車本身是個(gè)集成度很高的產(chǎn)品,里面有大量不同廠商的ECU,每家零部件供應(yīng)商或者整車廠都有一套自己的車載協(xié)議,而且這些協(xié)議是不公開的,這是黑客們攻擊汽車最難以逾越的屏障,同時(shí)也是汽車最安全的一道保護(hù)層。

說了這么多,其實(shí)在OTA升級中最重要的就是需要涉及到數(shù)據(jù)加密的身份校驗(yàn)的問題,數(shù)據(jù)加密在整個(gè)物聯(lián)網(wǎng)中都比較成熟了,一般都是采用非對稱加密的算法。這里簡單對加密的邏輯進(jìn)行一下說明。

最簡單易懂的非對稱加密

北京的張三發(fā)了一個(gè)快遞到廣州的李四,途中經(jīng)過了上海,上海快遞中心出現(xiàn)了一個(gè)黑客老王,他偷偷打開了張三給李四的快遞,然后偷偷把里邊的衣服剪爛,再按照原樣包裝好發(fā)往廣州,可以看到對于這樣簡單包裝的傳輸在中途是可以偷偷修改里邊的東西。

HTTP的數(shù)據(jù)包是明文傳輸,也即是如果中途某個(gè)黑客嗅探到這個(gè)HTTP包,他可以偷偷修改里邊包的內(nèi)容,至于張三跟李四是互相不知道這個(gè)動作的,因此我們必須要有一個(gè)方案來防止這種不安全的篡改行為,有個(gè)方法就是加密!

非對稱加密

張三將衣服放到一個(gè)保險(xiǎn)箱里邊鎖起來,他打了個(gè)電話告訴李四保險(xiǎn)箱開柜密碼是1234,而黑客老王不知道密碼,所以他看不到保險(xiǎn)箱里邊的東西,李四收到快遞后用預(yù)先溝通好的密碼就可以打開保險(xiǎn)箱了。這里保護(hù)的手段就是張三對物品進(jìn)行加密,同時(shí)給了告訴李四解密的方法!

那如果現(xiàn)在要求張三的密碼只能通過快遞傳給李四呢?如果張三直接傳密碼給李四,老王如果嗅探到這個(gè)快遞,那老王也知道密碼了,這就無法保護(hù)快遞的安全性了。因此還需要有個(gè)方案,讓張三能夠告訴李四密碼的同時(shí),老王又無法查看到張三跟李四通信的數(shù)據(jù)。

非對稱加密在這個(gè)時(shí)候就發(fā)揮作用了,來看看怎么回事:

張三擁有兩把鑰匙,一把叫做公鑰,一把叫做私鑰。公鑰是公開讓全社會都知道,沒關(guān)系,張三告訴所有人,你們要傳遞數(shù)據(jù)給我的時(shí)候請先用這個(gè)密鑰(公鑰)去加密一下你們的數(shù)據(jù),加密后的數(shù)據(jù)只能通過張三私自藏著的私鑰才能解密。

回到剛剛例子,

張三先發(fā)給保險(xiǎn)柜(張三公鑰)給李四,接著李四把自己的保險(xiǎn)柜(李四公鑰)放到張三的保險(xiǎn)柜(即使用張三的公鑰加密李四的公鑰)里邊發(fā)還給張三,接著張三拿到李四的數(shù)據(jù)包后,用自己的私鑰解開了外層保險(xiǎn)柜(張三的公鑰),拿到了里邊李四保險(xiǎn)柜(李四的公鑰)。此時(shí)李四跟張三都有了各自的公鑰(并且都有他們自己的私鑰),接著只要保證每次互相傳遞數(shù)據(jù)的時(shí)候,把數(shù)據(jù)放在對方的保險(xiǎn)柜里邊即可(即每次都用對方的公鑰加密數(shù)據(jù)),這樣無論如何,老王都無法解開保險(xiǎn)柜(因?yàn)橹挥懈髯缘乃借€才能解開各自的保險(xiǎn)柜)。


從OTA基本流程中的安全防護(hù)來說。主要包含了升級包的加密與簽名,服務(wù)器端對于升級包的安全存儲,基于身份驗(yàn)證建立安全鏈接通道,以及汽車端信息安全防護(hù),對升級包的驗(yàn)簽和解密管控,需要配合OEM定義清晰的信息安全防護(hù)架構(gòu)以及升級流程,最終還要通過專業(yè)第三方的滲透測試來驗(yàn)證OTA的信息安全防護(hù)能力達(dá)到預(yù)定的防護(hù)等級。

加密,是不讓別人看見我傳輸?shù)氖鞘裁磧?nèi)容。認(rèn)證,就是確保車輛端、云端是我期望的、認(rèn)可的對象。

比如車機(jī)進(jìn)行軟件升級時(shí),要發(fā)出認(rèn)證請求到服務(wù)器;服務(wù)器收到車端請求信息后,發(fā)回反饋,要求發(fā)送數(shù)字證書自證身份。車端發(fā)送數(shù)字證書到服務(wù)器端;服務(wù)器對數(shù)字證書進(jìn)行校驗(yàn)是否存在問題;驗(yàn)證無誤后終端管理系統(tǒng)向終端發(fā)送驗(yàn)證結(jié)果,這時(shí)才可以開始進(jìn)行相應(yīng)的軟件升級。更新包會被加密后傳輸?shù)杰嚩?,在T-box解密后再分發(fā)到車機(jī)。另外一個(gè)比較重要的車端部分是網(wǎng)關(guān),可以避免ECU與聯(lián)網(wǎng)的遠(yuǎn)程信息處理單元直接接觸,提高了OTA更新的安全性。

第3

uboot介紹

前面提到FOTA,需要升級的時(shí)候如果涉及到uboot部分,這部分會要求非常高,畢竟我是硬件出身,就在這里班門弄斧簡單通過有趣的內(nèi)容給大家介紹一下uboot,為什么需要uboot。

先進(jìn)行一下科普吧,大家都在家炒過菜吧,其實(shí)你發(fā)現(xiàn)做一頓晚餐的過程就特別像安卓系統(tǒng)的工作原理。

1、首先要有基本的炒菜的環(huán)境,廚房要有電、天然氣要通氣,有鍋和鏟子等工具,這些類似底層硬件的電源管理,需要有這些基本的電氣條件滿足。

2、其次要有炒菜的基本佐料,包括鹽、醬油、白醋、陳醋,糖、味精、雞精,生抽、老抽、香油,芝麻油,蔥,姜,蒜,孑然,耗油、白胡椒、黑胡椒,番茄醬,花椒,辣椒,辣椒油。

無論你炒什么菜,都首先把這些佐料準(zhǔn)備好,可能炒爆炒肥腸和番茄炒蛋所需要的佐料有很多不同的,但是鹽和油肯定是都需要的,只是其他佐料有區(qū)別,這個(gè)不影響提前把這些炒菜的佐料進(jìn)行準(zhǔn)備好,盡可能的把這些佐料都準(zhǔn)備齊全。

這里就相當(dāng)于Linux內(nèi)核層,進(jìn)行USB接口、藍(lán)牙、wifi、攝像頭、音視頻、顯示屏等基本服務(wù),可能不同的APP應(yīng)用所需要調(diào)用的這些服務(wù)不同,比如一款聊天軟件可能需要使用到WIFI、攝像頭、顯示等等,不需要使用USB接口,但是不影響另外APP會可能調(diào)用到USB、存儲等等。

3、不知道你們炒菜是否需要菜譜,至少小寶我炒菜需要使用到菜譜的,需要百度一下某個(gè)菜需要什么佐料,什么樣的配比材料,沒錯(cuò)小寶這期內(nèi)容修改為美食欄目去了,下面是網(wǎng)上水煮肉片的菜譜。

其實(shí)這里使用到的菜譜就可以理解為安卓系統(tǒng)里面的硬件抽象層,這里簡單理解為,就是你如果知道這個(gè)菜譜中佐料的比例,在你自己家里炒菜和在朋友家里炒菜,這個(gè)炒出來的味道基本上也就味道相同,就可以理解為為什么這個(gè)在安卓系統(tǒng)中硬件抽象層可以在不同的平臺進(jìn)行移植,也就是掌握了菜譜的精髓,功夫我有,天下我走。

4、最后就是炒菜的動作了,其實(shí)熟練的廚師是可以至少掌握好幾個(gè)菜同時(shí)操作,這個(gè)不僅考驗(yàn)廚師的速度,也考驗(yàn)廚師的精準(zhǔn)度,對于火候的掌控要精準(zhǔn),對于佐料使用要合理分配。

其實(shí)這里炒不同的菜就類似于使用不同的APP的應(yīng)用,這里如果有一個(gè)菜炒胡了,不能影響到另外一個(gè)菜的正常發(fā)揮,類似于多線程中的某個(gè)APP掛掉了,但是不能影響到其他APP的正常使用。

這里也會出現(xiàn)占用資源的情況,比如同時(shí)用兩個(gè)鍋炒菜,左邊那個(gè)鍋在炒爆炒肥腸,直接把所有的鹽都一不小心全部倒完了,此時(shí)右邊鍋里面的菜也就報(bào)廢掉了,沒有鹽的菜不能稱之為一道菜。這個(gè)是不是類似于某個(gè)APP調(diào)用內(nèi)存泄露,把全部的內(nèi)存占用沒有釋放,導(dǎo)致機(jī)器只能重啟。

安卓系統(tǒng)啟動簡單介紹

1、安卓系統(tǒng)平臺架構(gòu)

可以看出整個(gè)架構(gòu)由5部分構(gòu)成,從下到上分別為:

1. Linux內(nèi)核層

Android 的核心系統(tǒng)服務(wù)基于Linux 內(nèi)核,在此基礎(chǔ)上添加了部分Android專用的驅(qū)動。系統(tǒng)的安全性、內(nèi)存管理、進(jìn)程管理、網(wǎng)絡(luò)協(xié)議棧和驅(qū)動模型等都依賴于該內(nèi)核。

2. 硬件抽象層(HAL)

硬件抽象層是位于操作系統(tǒng)內(nèi)核與硬件電路之間的接口層,其目的在于將硬件抽象化,為了保護(hù)硬件廠商的知識產(chǎn)權(quán),它隱藏了特定平臺的硬件接口細(xì)節(jié),為操作系統(tǒng)提供虛擬硬件平臺,使其具有硬件無關(guān)性,可在多種平臺上進(jìn)行移植。HAL 由多個(gè)庫模塊組成,每個(gè)模塊都為特定類型的硬件組件實(shí)現(xiàn)了一個(gè)接口,例如相機(jī)或藍(lán)牙模塊。當(dāng)框架 API 調(diào)用設(shè)備硬件時(shí),Android 系統(tǒng)為該硬件組件加載庫模塊。

3. 系統(tǒng)運(yùn)行庫層(Native)

系統(tǒng)運(yùn)行庫層分為兩部分,分別是C/C++程序庫和Android運(yùn)行時(shí)庫。C/C++程序庫被Android中不同的部分使用 runtime庫主要是Java核心庫(提供了Java語言核心功能因此開發(fā)者可以使用Java編寫應(yīng)用)和ART(Android 5.0 之前是Dalvik)該虛擬機(jī)不同于JVM是專門用于移動設(shè)備的虛擬機(jī) 允許在有限的內(nèi)存內(nèi)運(yùn)行多個(gè)虛擬機(jī)實(shí)例 并且每個(gè)應(yīng)用都是獨(dú)立的linux進(jìn)程這樣可以防止虛擬機(jī)崩潰時(shí)不會導(dǎo)致所有的進(jìn)程被關(guān)閉。

4. 應(yīng)用框架層(Java Framework)

應(yīng)用框架層為開發(fā)人員提供了可以開發(fā)應(yīng)用程序所需要的API,我們平常開發(fā)應(yīng)用程序都是調(diào)用的這一層所提供的API,當(dāng)然也包括系統(tǒng)的應(yīng)用。這一層的是由Java代碼編寫的,可以稱為Java Framework

5、應(yīng)用層

系統(tǒng)內(nèi)置的應(yīng)用程序以及非系統(tǒng)級的應(yīng)用程序都是屬于應(yīng)用層。負(fù)責(zé)與用戶進(jìn)行直接交互,通常都是用Java進(jìn)行開發(fā)的

2、安卓系統(tǒng)啟動介紹

上圖是車載中控導(dǎo)航的系統(tǒng)啟動的簡單介紹

1. POWER 部分 

目前的導(dǎo)航系統(tǒng)基本上都是CPU+MCU的架構(gòu),MCU進(jìn)行電源部分的管理,CAN通訊的處理、收音部分的處理,所以這里的開電源的時(shí)候,一定是MCU完成整個(gè)中控導(dǎo)航系統(tǒng)的電源初始化。

MCU內(nèi)部的電源管理器(regulator)將系統(tǒng)置于POR復(fù)位狀態(tài),直到VDD電壓上升到超過POR復(fù)位門限電平,然后低電壓檢測模塊會接管系統(tǒng)復(fù)位,直到VDD電壓上升超過其LVR復(fù)位門限電平。在完成POR和LVR復(fù)位后,MCU系統(tǒng)的電源系統(tǒng)已經(jīng)能夠?yàn)閮?nèi)部時(shí)鐘(FIRC、SIRC和LPO等)和存儲器(NVM)模塊以及CPU內(nèi)核提供穩(wěn)定的工作電壓了。

這里的加載時(shí)間一般是500ms,這里考驗(yàn)的時(shí)間其實(shí)更多的是MCU的啟動時(shí)間,一些整車的網(wǎng)絡(luò)管理也要求ECU在低功耗模式喚醒后,能夠盡快響應(yīng)CAN/LIN總線報(bào)文,也要求MCU的啟動時(shí)間要足夠快。

一些功能安全要求較高的汽車ECU應(yīng)用,比如電子助力轉(zhuǎn)向(EPS)、電子檔位控制(gear control)等,對于ECU的啟動時(shí)間(startup/boot time)有嚴(yán)格的要求, 希望ECU使用的MCU能夠盡快完成系統(tǒng)啟動初始化,執(zhí)行功能程序。

2. uboot 部分

這里的uboot主要進(jìn)行CPU狀態(tài)檢查、DDR/emmc/usb等初始化,同時(shí)也有電源管理、USB升級檢測等等,這里耗時(shí)基本上1S左右。

3.kernel部分

linux內(nèi)核的啟動,包括硬件初始化,驅(qū)動模塊加載,包括USB、video、camera、touch等初始化,init進(jìn)程,這里耗時(shí)1.5S左右。

4. Android初始化

init進(jìn)程啟動程序,zygote加載進(jìn)程,系統(tǒng)啟動服務(wù)。這里其實(shí)就是我們常見的開機(jī)動畫就在這個(gè)初始化的時(shí)候完成的,這包含窗口管理服務(wù),藍(lán)牙服務(wù)、GPS服務(wù),這里的GPS默認(rèn)設(shè)置為打開狀態(tài),即服務(wù)初始化完成后就可以馬上啟動GSP定位開始,所以GPS的冷啟動定位時(shí)間不是進(jìn)入主界面開始算的時(shí)間,而且在動畫界面初始化完成后就可以算時(shí)間了,這樣可以讓用戶感覺體驗(yàn)更快就能GPS定位了。

5.主界面

系統(tǒng)啟動,以下應(yīng)用啟動工作:收音、音視頻播放、導(dǎo)航、語音、倒車、DVR、360全景、藍(lán)牙等其他應(yīng)用,這里的時(shí)間為2S左右。

一般的安卓系統(tǒng)啟動時(shí)間為18S左右,應(yīng)用啟動2S,總計(jì)20S就可以正常操作APP應(yīng)用了,這就是為什么安卓車機(jī)開機(jī)時(shí)間都會很久的,不太適合用于儀表,因?yàn)閮x表要求開機(jī)5S左右就能正常顯示工作。

從這個(gè)耗時(shí)來看,Android初始化的時(shí)間15S最長,所以要優(yōu)化整個(gè)系統(tǒng)的啟動時(shí)間的話,可以優(yōu)先考慮這部分的優(yōu)化時(shí)間。

吃瓜群眾:小寶,你說的這些我都不懂,我們還是說回炒菜吧。

小寶:好的,那我們再來看看uboot在整個(gè)炒菜中,它是起到什么作用,初始化uboot,如果是炒菜,就是準(zhǔn)備了哪些東西。

其實(shí)這里的uboot主要進(jìn)行CPU狀態(tài)檢查、DDR/emmc/usb等初始化,同時(shí)也有電源管理、USB升級檢測等等,想想炒菜之前是不是要檢查鍋是否干凈,是否需要重新洗一遍,然后佐料這些是否足夠,炒菜的燃?xì)馐欠駢虼?,有一個(gè)初步的火量大小的控制,等后面放好佐料后根據(jù)實(shí)際運(yùn)氣的情況再調(diào)節(jié)燃?xì)獯笮〉目刂?,就類似于前面初始化DDR和FLASH的運(yùn)行速率,后面實(shí)際還可以調(diào)整這部分的運(yùn)行速率。

Uboot 的簡單介紹

1、為什么需要uboot

計(jì)算機(jī)系統(tǒng)的組成部件非常多,不同的計(jì)算機(jī)系統(tǒng)組成部件也不同。但是所有的計(jì)算機(jī)系統(tǒng)運(yùn)行時(shí)需要的主要核心部件都是3個(gè)東西:CPU+外部存儲器(Flash/硬盤+內(nèi)部存儲器(DDR SDRAM/SDRAM/SRAM)。

而一般的PC機(jī)啟動過程為:PC上電后先執(zhí)行BIOS程序(實(shí)際上PC的BIOS就是NorFlash),BIOS程序負(fù)責(zé)初始化DDR內(nèi)存,負(fù)責(zé)初始化硬盤,然后從硬盤上將OS鏡像讀取到DDR中,然后跳轉(zhuǎn)到DDR中去執(zhí)行OS直到啟動(OS啟動后BIOS就無用了)。

總結(jié):嵌入式系統(tǒng)和PC機(jī)的啟動過程幾乎沒有兩樣,只是BIOS成了uboot,硬盤成了Flash。

從第一章節(jié)中我們簡單介紹了Android系統(tǒng)的啟動流程,Android系統(tǒng)的啟動流程大致分為三個(gè)階段:


1、電源鍵按下后加載引導(dǎo)程序Bootloader到RAM 然后Bootloader把OS拉起

2、Linux 內(nèi)核層面的啟動

3、Android系統(tǒng)層面的啟動

這里的uboot就是剛開始被放到flash中,板子上電后,會自動把其中的一部分代碼拷到內(nèi)存中執(zhí)行,這部分代碼負(fù)責(zé)把剩余的uboot代碼拷到內(nèi)存中,然后uboot代碼再把kernel部分代碼也拷到內(nèi)存中,并且啟動,內(nèi)核啟動后,掛著根文件系統(tǒng),執(zhí)行應(yīng)用程序。

2、uboot有什么特點(diǎn)

uboot 屬于bootloader的一種,是用來引導(dǎo)啟動內(nèi)核的,它的最終目的就是,從flash中讀出內(nèi)核,放到內(nèi)存中,啟動內(nèi)核。

1.自身可開機(jī)直接啟動

1)一般的SoC都支持多種啟動方式,譬如SD卡啟動、NorFlash啟動、NandFlash啟動等·····uboot要能夠開機(jī)啟動,必須根據(jù)具體的SoC的啟動設(shè)計(jì)來設(shè)計(jì)uboot。

上圖是安霸A12的boot支持的啟動方式,有NOR FLASH,NAND FLASH,USB、EMMC等多種存儲設(shè)備,但是要注意,這里啟動的地址默認(rèn)都是從第一個(gè)零地址開始,比如NAND FLASH就是BLOCK 0啟動,如果這個(gè)block損壞那么就無法啟動,如果要跳轉(zhuǎn)到block 1,那么就需要CPU芯片內(nèi)部支持存儲代碼進(jìn)行判斷,否則只能從默認(rèn)block 0啟動。

2)uboot必須進(jìn)行和硬件相對應(yīng)的代碼級別的更改和移植,才能夠保證可以從相應(yīng)的啟動介質(zhì)啟動。uboot中第一階段的start.S文件中具體處理了這一塊。

2.能夠引導(dǎo)操作系統(tǒng)內(nèi)核啟動并給內(nèi)核傳參

1)uboot的終極目標(biāo)就是啟動內(nèi)核。

2)linux內(nèi)核在設(shè)計(jì)的時(shí)候,設(shè)計(jì)為可以被傳參。也就是說我們可以在uboot中事先給linux內(nèi)核準(zhǔn)備一些啟動參數(shù)放在內(nèi)存中特定位置然后傳給內(nèi)核,內(nèi)核啟動后會到這個(gè)特定位置去取uboot傳給他的參數(shù),然后在內(nèi)核中解析這些參數(shù),這些參數(shù)將被用來指導(dǎo)linux內(nèi)核的啟動過程。

3.能提供系統(tǒng)部署功能

1)uboot必須能夠被人借助而完成整個(gè)系統(tǒng)(包括uboot、kernel、rootfs等的鏡像)在Flash上的燒錄下載工作。

2)裸機(jī)教程中刷機(jī)(ARM裸機(jī)第三部分)就是利用uboot中的fastboot功能將各種鏡像燒錄到iNand中,然后從iNand啟動。

4. 能進(jìn)行soc級和板級硬件管理

1)uboot中實(shí)現(xiàn)了一部分硬件的控制能力(uboot中初始化了一部分硬件),因?yàn)閡boot為了完成一些任務(wù)必須讓這些硬件工作。譬如uboot要實(shí)現(xiàn)刷機(jī)必須能驅(qū)動iNand,譬如uboot要在刷機(jī)時(shí)LCD上顯示進(jìn)度條就必須能驅(qū)動LCD,譬如uboot能夠通過串口提供操作界面就必須驅(qū)動串口。譬如uboot要實(shí)現(xiàn)網(wǎng)絡(luò)功能就必須驅(qū)動網(wǎng)卡芯片。

2)SoC級(譬如串口)就是SoC內(nèi)部外設(shè),板級就是SoC外面開發(fā)板上面的硬件(譬如網(wǎng)卡、iNand)

5. uboot的'生命周期'

1)uboot的生命周期就是指:uboot什么時(shí)候開始運(yùn)行,什么時(shí)候結(jié)束運(yùn)行。

2)uboot本質(zhì)上是一個(gè)裸機(jī)程序(不是操作系統(tǒng)),一旦uboot開始SoC就會單純運(yùn)行uboot(意思就是uboot運(yùn)行的時(shí)候別的程序是不可能同時(shí)運(yùn)行的),一旦uboot結(jié)束運(yùn)行則無法再回到uboot(所以uboot啟動了內(nèi)核后uboot自己本身就死了,要想再次看到uboot界面只能重啟系統(tǒng)。重啟并不是復(fù)活了剛才的uboot,重啟只是uboot的另一生)

3)uboot的入口和出口。uboot的入口就是開機(jī)自動啟動,uboot的唯一出口就是啟動內(nèi)核。uboot還可以執(zhí)行很多別的任務(wù)(譬如燒錄系統(tǒng)),但是其他任務(wù)執(zhí)行完后都可以回到uboot的命令行繼續(xù)執(zhí)行uboot命令,而啟動內(nèi)核命令一旦執(zhí)行就回不來了。

總結(jié):uboot的一切都是為了啟動內(nèi)核。

1)uboot主要作用是用來啟動操作系統(tǒng)內(nèi)核。體現(xiàn)在uboot最后一句代碼就是啟動內(nèi)核。

2)uboot還要負(fù)責(zé)部署整個(gè)計(jì)算機(jī)系統(tǒng)。體現(xiàn)在uboot最后的傳參。

3)uboot中還有操作Flash等板子上硬件的驅(qū)動。例如串口要打印,ping網(wǎng)絡(luò)成功,擦除、燒寫flash是否成功等。

4)uboot還得提供一個(gè)命令行界面供人來操作。很簡單,至少你能看到。

3、Uboot完成后進(jìn)入的模式有哪些。

安卓開機(jī)后,硬件系統(tǒng)上電,首先是完成一系列的初始化過程,如 CPU、串口、中斷、timer、DDR 等硬件設(shè)備,然后接著加載 bootloader,為后面內(nèi)核的加載作好準(zhǔn)備。在一些系統(tǒng)啟動必要的初始完成之后,系統(tǒng)會通過檢測三個(gè)條件來判斷要進(jìn)入何種工作模式,流程如圖。

這里重點(diǎn)說說Recovery模式,我們可以簡單的理解為工程模式,手機(jī)進(jìn)入Recovery模式可以進(jìn)行重啟手機(jī)、清空SD卡數(shù)據(jù)、恢復(fù)出廠設(shè)置、刷機(jī)、備份與恢復(fù)數(shù)據(jù)等諸多功能。

以前買到小米手機(jī),手機(jī)無法正常開機(jī)進(jìn)入不了系統(tǒng)了,此時(shí)就從百度上搜索怎么強(qiáng)制恢復(fù)出廠設(shè)置,方法是先關(guān)閉小米手機(jī),然后同時(shí)按住“小米3音量+鍵”和“電源鍵”,大約3s左右,即可進(jìn)入小米3Recovery模式了。

怎么加快uboot的啟動時(shí)間

1、使用通訊速率快的存儲,接口需要不占用

一些功能安全要求較高的汽車ECU應(yīng)用,比如電子助力轉(zhuǎn)向(EPS)、電子檔位控制(gear control)等,對于ECU的啟動時(shí)間(startup/boot time)有嚴(yán)格的要求, 希望ECU使用的MCU能夠盡快完成系統(tǒng)啟動初始化,執(zhí)行功能程序。此外,一些整車的網(wǎng)絡(luò)管理也要求ECU在低功耗模式喚醒后,能夠盡快響應(yīng)CAN/LIN總線報(bào)文,也要求MCU的啟動時(shí)間要足夠快。

在有雙核的CPU的時(shí)候,可以在不同的內(nèi)核執(zhí)行不同的程序,這樣可以縮短啟動時(shí)間。

液晶儀表的開機(jī)速度要求比較快,一般要求在6S之內(nèi)要進(jìn)行開機(jī)進(jìn)行工作,這樣就可以更快的讓用戶處理相關(guān)的車身檢測和報(bào)警功能。

其實(shí)這里比較簡單粗暴的方便就是使用通信速度更快的存儲,下圖就是東芝產(chǎn)品介紹boot time的在使用普通NOR flash,EMMC、UFS的存儲設(shè)備,可以看到UFS接口的EMMC在64MB的數(shù)據(jù)下,也就115ms可以運(yùn)行完成,而SPI NOR FLASH需要1185ms,基本上差了10倍時(shí)間的差距。

這里唯一的不同就是存儲設(shè)備的通訊速率不同,UFS的通訊速率可以達(dá)到850MB/S,而NOR FLASH最快也就是54MB/S。

在儀表賽普拉斯推薦的平臺上,使用hyperflash,可以讓開機(jī)時(shí)間在2S之內(nèi)。

賽普拉斯主推的hyperflash,獨(dú)占帶寬無搶占的情況下,目標(biāo)帶寬為200MB/s,1280x480的標(biāo)清屏的開機(jī)速度可以達(dá)到0.7S。目前創(chuàng)維汽車智能在使用這個(gè)平臺供貨儀表,做的非常棒。

2、優(yōu)化一些時(shí)鐘、ECC校驗(yàn)等方法加快啟動速度(參考淺談嵌入式MCU軟件開發(fā)之S32K1xx系列MCU的啟動過程和啟動時(shí)間優(yōu)化方法詳細(xì)

下圖是S32KXX系列的MCU的啟動流程圖,首先是關(guān)閉CPU到的全局中斷,把CPU的內(nèi)核寄存器清零,初始化SRAM的ECC,然后進(jìn)行系統(tǒng)的初始化等等。

比如在MCU的硬件加密模塊CSEc的安全啟動(Secure boot)功能,建議使用串行(Sequential) Secure boot而不是并行(Parallel) Secure boot, 因?yàn)楹笳吖ぷ鲿r(shí)CSEc和CPU內(nèi)核都會訪問P-Flash,從而導(dǎo)致CPU內(nèi)核從P-Flash取指令的速度變慢,從而拉長Startup運(yùn)行時(shí)間,而且Secure boot運(yùn)行完之前不允許修改系統(tǒng)時(shí)鐘配置(尤其是Flash的工作時(shí)鐘FLASH_CLK):

Freescale S12G系列汽車MCU的外部晶振時(shí)鐘起振時(shí)間如下,作為參考,也是頻率越高,啟動越快(start-up時(shí)間越短)

BOOT升級的模式

正常情況下,下載了升級固件,肯定是要把新固件替換到老固件,這個(gè)時(shí)候就涉及到兩種模式。

其實(shí)這個(gè)最容易理解了,小寶給你說一個(gè)生活中的例子就好理解了,你手里拿著一個(gè)冰淇淋,現(xiàn)在老板告訴你有新款的冰淇淋來了,可以免費(fèi)領(lǐng)取一個(gè),你會怎么做呢?

有的人是把手里的冰淇淋扔掉,直接去領(lǐng)取新的冰淇淋,這樣的做法是不占用手的資料,反正都只占用一個(gè)手,缺點(diǎn)就是可能去排隊(duì)的時(shí)候,老板新的冰淇淋都領(lǐng)取完了,這個(gè)時(shí)候你就一個(gè)冰淇淋都沒有了。

有的人的做法是先排隊(duì),確認(rèn)領(lǐng)用到新的冰淇淋后再把老的冰淇淋扔掉,此時(shí)在領(lǐng)用的過程中會耗費(fèi)掉兩個(gè)手的資源,不過這樣最保險(xiǎn),哪怕沒有領(lǐng)用到最新的冰淇淋,老的冰淇淋還可以繼續(xù)吃。

同樣的道理,新固件替換老固件覆蓋的兩種方式:雙區(qū)模式和單區(qū)模式。

雙區(qū)模式:

雙區(qū)模式中老固件和新固件在flash中各占一塊bank(存儲區(qū))。假設(shè)老固件放在bank0(運(yùn)行區(qū))中,新固件放在bank1(下載區(qū))中,升級的時(shí)候,應(yīng)用程序先把新固件下載到bank1中,只有當(dāng)新固件下載完成并校驗(yàn)成功后,系統(tǒng)才會跳入BootLoader程序,然后擦除老固件所在的bank0區(qū),并把bank1的新固件拷貝到bank0中。后臺式下載必須采用雙區(qū)模式進(jìn)行升級。

優(yōu)點(diǎn):升級過程中出現(xiàn)問題或者新固件有問題,它還可以選擇之前的老固件老系統(tǒng)繼續(xù)執(zhí)行而不受其影響。

缺點(diǎn):多占用flash空間的一個(gè)存儲區(qū),在系統(tǒng)資源比較緊張的時(shí)候較為困難。

單區(qū)模式:

單區(qū)模式的非后臺式下載只有一個(gè)bank0(運(yùn)行區(qū)),老固件和新固件共享這一個(gè)bank0。升級的時(shí)候,進(jìn)入bootloader程序后先擦除老固件,然后直接把新固件下載到同一個(gè)bank中,下載完成后校驗(yàn)新固件的有效性,新固件有效升級完成,否則要求重來。

優(yōu)點(diǎn):跟雙區(qū)模式相比,單區(qū)模式節(jié)省了Flash空間的一個(gè)bank,在系統(tǒng)資源比較緊張的時(shí)候,單區(qū)模式是一個(gè)不錯(cuò)的選擇。

缺點(diǎn):如果升級過程中出現(xiàn)問題或者新固件有問題,單區(qū)模式碰到這種情況就只能一直待在bootloader中,然后等待再次升級嘗試,此時(shí)設(shè)備的正常功能已無法使用,從用戶使用這個(gè)角度來說,可以說此時(shí)設(shè)備已經(jīng)“變磚”了。

相比較,雙區(qū)模式雖然犧牲了很多存儲空間,但是換來了更好的升級體驗(yàn)。


—END—

作者 / 阿寶(微信號woabao1990)

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多