SDV之汽車OS普及篇


來(lái)源 | 侯哥工作感悟 

知圈 進(jìn)“電子電氣群”請(qǐng)加微13636581676,備注架構(gòu)


2018年8月,大眾集團(tuán)宣布將投入35億歐元為整個(gè)產(chǎn)品系列開發(fā)一種名為"VW.OS"的新軟件操作系統(tǒng)。該系統(tǒng)將從2020年起在大眾品牌的電動(dòng)汽車上推出,這些新車將擁有一種全新的電子結(jié)構(gòu),用于自動(dòng)駕駛功能。大眾的這一波操作,一石激起千層浪,引發(fā)了整個(gè)行業(yè)的震動(dòng)。有很多好事者也要跟進(jìn),好像不做自己的操作系統(tǒng)就快活不下去了,今天我們就來(lái)一起討論一下操作系統(tǒng)的問題。

SDV之汽車OS普及篇的圖1

大家日常生活中接觸到的操作系統(tǒng)有很多種,比如Windows,Linux,Android,IOS等等。可是,操作系統(tǒng)究竟指的是什么呢?

一般的定義是這樣的:
操作系統(tǒng)(Operating System,簡(jiǎn)稱OS)是管理計(jì)算機(jī)硬件與軟件資源的計(jì)算機(jī)程序。
請(qǐng)注意這里面的兩個(gè)關(guān)鍵詞: 管理和程序

操作系統(tǒng)要完成的任務(wù)首先是管理,具體如下:
1.  進(jìn)程管理,其工作主要是進(jìn)程調(diào)度,在單用戶單任務(wù)的情況下,處理器僅為一個(gè)用戶的一個(gè)任務(wù)所獨(dú)占, 進(jìn)程管理的工作十分簡(jiǎn)單。但在多道程序或多用戶的情況下,組織多個(gè)作業(yè)或任務(wù)時(shí),就要解決處理器的調(diào)度、 分配和回收等問題 。
2.  存儲(chǔ)管理分為幾種功能:存儲(chǔ)分配、存儲(chǔ)共享、存儲(chǔ)保護(hù) 、存儲(chǔ)擴(kuò)張。
3.  設(shè)備管理分有以下功能:設(shè)備分配、設(shè)備傳輸控制 、設(shè)備獨(dú)立性。
4.  文件管理:文件存儲(chǔ)空間的管理、目錄管理 、文件操作管理、文件保護(hù)。
5.  作業(yè)管理是負(fù)責(zé)處理用戶提交的任何要求。

操作系統(tǒng)從本質(zhì)上是一種軟件程序,是由代碼編譯而產(chǎn)生的。

操作系統(tǒng)的種類很多,有很多種分類方法。按照操作系統(tǒng)的原始內(nèi)核的類型可以分為兩個(gè)大類,Unix家族和MicroSoft家族,以下是一個(gè)網(wǎng)上找到的區(qū)分方法,從中可以看出,Unix是大部分我們常見的操作系統(tǒng)的始祖,包括IOS和Android:

分類
操作系統(tǒng)
UNIX System V家族
A/UX、AIX、HP-UX、IRIX、LynxOS、SCO  OpenServer、Tru64、Xenix、Solaris、OS/2
BSD UNIX-386BSD家族
BSD/OS、FreeBSD、NetBSD、NEXTSTEP、Mac OS X、iOS、OpenBSD、SUN  OS、 OpenSolaris
UNIX-Like
GNU、Linux、Android、Debian、Ubuntu、Red  Hat、Linux Mint、Minix、QNX、GNU/Linux、GNU/Hurd、Debian GNU/Hurd、 GNU/kFreeBSD、 StartOS
其他
DOS、MS-DOS、Windows、React OS

從功能角度分析,分別有實(shí)時(shí)系統(tǒng)、批處理系統(tǒng)、分時(shí)系統(tǒng)、網(wǎng)絡(luò)操作系統(tǒng)等。

從運(yùn)行環(huán)境來(lái)說(shuō),還可以分為 嵌入式操作系統(tǒng)和非嵌入式操作系統(tǒng) 。這里要著重說(shuō)明一下,嵌入式系統(tǒng)不等于嵌入式操作系統(tǒng)。

嵌入式系統(tǒng),Embedded System ,是一種“完全嵌入受控器件內(nèi)部,為特定應(yīng)用而設(shè)計(jì)的專用計(jì)算機(jī)系統(tǒng)”,根據(jù)IEEE(美國(guó)電氣和電子工程師協(xié)會(huì))對(duì)其定義是用于控制、監(jiān)視或者輔助操作機(jī)器和設(shè)備的裝置,是一種專用的計(jì)算機(jī)系統(tǒng);嵌入式系統(tǒng)作為裝置或設(shè)備的一部分,它是一個(gè)控制程序存儲(chǔ)在ROM中的嵌入式處理器控制板。

而嵌入式操作系統(tǒng)是嵌入式系統(tǒng)中的一個(gè)組成部分。是負(fù)責(zé)進(jìn)行系統(tǒng)管理的軟件程序,是一個(gè)內(nèi)置了固定應(yīng)用軟件的巨大泛用程序。

對(duì)于汽車來(lái)說(shuō),我們使用的操作系統(tǒng)都基本可以歸類為嵌入式操作系統(tǒng)這個(gè)類別。鑒于汽車控制的實(shí)時(shí)性要求較高的特點(diǎn),車上控制器使用的操作系統(tǒng)一般都是實(shí)時(shí)操作系統(tǒng)(RTOS,Real Time Operating System )。

RTOS是指當(dāng)外界事件或數(shù)據(jù)產(chǎn)生時(shí),能夠接受并以足夠快的速度予以處理,其處理的結(jié)果又能在規(guī)定的時(shí)間之內(nèi)來(lái)控制生產(chǎn)過程或?qū)μ幚硐到y(tǒng)做出快速響應(yīng),調(diào)度一切可利用的資源完成實(shí)時(shí)任務(wù),并控制所有實(shí)時(shí)任務(wù)協(xié)調(diào)一致運(yùn)行的操作系統(tǒng)。提供及時(shí)響應(yīng)和高可靠性是其主要特點(diǎn)。

下面介紹幾個(gè)汽車控制領(lǐng)域常見的操作系統(tǒng)。


OSEK OS

OSEK,是指德國(guó)的汽車電子類開放系統(tǒng)和對(duì)應(yīng)接口標(biāo)準(zhǔn)(open systems and the correspondinginterfaces for automotive electronics)。

而OSEK OS則是遵循OSEK標(biāo)準(zhǔn)的OS。OSEK-OS是個(gè)靜態(tài)的操作系統(tǒng),不支持在運(yùn)行過程中動(dòng)態(tài)更改,用戶在產(chǎn)生特定的kernel之間,必須確定所需要資源的準(zhǔn)確數(shù)目。因?yàn)槠浜?jiǎn)單可靠,從而在汽車行業(yè)中曾經(jīng)得到了廣泛的應(yīng)用,直至今日,還有大量的控制器的OS是遵循OSEK標(biāo)準(zhǔn)的。

現(xiàn)在的AutoSAR標(biāo)準(zhǔn)其實(shí)就是從OSEK標(biāo)準(zhǔn)演進(jìn)來(lái)的。


Android

Android是基于Linux內(nèi)核的操作系統(tǒng),也曾經(jīng)和Linux基金會(huì)因?yàn)閮?nèi)核問題產(chǎn)生過分歧。

雖然Android基于Linux內(nèi)核,但是它與Linux之間還是有很大的差別,比如Android在Linux內(nèi)核的基礎(chǔ)上添加了。

自己所特有的驅(qū)動(dòng)程序。其實(shí)實(shí)際上選擇linux內(nèi)核的手機(jī)系統(tǒng)很多,記得前幾年就見過三星的一款linux內(nèi)核的手機(jī),并且那款手機(jī)保持了linux系統(tǒng)的大部分特征,所以用起來(lái)感覺就像一個(gè)小巧的linux系統(tǒng)。

Android雖然是為移動(dòng)設(shè)備開發(fā)的,但是目前已經(jīng)廣泛用到了汽車的娛樂系統(tǒng)中。這樣的好處是車機(jī)可以移植很多手機(jī)上的APP。

下面的圖是Android系統(tǒng)的架構(gòu)圖。大家可以看一下,想想其中的任何一個(gè)模塊如果要做需要多少工作量。據(jù)說(shuō)Android系統(tǒng)目前的代碼行數(shù)已經(jīng)超過了一億行。按照大型軟件開發(fā)中每個(gè)軟件人員的平均產(chǎn)出工作量——100~200行/月來(lái)計(jì)算,需要多少個(gè)人月的工作量才能完成。

注:這里的產(chǎn)出量包括了前期的設(shè)計(jì)、編碼和驗(yàn)證等工作。不是純粹的Coding的工作量。

SDV之汽車OS普及篇的圖2


QNX
Blackberry(黑莓,也就是生產(chǎn)曾經(jīng)紅極一時(shí)的黑莓手機(jī)的公司)的QNX操作系統(tǒng),是一種商用的遵從POSIX規(guī)范的類Unix實(shí)時(shí)操作系統(tǒng),目標(biāo)市場(chǎng)主要是面向嵌入式系統(tǒng)。它可能是最成功的微內(nèi)核操作系統(tǒng)之一,成立于1980年,目標(biāo)市場(chǎng)主要是嵌入式系統(tǒng)。

目前很多域控制中都是采用QNX系統(tǒng)的。

SDV之汽車OS普及篇的圖3


POSIX:

POSIX不是操作系統(tǒng),是一種標(biāo)準(zhǔn),Portable Operating System Interface of Unix.,可移植操作系統(tǒng)接口。X表示其是對(duì)Unix API的傳承。

POSIX標(biāo)準(zhǔn)由IEEE(電氣和電子工程師協(xié)會(huì))發(fā)布,定義了操作系統(tǒng)應(yīng)該為應(yīng)用程序提供的接口標(biāo)準(zhǔn),是IEEE為要在各種UNIX操作系統(tǒng)上運(yùn)行軟件而定義的一系列API標(biāo)準(zhǔn)的總稱。

POSIX的誕生和Unix的發(fā)展是密不可分的。當(dāng)年最早的Unix,源代碼流傳出去了,加上早期的Unix不夠完善,于是之后出現(xiàn)了好些獨(dú)立開發(fā)的與Unix基本兼容但又不完全兼容的OS,通稱Unix-like OS。這樣版本混亂的情況導(dǎo)致相互之間的競(jìng)爭(zhēng)和不兼容之處越來(lái)越多,給軟件的可移植性帶來(lái)很大困難,對(duì)Unix的發(fā)展極為不利。為了提高兼容性和應(yīng)用程序的可移植性,結(jié)束混亂局面,IEEE提出了POSIX標(biāo)準(zhǔn),POSIX在源代碼級(jí)別上定義了一組最小的Unix(類unix)操作系統(tǒng)接口。

這套標(biāo)準(zhǔn)涵蓋了很多方面,比如Unix系統(tǒng)調(diào)用的C語(yǔ)言接口,shell程序和工具、線程和網(wǎng)絡(luò)編程等。POSIX標(biāo)準(zhǔn)意在期望獲得源代碼級(jí)別的軟件可移植性。為一個(gè)POSIX兼容的操作系統(tǒng)編寫的程序,可以在任何其他POSIX操作系統(tǒng)上編譯執(zhí)行。POSIX現(xiàn)在已經(jīng)發(fā)展成為一個(gè)非常龐大的標(biāo)準(zhǔn)族,并不局限于Unix, 一些其他的操作系統(tǒng),如Microsoft windows NT, Linux等都支持或者部分支持POSIX標(biāo)準(zhǔn)。


Adaptive AutoSAR的架構(gòu)模型

再來(lái)看一下Adaptive AutoSAR的架構(gòu)模型。具體的細(xì)節(jié)就不解釋了,網(wǎng)絡(luò)上有很多專門講解Adaptive AutoSAR的課程。

SDV之汽車OS普及篇的圖4

這里只想說(shuō)明一下在我看來(lái)Adaptive AutoSAR(AP)與Classic AutoSAR(CP)的主要區(qū)別。

1.  AP不但是一種標(biāo)準(zhǔn),還包含了代碼層面的規(guī)定,而代碼是基于C++的
2.  AP是基于POSIX的
3.  AP主要是為了面向服務(wù)的功能而設(shè)計(jì)的,是為了支持所謂的SOA(Service Oriented Architecture)

SDV之汽車OS普及篇的圖5


汽車行業(yè)的軟件和操作系統(tǒng)生態(tài)

下面借用一下鎂佳科技的莊總的一頁(yè)P(yáng)PT來(lái)說(shuō)明一下汽車行業(yè)的軟件和操作系統(tǒng)生態(tài)。 (希望莊總不要介意,你的帶貨信息也都保留著,如果想給我一些廣告費(fèi)用的話,我也不會(huì)拒絕的 )

SDV之汽車OS普及篇的圖6

底層的Driver層,也就是硬件直接相關(guān)的驅(qū)動(dòng)層,各個(gè)芯片供應(yīng)商基本都會(huì)提供一部分的,Tier1會(huì)把這個(gè)層級(jí)集成的很好,OEM完全沒有必要做。

對(duì)于操作系統(tǒng)層級(jí),想去重新弄一個(gè)也是不太現(xiàn)實(shí)的,我相信所謂的VW.OS應(yīng)該也是基于某個(gè)從UNIX派生出來(lái)的系統(tǒng)改造或者深度定制的。一個(gè)好的OS不是花錢就能做出來(lái)的,這個(gè)需要真正的大牛和強(qiáng)大的團(tuán)隊(duì)來(lái)共同構(gòu)建的,即使是這樣,也是需要巨大的資金投入加上不斷的迭代升級(jí)的,絕非一日之功可完成。而且,硬件供應(yīng)商應(yīng)該會(huì)把這部分和Driver層集成的很好,沒有必要自己做的。

上層的基礎(chǔ)設(shè)施軟件模塊,也就是所謂的MiddleWare(中間件)才是各家需要真正關(guān)注的,好的MiddleWare可以讓系統(tǒng)的效率最大化,而這層的工作也是需要長(zhǎng)期大量投入的,對(duì)于OEM來(lái)說(shuō),如果想要做,一定要三思而后行。因?yàn)橥度氪螅芷陂L(zhǎng)。而且市場(chǎng)上有一些供應(yīng)商的產(chǎn)品已經(jīng)很不錯(cuò)了。

應(yīng)用軟件&服務(wù)層才是OEM應(yīng)該專注的,這一層的能力將成為OEM的核心競(jìng)爭(zhēng)力的重要來(lái)源。而這一層的來(lái)源只有兩個(gè):OEM自己做,或者讓第三方(也可能是某些硬件供應(yīng)商)來(lái)做,并且集成。應(yīng)用軟件(Application)的集成也是一個(gè)復(fù)雜的工作,汽車不是手機(jī),輸入輸出的組合太多了,而且涉及到生命安全,如果輕視集成工作,一定會(huì)遭受巨大的損失。


總結(jié)

1.  不是所有的OEM都需要自己搞操作系統(tǒng),如果你的規(guī)模足夠大,自己的OS可以從經(jīng)濟(jì)角度來(lái)說(shuō)更劃算的話,搞一個(gè)操作系統(tǒng)也未嘗不可,但是一定要慎之又慎,有些事情不是錢就可以搞定的。

2.  對(duì)于廣大的中小OEM來(lái)說(shuō),最經(jīng)濟(jì)的方式還是遵循現(xiàn)在社會(huì)的基本原則:分工合作。沒有人可以垂直整合所有的供應(yīng)鏈,即使特斯拉自己搞芯片,也只是搞核心的一部分,不可能所有的IC都自己去搞。一個(gè)OEM再?gòu)?qiáng)大也無(wú)法和整個(gè)社會(huì)去比拼效率和效益。充分利用現(xiàn)有的資源,做好軟件集成工作才是正道。就像沒有一個(gè)OEM去自己開采鐵礦石和種橡膠樹一樣。汽車這個(gè)復(fù)雜的系統(tǒng)不是任何一家OEM可以自己搞定的,拼的是整個(gè)社會(huì)的能力。

3.  將來(lái)的供應(yīng)商體系將會(huì)從現(xiàn)在的Tier1、Tier2等轉(zhuǎn)變?yōu)椋焊鲗榆浖墓?yīng)商,硬件的供應(yīng)商,集成供應(yīng)商等。產(chǎn)業(yè)鏈的價(jià)值會(huì)被重新分配。

4.  強(qiáng)烈建議國(guó)內(nèi)的OEM進(jìn)行操作系統(tǒng)層級(jí)的合作,共同攤薄軟件費(fèi)用。我們的對(duì)手不是彼此,而是國(guó)外所有的OEM。既然我們?cè)诔擞密嚨娜慨a(chǎn)量還不如人家一個(gè),那么我們最好的辦法就是合作——雖然這很難。不過T3 的合作至少是讓我們看到了曙光。現(xiàn)在是央企之間的合作,讓我們期待著更多國(guó)內(nèi)車企之間的合作吧!

最后送給大家一首關(guān)于軟件架構(gòu)的小詩(shī):

如果沒有好的架構(gòu),
移植將會(huì)是一件很痛苦的事情。
如果沒有好的架構(gòu),
復(fù)用是最大的難題,
沒法更大限度的復(fù)用原有的代碼。
如果沒有好的架構(gòu),
一旦驅(qū)動(dòng)改了,
所有的地方都要改,
費(fèi)時(shí)費(fèi)力且很容易出錯(cuò)。
如果沒有好的架構(gòu),
應(yīng)用層中穿插著硬件驅(qū)動(dòng)層的代碼,
看著會(huì)是一片混亂,
邏輯不清,
代碼維護(hù)起來(lái)會(huì)很困難。


編者簡(jiǎn)介:
原創(chuàng)作者:侯哥@Roy 專注汽車電子電器及架構(gòu)開發(fā)
文案編輯:文昌007@Vincent 汽車信息安全從業(yè)人員
SDV之汽車OS普及篇的圖7
登錄后免費(fèi)查看全文
立即登錄
App下載
技術(shù)鄰APP
工程師必備
  • 項(xiàng)目客服
  • 培訓(xùn)客服
  • 平臺(tái)客服

TOP