隻要(yào)傳統主機(jī)廠(chǎng)- 供應商←§的(de)開(kāi)發體(tǐ)系不(bù)變,使用(yòn∞€$≈g)AUTOSAR的(de)現(xiàn)狀就(jiù)不(bù)會(huì)改變。傳統♠☆主機(jī)廠(chǎng)(特别是(shì)歐洲的(dδ e)主機(jī)廠(chǎng))和(hé)一(yī)些(xiē)沒有(yǒu)軟件(ji±φàn)能(néng)力的(de)主機(jī)廠(chǎng)會(huì)繼續大(dà₽ ✔)規模使用(yòng)。CP(Classic Platform)經過10多(duō)年(nián)發展已經是(shìγ ↑γ)非常成熟的(de)框架,經過了(le)衆多(duō)量産項目考驗。模塊的(de)功能(néng₽ ≈ )和(hé)API成熟度高(gāo)。傳統主機(jī)廠(chǎ¥♣☆ng)最喜歡對(duì)供應商開(kāi)γ↓≈發的(de)東(dōng)西(xī)标準化(huà)。我甚至看(kàn)到(dδδ₩←ào)主機(jī)廠(chǎng)直接寫ECU需求直接搬AUTO§±SAR Spec,比如(rú)網絡管理(lǐ)。而且,我自(zì)認為≤ γ↔(wèi)AUTOSAR最重要(yào)的(de)貢獻就(jiù)是(shì),主機(jī)廠(chǎng)做(zuò)通(tōng)訊建模之後→♦©<,導出某個(gè)節點ECU的(de)CAN通σ¥®(tōng)訊矩陣,以ARAXML的(de)格 式。如(rú)果供應商用(yòng)的(de✘♥≥)AUTOSAR,工(gōng)具鏈直接導入生(shēng©£ε★)成CAN通(tōng)訊的(de)代碼。我認為(wèi)國(guó)産替代還(hái)是(shì)非常有(yǒu)希望的(de)•↑₽ 。AUTOSAR CP并不(bù)是(shì)什(shén)麽先進的(de)框架。隻是(sh✔↓→βì)設計(jì)得(de)非常複雜(zá)好(hǎo)像顯得(de)門(ménε'<&)檻很(hěn)高(gāo)。國(guó)産α$替代能(néng)大(dà)幅度降低(dī)成λ↔本。
能(néng)否不(bù)用(yòng)AUTOSAR?
結論:可(kě)以,但(dàn)是(shì)我認為(wèi)要(yào)想學$™€Tesla自(zì)研不(bù)用(yòng)AUTOSAR, 有(yǒu¶÷)幾個(gè)前提。
1、必₩€±須自(zì)研多(duō)個(gè)控制(zhì)器(qì)。我在多(duō)個(gè)場(€≥chǎng)合說(shuō)過,如(rú)果自(zì)研2個(gè)控制"¥↕↑(zhì)器(qì)以上(shàng),自(→♠Ωzì)己撸的(de)框架比AUTOSAR從(cóng)經濟的(de)角度合算(suà£<¥n)。這(zhè)是(shì)基于目前A←$UTOSAR供應商還(hái)是(shì)被國(guó)外(wà☆∑♠i)廠(chǎng)商主導。
2、自(zì)己↕₹→€的(de)軟件(jiàn)團隊需要(yào)有(yǒu✘÷→)足夠的(de)實力垂直集成/開(kāi)發。如(rú)果你(nǐ)的(de)軟件(jiàn)團隊隻÷ 能(néng)開(kāi)發應用(yòng)層,最好(hǎo)盡快(kuàiβ&₹♦)打消自(zì)研的(de)念頭。你(nǐ)Hold不(bù)住∞<®。
>δβ 下(xià)面給出我個(gè)人(rén)的(de)推薦,參考AUTOSAR分(fē☆∞ n)層架構。一(yī)部分(fēn)模塊已經很(hěn)成熟方案£™了(le),一(yī)部分(fēn)模塊需要(yào)自(zì)研。給出參考建議(yì)方便↔®"£讀(dú)者內(nèi)部評估是(shì)否能(né♠¥ ★ng)自(zì)研。
操作(zuò)系統:這(zhè)部分(fēn)完全沒必要(yào)自(zì)'$§§研。直接選用(yòng)成熟的(de)RTOS。你(nǐ)發現(xiàn)芯片廠(chǎng ✔ε÷)商在發布新的(de)芯片時(shí)都(dōu)會(huì)預先集成↔₹≥常見(jiàn)的(de)OS或者RTOS,并且提供驅動的(de)參考設 ®↓計(jì)。也(yě)就(jiù)是(shì)說(shuō),如(rú)果你(γ↑$∞nǐ)選用(yòng)的(de)RTOS比較常見(jiàn),你(nǐ)後面連底層σΩ≥驅動改動都(dōu)會(huì)非常少(shǎo)。比如(rú)一(yī)般芯片廠(chǎng)商會(huì)提供FreeRTOS的(d®<e)bring-up包括bootloader和(hé)所有(yǒu)常見(jiàn)外(wài)圍≤π¥∏的(de)驅動等等。如(rú)果你(nǐ)是(shì)Safety系統,選用(yòng)S&∞σafeRTOS,API和(hé)FreeRTOS兼容。這(zhè)裡(lǐ)我不(bù)是(shì)很(hě✘↑☆→n)明(míng)白(bái),很(hěn)多(duō)AU≤∏₽TOSAR廠(chǎng)商打包一(yī)個(gè)底層的(de)OS♠→給我,對(duì)我的(de)好(hǎo)處在哪裡(lǐ)?這(zhè)些(xiē)OS一(yī)♠ ₽≥般都(dōu)是(shì)私有(yǒu),按照(zhào)這(z §hè)些(xiē)OS的(de)API反而把₹★你(nǐ)綁在這(zhè)個(gè)AUTOSAR廠(chǎng)商上(shàng)。我認為(wè♦✘i):選擇常見(jiàn)OS的(de)非常重要(yào)。工(gōng)程師(shī)的(•↑&de)學習(xí)成本低(dī),而且絕對(duì)比AUTOSAR廠(chǎng)商提ε↑α供的(de)那(nà)套東(dōng)西(xī)更成熟。唯一(yī)我能(né♦≠₩ng)想到(dào)的(de)好(hǎo)處是(shì),AUTOSAR供應商告訴你(nǐ)他(tδ'€₩ā)的(de)OS完全滿足MISRA标準。顧慮:大(dà)部分(fēn)RTOS沒有(yǒu)滿足MISRA C的(de)要(yàoα≈φ)求開(kāi)發(包括FreeRTOS和(hé)國(guó)産RTh≠≥₽read)。我們的(de)做(zuò)法是(shì)對(duì)幾個(gè)關₩±¥鍵的(de)文(wén)件(jiàn)我們自(zì)己做(zuò)了(le)符合MISRA的(α↓de)改動。
底層驅動:這(zhè)部分(fēn)芯片廠(chǎng)商都(dōu§←β₽)會(huì)提供參考設計(jì)。直接拿 ↔(ná)過來(lái)在上(shàng)面改就(jiù)行(xíngβ≤♠≤)了(le)。難度很(hěn)低(dī)。注意Safety系統需要(yào)Saf§¶£©ety BSP,這(zhè)點上(shàng)我的(de)建♦≥議(yì)是(shì),自(zì)己有(yǒu)能(néng)力就(j♣↑δ iù)自(zì)己開(kāi)發Safety <¥BSP。沒有(yǒu)足夠的(de)能(néng)力就∞×$'(jiù)讓Safety OS的(de)廠(chǎng)商提供。我們是(shì)自(↓↕zì)己做(zuò)一(yī)部分(fēn),Safety OS廠(chǎng)商提供一(yī₩™↕)部分(fēn)通(tōng)用(yòng)的(de),節省時(shí)間(jiān)和(∞♦←λhé)驗證成本。
硬件(jiàn)抽象HAL層:需要(yào)自(zì)己開(kāi)發,屏蔽底層硬件(jiàn)之間(jiān)的(de)₹>差異性。這(zhè)個(gè)設計(jì)上(shàng)難度中等吧(ba)。我覺← ★得(de)比如(rú)RThread這(zhè) αΩ部分(fēn)做(zuò)得(de)還(hái)不(bù ₽$)錯(cuò)。總體(tǐ)來(lái)講,就(jiù)是(shì)使用(y×σòng)函數(shù)指針來(lái)實現(xiàn)功能(néng)的(de)多(duō)态。≠∞±這(zhè)算(suàn)是(shì)C裡(lǐ)的(de)基操吧(ba'↔★☆)。一(yī)般高(gāo)級工(gōng)程師(shī)都(dōu)能(néng)負責±®'α。
協議(yì÷←>)棧:什(shén)麽網絡TCP/IP, AVB,DoIP這(zhè)些(xiē)。大(←™dà)部分(fēn)時(shí)候都(dōu)有(yǒu)成熟開±☆(kāi)源的(de)協議(yì)棧。我們一(yī)般直接拿(nσ"á)來(lái)用(yòng)或者做(zu≠←"™ò)少(shǎo)量修改。我的(de)建議(yì)是(shì),公司內(n☆≠↑δèi)部還(hái)是(shì)最好(hǎo)有(yǒu)✘∏人(rén)熟悉代碼,即使有(yǒu)bug或者定制÷±(zhì)的(de)需求可(kě)以自(zì)己做(zuò)。這(zhè)部分(fēn)對•♣∑(duì)工(gōng)程師(shī)要(yào)求還(hái)是(shì)比較≠♦₹高(gāo)的(de)。比如(rú)我們使用(yòng)的(de)成熟開(kāi)源框架:
π< 1. LwIP來(lái)做(zuò)以太網協議(yì)棧,Lit>εtleFS做(zuò)文(wén)件(jiàn)系統Ωσ¶,TinyUSB做(zuò)USB協議(yì)棧。
2. Linux為(wèi)主的(de)域控制(zhì)器(qì)使用(yòng)的(de)開(kāi)源框架就(jiù)更多(duō)了(le)。這(zhè)裡(≤→•lǐ)都(dōu)沒法一(yī)一(yī)羅列。
我負責的(de)≈ו網絡團隊把LwIP源代碼完全吃(chī)透可(kě)以做(zuò)任意修改。網上(shàng)中文(wén)的(de)源<§代碼分(fēn)析也(yě)很(hěn)多(duō)。難©∑度不(bù)大(dà)。
提醒•:我們對(duì)涉及到(dào)Safety部分(fēn)的(©γ≤de)軟件(jiàn)功能(néng)使用(yòng)開(kāi)源框架還(hái)是(shì)非₩♦常非常謹慎的(de)。我個(gè)人(rénΩ≠α)建議(yì)Safety部分(fēn)所有(yǒu)代碼自(zì)己撸。再往上(shàng)就(jiù)是(shì)一(yī)系列基礎服務了(le):診斷,功能(néng)安全Safety,信息安全,········等等。我們←β都(dōu)是(shì)自(zì)己開(kāi)發。診斷:DoCAN,DoIP,UDS模塊都(dōu)是(shì)自(zì)己寫的(de)。難度低(d©ī)。一(yī)個(gè)高(gāo)級工(gōng)程師(shī)帶一(yī)個(gè)研±'究生(shēng)幾個(gè)月(yuè)完成開(kāi)發測試。完全滿足ISO14229-1,∞δ♠• ISO15765, ISO 13400-2要(yào)求。功能(néng)安全的(de)模塊難度相(xiàng)對(duì)高(gāo)<>Ω€。這(zhè)裡(lǐ)能(néng)找到(dào)又(yòu)懂(dǒng↓ ₽)功能(néng)安全又(yòu)懂(dǒng)軟件 ♠(jiàn)開(kāi)發的(de)工(gōng)程師(shī∞α)非常非常難。AUTOSAR根據26262推薦的(de)所有≈≈(yǒu)Safety measure我們都(dōu)自(zì)己實現(xiàn)了(lλ∞♠₩e)。前後耗時(shí)做(zuò)了(le↔ ±)一(yī)年(nián)多(duō)。因為(wèi)開(kāi)發的(dα↑↕₽e)難度本身(shēn)也(yě)要(yào)大(dà)的(de) Ω 多(duō)。信息安全:我們直接用(yòng)的(de)WolfSSL的(de)Crypo+T¶∑₩≠LS模塊。如(rú)果遇到(dào)芯片上(shàng)帶 ≥ HSM(Hardware Security Module),直接把WolfSSL 的(de)>☆ 某個(gè)Crypto API替換為(wèi)硬δ♣件(jiàn)驅動就(jiù)可(kě)以了£β≠★(le)。難度低(dī)。
最後講麻煩一(yī)點的(de)是(shì):比如(rú)主機(jī)廠(chǎng)客戶用(yòng)V的(de)那(nà)套工(gōn♦εg)具做(zuò)CAN通(tōng)訊建模。扔給你(nǐ)ARXML通(tōng)訊矩陣。你(® ≈∞nǐ)需要(yào)自(zì)己開(kāi)發工(γ >÷gōng)具來(lái)解析ARXML,內(nèi)部生(shēng)成CAN通(tōng)訊的≈ ×(de)代碼。
工γ✔(gōng)具鏈: 我們自(zì)研的(de)工(gōng)具鏈,©≈÷
1. 生(shēng$ ©)成CAN/以太網通(tōng)訊代碼,
2. 生(shēng)成服務的(de)底層通↔γ(tōng)訊代碼。其他(tā)的(de)建模我認為(wèi)沒有(yǒu)必要(yào)。
總結
我個(gè)人(rén)認為(↑wèi)所有(yǒu)号稱自(zì)研控制(zhì)器(qì)的(de)供應商/主機(j±∞±ī)廠(chǎng)都(dōu)應該能(néng)做(z≤ ♦↔uò)到(dào)上(shàng)面所有(yǒu)。
轉自(zì)汽車(chē)電(diàn)子(zǐ)與軟件(jiα∑àn)