400-821-6015
行(xíng)業(yè)資訊
您當前的(de)位置:首頁 » 行(xíng)業(yè)資訊 » 行(xíng)業(yè)資訊
內(nèi)部資訊行(xíng)業(yè)資訊

QNX在自(zì)動駕駛輔助領域的(de)算(suàn)法移植和(hé)性能(néng)€→♣•優化(huà)

發布日(rì)期:2022-10-28

作(zuò)者 | Vincent,Gary,Jerald


01 QNX介紹及曆史

      Q γ NX立于1980年(nián),是(shì)全世界第一(yī)個(gè)類UNIX的(de)符合POSIX标準的(de)微(wēi)內(nèi)核的(de)硬實時(shí)操作(zuò)系統在過去(qù)的(de)幾十年(nián) ><中廣泛的(de)應用(yòng)在汽車(chē)、工(gōng)業(y÷×è)自(zì)動化(huà)、國(guó)防、航空(kōng)航天、醫(yī)療ε>π、核電(diàn)和(hé)通(tōng)信等領域,提供以嵌入式操作(zuò)系統 φ®£為(wèi)核心的(de)中間(jiān)件(jiàn)和(hé)基礎軟件(jiàn)£∑•解決方案在上(shàng)世紀七十年(nián)≈₹♦σ代末,QNX的(de)兩位創始人(rén)Gordon Bell和(hé)Dan Dodge根據大(dà)學時(™♥§γshí)代的(de)一(yī)些(xiē)設♦∑>想寫出了(le)一(yī)個(gè)能(néng®δ ±)在IBM PC上(shàng)運行(xíng)的(de)名叫Quick UNIX的(de)系統後來(lái)改名為(wèi)QNX并于1980年(nián)正式發布,曆經幾十年(nián)的(de)演進,QNX公司于2004年(nián)10月(yuè)哈曼集團以1.38億美(měi)元收購(gòu),作(zuò)為(wèi)哈曼的(de)一(yī)個(gè)事(shì)業(yè≠↕>♦)部經營了(le)六年(nián)。2010年(nián)04月(yuè),黑(hēi)莓以2億美(měi)元從(cóng)哈曼處收購(gòu)了(le)QNX,一(yī)同被打包收購(gòu)的(de)還(hái)有(yǒu)哈曼下(xià)屬的(de)÷↑一(yī)個(gè)位于溫哥(gē)華的(de)叫Wavemaker的(de)音(yīn)效₩↑λ₹部門(mén),也(yě)就(jiù)是(shì)現(x↑ε↓iàn)在QNX acoustic方案的(de)前身(shēn)。QNX這(zhè)個(gè)成立于加拿(ná)大(dà)渥太華的(de)公司,在被美(měi)國(guó)哈曼買走6年(niá ÷₽n)後又(yòu)重返加拿(ná)大(dà),作(zuò)為(wèi)黑(hēi)莓核心部門(méλφn)IOT技(jì)術(shù)方案事(shì)業(yè)部的(de)最重要(yào)組成  ↔部分(fēn),承擔黑(hēi)莓業(yè)務中操作(zuò)系統汽車(σ∑>chē)基礎平台軟件(jiàn)、數(shù)據α>安全、物(wù)聯網IOT及雲計(jì)算(suàn)和(hé)專利部門(mén)等重要(yào♣≤)業(yè)務內(nèi)容。

      在汽車‍→(chē)領域的(de)高(gāo)性能(néng)處理(lǐ)和☆∞€≠(hé)功能(néng)安全的(de)交叉子(zǐ)域中,QNX是(shì)全球"♥‍'最大(dà)的(de)商用(yòng)操作(zuò)系統提供商。自(zì)199 ® ÷9年(nián)進入汽車(chē)領域至今,QNX緊♦δ随并引領了(le)汽車(chē)電(diàn)子(zǐ)嵌入式≥∞α軟件(jiàn)領域的(de)發展潮流和(hé)趨勢熱(rè)點,在多(duō)類重要(yàφ≤$o)的(de)軟件(jiàn)平台上(shàng)均布局了(le)前瞻性戰略産品,為(wèi) ∏γ全球一(yī)線汽車(chē)供應商和(hé)制(zhì∞×)造商提供先進的(de)基礎軟件(jiàn)和(hé)網絡安全技(j'♥→ì)術(shù),被廣泛應用(yòng)于高(gāo)級駕駛輔助系統、基于虛拟化(huàβ₽)技(jì)術(shù)的(de)智能(néng)數(shù)字座艙系統,智能(&"↑↕néng)網聯模塊、智能(néng)網關、高(gāo)性能(néng)計(&λλjì)算(suàn)平台及信息娛樂(yuè)系統等汽車(chē)電(diàn)子(zǐ) ×♣的(de)子(zǐ)系統中。據知(zhī)名獨立↔↑調研公司Strategy Analytics在2022年(ni ↓δ≤án)初的(de)統計(jì),全球已有(yǒu)超過2.15億輛(liàng)汽車(ch★β≈ē)搭載BlackBerry QNX軟件(jiàn¶φ‌Ω),平均每年(nián)新增2000萬台搭載黑(hēi)莓QNX的(de)基礎軟件(jiàn)的&‍​(de)智能(néng)汽車(chē)進入全球市(shì)場(ch↓<×↑ǎng)。


      到(dào)目前為(wèi≤'>β)止,世界上(shàng)幾乎所有(yǒu)的(de)主機(jī)$™∏廠(chǎng)都(dōu)采用(yòng)了(le)基©'‌↑于QNX操作(zuò)系統的(de)軟件(jiàn)技(jì)術(sh→↓ù)。全球top 25家(jiā)電(di↑©àn)動汽車(chē)廠(chǎng)家(jiā),其中24家(jiā)在使用(✘®≠↔yòng)QNX的(de)軟件(jiàn)操作(zuò)系統,例如(rú),中國(guó)的(de)小(xiǎo)鵬汽車(chē♣♥©)自(zì)動輔助駕駛系統Xpilot3.0和(hé)Xpilot3.5基于QNX通(tōn₹♠∞g)過TUV萊茵ISO26262 ASIL D功能(néng)安全的(de)硬實操作(zβ$¶₹uò)系統,合衆新能(néng)源汽車(chē)的(de)哪吒S采用≤₹(yòng)QNX Hypervisor•↑₹打造其全新科(kē)技(jì)感智能(néng)座艙,并在其全棧自>↔≠ (zì)研的(de)TA PILOT 3.0智能(néng)駕駛系統中搭載QN←≠↓®X OS for Safety操作(zuò)系統,實現(x→→ iàn)多(duō)種場(chǎng)景下(xià)的(de)智能(néng)輔助‌ ★λ駕駛,又(yòu)如(rú)零跑汽車(chē)在其量産的(de)第三代₽©♣高(gāo)端純電(diàn)SUV—零跑C11和(hé™​€)智能(néng)純電(diàn)橋車(chē)C01中均采用(yòng)了♣₩α(le)QNX Neutrino實時(shí)操作(zuò)系統和•<™(hé)QNX Hypervisor,旨在為(wèi)中國(guó)消費(fèi)者帶來‍¶÷(lái)更個(gè)性化(huà)與舒适的(de)駕駛體(tǐ)驗。除此之外(wài),高ε↑±€(gāo)合即将發布的(de)豪華純電(diàn)§≤​超跑HiPhi Z的(de)自(zì)動輔助↕↑駕駛平台使用(yòng)的(de)是(shì)英偉達Orin-X芯片和(hé) QNX 嵌入式₹εα硬實時(shí)操作(zuò)系統。


      時(shí)代周刊曾在2016年(n≥‍ián)對(duì)QNX評價為(wèi)“QNX對(duì)于¶λ汽車(chē)來(lái)說(shuō)就(jiù)像微(wēi)軟對(duì)于電(diàn)™​腦(nǎo)一(yī)樣”,诠釋了(le)QNX在汽車(chē)領域的(de)≈✘基礎軟件(jiàn)操作(zuò)系統地(dì)位以及深度的(de)♦₽®σ覆蓋率。




02 QNX特點


  • QNX是(shì)嵌入式硬實時(shí)的(de)微₹ ≠(wēi)內(nèi)核操作(zuò)系統


         ∑ ∞有(yǒu)硬實時(shí)、微(wēi)內(nèi> <)核、模塊化(huà)、弱耦合、分(fēn)布式的(de)特點,從(cóng)198≤§0年(nián)誕生(shēng)之初就(jiù)是(shì)基于SOA架構設計(jì)←§>,基于Client-Server的(de)模型,具體(tǐ)表現(xiàn)為(wèi):ε‍λ


  1. 硬實時(shí):任何切換時(shí)間(jiān)和(hé)中斷時(shí✘•)延速度快(kuài),所有(yǒu)的(de)任務響應均為(wèi)确定性∏≠✘↑deterministic行(xíng)為(wèi)。


  2. 微(wēi)內(nèi)核:除調度、進程管理(lǐ)、中斷及操作(zuò)系統核心的(de)功能(néng)外(wà↓§λεi),其餘部分(fēn)都(dōu)處于用(yòng)戶态,包↑£‌括驅動、協議(yì)棧、文(wén)件(jiàn)系統及功能(néng)✘ ¶→模塊等。


  3. 模塊化(huà):操作(zuò)系統的(de)各個(gè)功能(₹ ™÷néng)單元都(dōu)模塊化(huà)設計(jì),內(nèi)存保護,并且相(xià​¶↕ng)互隔離(lí),可(kě)按照(zhào)需要(yào)動态加載或卸載♦₩δ,基于消息機(jī)制(zhì)通(tōng)信,βε&按照(zhào)Client-Server的(de)架構設計(jì)。


  4. 弱耦合:模塊與模塊之間(jiān)互不(bù)影(yǐngπ€±β)響,都(dōu)在獨立的(de)虛拟地(dì)址空(kōng)間(jΩ€★iān)運行(xíng)。


  5. 分(fēn)布式:局域網內(nèi)的(de)QNX系統對(duì)于用(yòng)≥↔☆•戶角度可(kě)以認為(wèi)是(shì)一(♣γyī)台QNX系統,資源可(kě)以複用(yòng)。


  • QNX是(shì)類UNIX操作(zuò)系統

       遵循P"εOSIX的(de)最高(gāo)級别PSE54标準(注:POSIX标準有(yǒu)四個(gè)β‍£•等級PSE51, PSE52, PSE53和(hé)™± PSE54, 在RTOS實時(shí)操作(zuò)系統的(de)世界裡(lǐ),隻有(yβσ‍←ǒu)QNX操作(zuò)系統是(shì)PSE54标準的(‍±de),因為(wèi)QNX誕生(shēng)之初就(jiù)是(shì)類UNIX系統按Ωσ照(zhào)POSIX标準編寫),因此基于開(kāi)源的(de)應用(yòng)​ 程序以及一(yī)些(xiē)開(kāi'∏÷↔)源的(de)中間(jiān)件(jiàn)都(dōu)可(kě)以無縫的(de)移植到(dào•₹♠)QNX系統之上(shàng)。QNX Microkern ≥≠el和(hé)Process Manager組成QNX最≈™×小(xiǎo)系統Procnto,其他(tā)如( φrú)驅動程序、協議(yì)棧、文(wén)件(jiàn)系統、應用(yòn✔♠✘≥g)程序都(dōu)作(zuò)為(wèi)一(y♣‌££ī)個(gè)獨立的(de)模塊運行(xíng)在QNX"✔系統之上(shàng)。


  • QNX是(shì)功能(néng)安全和(hé)信息安全的(de¶♦✘→)操作(zuò)系統


       QNX通€↕™(tōng)過功能(néng)安全TUV萊茵ISO 26262 ASIL D最高(gā≥φδΩo)等級道(dào)路(lù)車(chē)輛(liàng)最高(gāo)功能(né←‌ng)等級安全認證,包括QNX 操作(zuò)系統、QNX Hypervisor虛拟化(h₹←♠•uà)和(hé)Graphic Monitor§×圖形監控子(zǐ)系統以及QNX IPC通(tōng)λ​'Ω訊機(jī)制(zhì)black channel,同時(shí)黑(hēi)莓是£∑(shì)網絡信息安全标準ISO/SAE 21434 委員(≠λyuán)會(huì)基礎軟件(jiàn)組唯一φ≤≥(yī)成員(yuán)。


  • QNX其他(tā)特性


1. QNX調度算(suàn)法及策略


      QNX™₩調度算(suàn)法有(yǒu)很(hěn)多(duō)種,本質上(shà↕€ng)基于優先級搶占式。QNX的(de)線程優先級是(• ✘shì)一(yī)個(gè)0-255的(d‍εe)數(shù)字,數(shù)字越大(dà)優先級越高(gāo)。在QNX上(shàng)₽α有(yǒu)三種基本調度策略,可(kě)以↑‌←×單獨使用(yòng)也(yě)可(kě)以組合使用(yòng),包括←÷β基于時(shí)間(jiān)片輪詢Round∑↔§ Robin、優先級搶占式FIFO和(hé)基于時(shí)間(jiān)Bud±↑get的(de)Sporadic算(suàσ<n)法。同時(shí)QNX還(hái)提供APS自"±∑δ(zì)适應分(fēn)區(qū)調度算(suàn)法,在CPU滿負荷的(de★©)場(chǎng)景下(xià)保證低(dī)≠®優先級的(de)任務有(yǒu)調度的(de)機(jī)會(huì),不(bù)被“餓死”。


2. QNX IPC通(tōng)訊機(jī)制(zhì)


      QNX除了↓'×™(le)支持Native的(de)IPC機(jī)制(zhì)如(£™©rú)Massage passing、Signal等,同時(shí)還(háλ↔α™i)提供POSIX标準的(de)IPC例如(rú)MessageQ、Piplβ₹e、Shared Memory等IPC通(Ωπ± tōng)訊方式,多(duō)種IPC方式供用(yòng)戶≈↓∑在不(bù)同的(de)應用(yòng)場(chǎng)₽>↔景下(xià)進行(xíng)選擇。


3. QNX 的(de)IDE集成開(kāi)發環境


      QN∞"±X提供基于Eclipse的(de)Momentics IDE集成開(kāi)發←™環境,供用(yòng)戶進行(xíng)基于以太網Softwar>✘>e GDB的(de)代碼級的(de)編譯調試或系統性能(• λnéng)分(fēn)析,可(kě)實時(shí)以圖☆'形化(huà)的(de)方式,查看(kàn≠≥¥®)進程資源、系統日(rì)志(zhì)、CPU占用(yòng)<₹>情況,內(nèi)存使用(yòng)情況,進程間(jiān)通(tōng)信以及Coredump等φ♥。



03 QNX在自(zì)動輔助駕駛領域的(de)應用(yòng)


       由于QNX實時(shí)性、确定性♠'行(xíng)為(wèi)和(hé)功能(néng)安全的(de)≥♦® 特性,契合自(zì)動輔助駕駛對(duì)功能(néng)安全ISO26262 ASIL÷≥•₹ D的(de)安全等級要(yào)求,因此由于國(guó)內(nèi)♠®外(wài)主機(jī)廠(chǎng)項目的(de)需求,QNX被廣泛的(deγπ£)應用(yòng)于自(zì)動輔助駕駛領域,作(zuò)為(wèi)基礎軟件'&↑ (jiàn)承載上(shàng)層的(de)各種實時(shí)和(hé)高(gāo)可(kě≠ σ)靠性應用(yòng)。由于在自(zì)動輔助₽β&£駕駛領域,芯片和(hé)基礎軟件(jiàn)越來(lái)越成為(wèi)一(yī)個(gè)整體λ§(tǐ)方案,因此QNX也(yě)被包含在主流的(de)高(gāo)性能(néng)自(zì)λ✔€動輔助駕駛芯片的(de)整體(tǐ)基礎軟件(jiàn)平台方案中,作(zuò)為(w©®¥èi)關鍵的(de)一(yī)部分(fēn)提供給最終用(yβλòng)戶。

  • 英偉達與黑(hēi)莓QNX的(de)合作(zuò)


       英偉達的(de)一(yī)系列高(gāo)性<♠‍能(néng)芯片廣泛的(de)應用(yòng)在自(zì)動輔助駕駛領域,例如(rú)Xavie£ ≥r、Orin和(hé)Thor等。英偉達作(zuò)為(wèi)頂尖的(de)自(zì®$)動輔助駕駛芯片平台整體(tǐ)解決方案商,在平台軟件(jiàn)層& δ面上(shàng)提供以DriveOS為(wèi)核心的(d§‌e)基礎軟件(jiàn)平台,早在五年(nián)前,英偉達就(j≈₹Ωiù)選定QNX,雙方深入合作(zuò),QNX作(zuò)為(wè →λ∞i)英偉達DriveOS功能(néng)安全ISO26262 ®Ω✔ASIL D版本唯一(yī)的(de)RTOS合作(zuò)夥伴,由英偉達提供基于QNX的(d₽→e)功能(néng)安全版本的(de)DriveOS的(de)一(yī)站(zhàn)¶♦λΩ式方案,例如(rú)在Xavier平台上(shàng),因為(wèi)整體(tǐ)平≤>台軟件(jiàn)要(yào)達到(dào)ASIL D級别,DriveOφ S隻提供QNX SafetyOS安全內(nèi)核版本。英偉達極其重視(sε→≈hì)功能(néng)安全,黑(hēi)莓QNX作(zuò)為(wèi)英偉達平台中唯一(y$¶ī)RTOS操作(zuò)系統合作(zuò)夥伴,包含在Driv♠♥≈er OS的(de)整體(tǐ)方案,由英偉達提σ•✔供一(yī)站(zhàn)式的(de)方案和(hé)服務支持,即服務工×€≤(gōng)程支持由英偉達統一(yī)接口。


  • 高(gāo)通(tōng)與黑(hēi)莓QNX的(de)合作(zuò)


       高(gāo)通(tōng)作β∏ ₹(zuò)為(wèi)IOT和(hé)手機(jī)領域芯片方案的(de)≤₽翹首,在車(chē)載汽車(chē)電(di↓≥àn)子(zǐ)的(de)中高(gāo)端智能(néng)座σγ±艙領域占了(le)絕大(dà)多(duō)數(shù)的(de)份額,黑(hēi)莓QNX ♣• 作(zuò)為(wèi)高(gāo)通(tōng)Snapdr$↕agon座艙芯片整體(tǐ)解決方案的(de)一​<(yī)部分(fēn),也(yě)是(shì)唯一(yī)的(de)H₹∏ypervisor合作(zuò)夥伴和(hé)高(gāo)通(tōng)一¶₩(yī)起支持了(le)全世界近(jìn)百個(gè)汽車(chē)電(diàδ ≤≥n)子(zǐ)的(de)客戶,同樣在自(zì)動輔助駕駛領域<↑,高(gāo)通(tōng)Snapdragon Ride也(yě)定點了γ®(le)許多(duō)全球領先的(de)主機(jī)廠(chǎng)≥£π©項目,例如(rú)官宣的(de)大(dà)衆、寶馬、£‌σ通(tōng)用(yòng)以及長(cháng)城(ch₹♥éng)汽車(chē)等,黑(hēi)莓QNX作(zuò)為(wèi)高(gāo)通(tōn≤‍g)自(zì)動輔助駕駛芯片平台的(de)基礎軟件(jiàn)底座  部分(fēn),由高(gāo)通(tōng)提供一(yī)站(zhàn)式的(de)ISO 2✔♣¶↔6262 ASIL D功能(néng)安全等級的(de)整體(tǐ)軟•‌₩件(jiàn)平台方案。


  • 國(guó)內(nèi)自(zì)動輔助駕駛芯片公司與黑(hēi)莓 ₩QNX的(de)合作(zuò)


      &nbs→÷p;近(jìn)年(nián)來(lái)高(gāo)性能(né₹♣ng)的(de)國(guó)産芯片層出不(bù)窮₩',在自(zì)動輔助駕駛領域,也(yě)有(yǒu)越來(lái)越多(duō)有(yǒ✔ u)潛力的(de)國(guó)産公司展露頭角,黑(hēi)莓QNX目前已經完成适配↓♠™黑(hēi)芝麻A1000和(hé)地(dΩλ↓♦ì)平線J5等芯片,由芯片公司提供一(yī)站(zhàn)式的(de)整體(tǐ)解≈φ&®決方案。值得(de)一(yī)提的(de)是(shì →),後續還(hái)有(yǒu)多(duō)家(jiā)重視(shì)功能(néng≠≠&)安全的(de)頂級國(guó)産大(dà)算(suàn)力高(gāo)性能(néng)自(zì)®×£動輔助駕駛芯片合作(zuò),将于明(m₽δ×íng)年(nián)正式發布。



04  中國(guó)自(zì)動輔助駕駛領域基礎平台軟件(jiàn)所遇到(dào)的(de)問(wè'εn)題


       近(jìn)年(nián)來(↑ lái)自(zì)動輔助駕駛領域非常火(huǒ)爆,許多(duō)國(guó)內₩♣(nèi)外(wài)的(de)主機(jī)廠(chǎng)都(dōu)逐步↔→在量産項目中開(kāi)發以及發布L2+的(de)功能(néng),當我們回顧這(zhè)幾年(n•×ián)來(lái)快(kuài)速發展會(h₽δuì)發現(xiàn),大(dà)多(duō)數(shù)的♦ (de)自(zì)動輔助駕駛的(de)人(rén)才都(₹±↓ dōu)來(lái)自(zì)于RobotaxiΩ",自(zì)動駕駛算(suàn)法初創公司或大(dà)學研究機(jī)構,特别是(sΩεhì)算(suàn)法人(rén)才。這(zhè)就(jiα≠ù)有(yǒu)個(gè)顯著的(de)特點,在這(zhè)些(xiē)公司裡(lǐΩλε¥)面的(de)大(dà)多(duō)數(shù)項目,最初都(φ>dōu)是(shì)基于工(gōng)控機(jī)+英偉達顯卡(大(dà)多(¥÷duō)數(shù)用(yòng)英偉達的(de)GP♣☆★U,少(shǎo)數(shù)用(yòng)AMD的(de))+開(kāi)源的(de)操作(z¥Ωuò)系統+來(lái)自(zì)于開(kāi)源的(de)算(suàn☆£♠←)法,其實和(hé)汽車(chē)電(diàn)子(zǐ)的§>Ω≥(de)安全性本身(shēn)毫無關系,唯一(yī)的(de)好(hǎo)處就(jiù)是(shì≈♦<)快(kuài),容易盡早演示,盡快(ku₽®÷ài)融資。


       這(zhè)些(xiē)算(&±suàn)法人(rén)才加入主機(jī)廠(chǎng)之後,更傾向于用(yòng)以£δ¶前最熟悉的(de)開(kāi)發方式,這(zhè)樣好(hǎo)€<盡快(kuài)的(de)出演示成果,也(yě)就(jiù)是(shì)英偉達的(de)S÷₽≈​OC+開(kāi)源的(de)操作(zuò)系統+來(lái)自(zì≠♠ ")于開(kāi)源的(de)算(suàn)法。另一(yī)方面,在✔☆↕♠自(zì)動輔助駕駛項目中,一(yī)般主機(jī)廠(chǎng)會(huì)把控☆ 制(zhì)器(qì)平台即硬件(jiàn)¶≥₩λ和(hé)平台軟件(jiàn)外(wài)包給外(wài™Ω>≠)部的(de)Tier1來(lái)做(zuò)∏ ,類似于一(yī)台PC電(diàn)腦(nǎo),而自(zì)己開(kāi)發應用(yòng♣✔ €)和(hé)算(suàn)法。


       一(yī×≠σ)般主機(jī)廠(chǎng)也(yě)有(yǒu)平台組,負責部₹​©分(fēn)的(de)驅動及驅動以上(shàng)的(de)中間(jiān)件≥​♣✔(jiàn)的(de)整合,系統組負責系統設計(jì)統籌,功能(néng)安全團λπ₹隊負責整體(tǐ)的(de)功能(nénλφ¥÷g)安全,而算(suàn)法團隊負責算(©"♥δsuàn)法應用(yòng)的(de)開(kāi)¶♠‌÷發和(hé)實現(xiàn),那(nà)麽問(wèn≠ε₹)題就(jiù)來(lái)了(le),除純算(suàn)法團隊外(w>♣ài),一(yī)般國(guó)外(wài)的(de)主機(jī)廠(chǎng)都(dōu)會  ×≤(huì)有(yǒu)一(yī)個(gè)成建制(zhì)的(₩↔↓de)叫算(suàn)法嵌入式工(gōng)程實現(xiàn)的(d×≠e)團隊,負責算(suàn)法在非工(gōng)↔¶控機(jī)的(de)嵌入式環境和(hé)實時(shí)操作π♠₽(zuò)系統的(de)優化(huà)實現(xià¶★ n)落地(dì),這(zhè)樣的(de)團隊即要(yào)懂(dǒng)α‌一(yī)點算(suàn)法架構,又(yòu)要(yào)懂(dǒng♣✔)嵌入式軟件(jiàn)的(de)開(kāi)發和(hé)硬件(jiàn)特性,又(yòu λ±)要(yào)對(duì)操作(zuò)系統有(yǒu)足夠的(de)理(lǐ)解。↓♦


       ♦→;而在中國(guó)的(de)許多(duō)主機(jī)廠(♥↔÷¶chǎng),沒有(yǒu)看(kàn)<✔£≠到(dào)有(yǒu)這(zhè)樣一(y₩♠•≈ī)個(gè)團隊,甚至這(zhè)樣的(de)人(rén)才‌ §存在。因此不(bù)少(shǎo)項目由于開(kāi)發周期緊,人(rén)員(yuán)不(><↔bù)具備嵌入式系統開(kāi)發的(de)經驗,會(huì)采用(yòng)更接近£♠(jìn)于robotaxi的(de)方式開(kāi)發,即英偉達SOC中的(de)處理(lǐ ₽γ)器(qì)(類似工(gōng)控機(jī)),SOC中的(de)GPU(類★♠似顯卡)和(hé)開(kāi)源操作(zu↓✔‌€ò)系統+未經優化(huà)的(de)各種開(kāi)源算(suàn)法,在滿足基本功能(nénαπασg)和(hé)有(yǒu)限性能(néng)的(de)前提下(xià§α),功能(néng)安全團隊的(de)建議₽™(yì)通(tōng)常會(huì)被直接忽略,因為(wèiπ≈)要(yào)滿足極短(duǎn)的(de)量産時(shí)間(÷∏♥jiān),在國(guó)內(nèi)主機(jī)廠×÷∏(chǎng)軍備競賽中領先才是(shì)最重要(yà≈"‍o)的(de),這(zhè)在歐美(měi)的(de)主機(jī)廠(chǎng)σ"是(shì)不(bù)可(kě)想象的(de)。在這(zhè)一™±$(yī)點上(shàng),中國(guó)也↕≥↑λ(yě)有(yǒu)許多(duō)人(rén)才儲備充足并且付責任的(de)&§×γ主機(jī)廠(chǎng)做(zuò)的(de)非常好(hǎo),特别是(shì)有(yǒ✘≈ u)專門(mén)的(de)經驗豐富的(de)算(su✘'εàn)法工(gōng)程實現(xiàn)的(de)團σα>≤隊負責優化(huà)落地(dì)。期待在不(bù)久的(de)将來(lái),能(néng)夠有(φ‌§yǒu)更多(duō)的(de)主機(jī)廠(​≥<chǎng)重視(shì)起這(zhè)個(gè)問(wèn)題,在中國(guó)有(y♥ ££ǒu)更多(duō)的(de)行(xíng)業(yè)人(rén)才能(néφα♠ng)夠填補這(zhè)一(yī)空(kōng)白(bái)。



05 QNX算(suàn)法移植以及性能(néng)優化(huà)舉例≥ ‌≤


       QNX提供ADAS refeγ'&←rence平台産品,裡(lǐ)面涵蓋了(le)Sensor∏β Framework,networking,open source modules,第三方的♥ ×(de)SDK以及一(yī)些(xiē)參考設計(jì),其中sensor Fσ₽φ₹ramework提供了(le)ADAS的(de)一(y€∏± ī)些(xiē)基本庫。


圖片


  • 算(suàn)法移植

       自(zì)動輔助駕駛以 γφ$開(kāi)源的(de)算(suàn)法居多(duō),由于QNX符合POSIX PSE54★ ε>标準,API兼容基本一(yī)緻,因此各類開(kāi)源算(suà®φ$←n)法可(kě)以很(hěn)方便的(de)移植到(dào)QNX的(de)平台上(shàng)®→₽✘,使用(yòng)QNX的(de)工(gōng)具鏈進行(xíng)編譯并運行(×'xíng),但(dàn)是(shì)雖然API是(shì)一(y∑¥✔ī)緻的(de),但(dàn)由于實時(shí)操作(zuò)系統的(de)σ↔✘™特性,表現(xiàn)的(de)行(xíng)為(wèi)會(huì)有(yǒu)所差異,需β&∑要(yào)對(duì)系統進行(xíng)優化(huà)調整


       QNX有(yǒu)專門(mén)的(deγ≈)team來(lái)根據roadmap以及客戶需求移植‌≠₽♦一(yī)些(xiē)開(kāi)源軟件(jiàn),比如(rú)R"≥OS/ROS2,比如(rú)OpenCV和(hé)vSomeIP,我們也(yě)會(huì)≥₽↕₽負責後期的(de)維護。


  • 分(fēn)享常見(jiàn)的(de)QNX性能(néng)優化(huà)項


1. IPC優化(huà)


      QNX支持絕大₽÷(dà)部分(fēn)主流POSIX系統常₩→Ω見(jiàn)的(de)IPC方式,同時(shí)也(₹§¥☆yě)有(yǒu)其獨特的(de)原生(shēng>₩ ♥)IPC方式,Message-passing。在自(zì)動φ←&輔助駕駛方案設計(jì)中,常有(yǒu)公司會(huì)将UDS、DDS做(zuò∏✘)為(wèi)軟件(jiàn)通(tōng)信總線的®‌×(de)架構方案原封不(bù)動地(dì)從(cóng)L£ '<inux照(zhào)搬到(dào)QNX上(shàng)。從>•§(cóng)功能(néng)上(shàng)看(kàn),這(zhè)樣的(de)← ♠跨平台方案可(kě)以使得(de)代碼重用(yòng)并且功能←<♠λ(néng)沒有(yǒu)區(qū)别。但(dàn)從(cóng)性能(n>↑ <éng)角度考慮,由于QNX獨特內(nèi)核架構,這(zhè)并不(bù)是(shì)高(gā​‍o)效的(de)解決方案。不(bù)同于Linux的(de)宏內(nèi)核架構,QNX為∏€£σ(wèi)了(le)安全性和(hé)實時(shí)性采用(←βyòng)了(le)微(wēi)內(nèi)核架構,絕大(×‌‌dà)部分(fēn)的(de)系統服務,比如(rú)網絡協議(yì)棧,它♠φΩ是(shì)完全運行(xíng)在內(nèi)核之外(wài)以服務(≈∞Resource Manager)的(de)方式運行(x•×σíng)。如(rú)果采用(yòng)UDS(Unix Do&★✔main Socket)這(zhè)用(yòng)基于網絡服務(嚴格意義上(shàng)講,<✘∏UDS并不(bù)需要(yào)經過網絡協議(yì)棧,但(dàn)也(₩₽ yě)是(shì)需要(yào)經過QNX的(de)網絡服務io-₩δ€→pkt支持)的(de)通(tōng)訊方式,那(nà)麽所有(yǒu)的(de ₽)數(shù)據報(bào)都(dōu)需要(yào)經過網絡服務中轉,相(xiàn₩>>g)比直接通(tōng)訊多(duō)了(le)一(yī)次IPC,這(zhè)就(jiùΩ₹ )帶來(lái)了(le)系統資源的(de)δ∏浪費(fèi)。建議(yì)的(de)優化(huà)方案是(sh∑÷¥‍ì)采用(yòng)更高(gāo)效的(de)IPC方式,一(Ω‌yī)般情況下(xià),中小(xiǎo)量®±™的(de)數(shù)據量傳輸建議(yì)使用(y↑σ≈®òng)message-passing,特别大(dà)的♥φ(de)數(shù)量使用(yòng)shared memory方式。另外(wài)←&•§,一(yī)些(xiē)開(kāi)源軟件(jσ€iàn)也(yě)會(huì)大(dà)量使用(yòng)FIFO,PIP ↔E等IPC,盡管QNX支持這(zhè)類使用(yòng),但(dàn)是(shì)我們也(yě↓α)建議(yì)改成更高(gāo)效的(de)↔γ γmessage passing方式,以減少(shǎ±≈​o)單次IPC的(de)開(kāi)銷。


2. 編譯選項優化(huà)


       QNX采用(yòn↑→¥g)GCC的(de)框架,出于安全性的(de)考慮,QNX的(de)編譯器(qì)版本↕¶更新相(xiàng)比沒有(yǒu)開(kāi)源社區(qū)激進,相(xiàng)比會(huì‍®)慢(màn)一(yī)些(xiē)。比如(rú)SDP 7.0采用(y≈♣òng)的(de)是(shì)GCC 5.4.0,SPD 7.1采用(yòng)的(de)GC×∏'C 8.3.0,即将推出的(de)SDP♦γ Moun會(huì)采用(yòng)GCC 11.X。有(yǒu)時(shí)候會(hu←α→✘ì)發現(xiàn),運行(xíng)同樣一(yī)個(gè<÷)算(suàn)法庫,QNX性能(néng)會(huì)比開(kāi)源∞ 低(dī),那(nà)很(hěn)有(yǒu)可(kě)能(néng)是♠&(shì)由于編譯版本或編譯優化(huà)選項差異的(de)原因。© "因為(wèi)在Linux系統上(shàng←λ<)默認的(de)ARMv8的(de)編譯優化(huà)選項是(shì)滿∏÷→級的(de),而QNX默認不(bù)打開(kāi)ARMv8的(de)優化(‍©×€huà)選項,因此程序編譯時(shí)候需要(yào)打開★≈↔☆(kāi)相(xiàng)關編譯選項才能(néng)獲得(de)最佳性能(néng),因為(w​★∑èi)QNX基于安全性考慮某些(xiē)編譯選項α∞在默認編譯的(de)時(shí)候并沒有(yǒu)打開(kāi)會(huì)導ε≥ <緻性能(néng)問(wèn)題。


3. 驅動級别優化(huà)


      如(rú)網絡/存儲設備驅動,根據以往的(de)'®Ω經驗,大(dà)部分(fēn)的(de)性能↕α₩(néng)問(wèn)題的(de)瓶頸在設備驅動這(zhè)層。特别是(shì)新$₹'的(de)硬件(jiàn)、新的(de)驅動,要(yào₩±∏<)注意根據QNX系統服務層做(zuò)好(hǎo)适配,驅動的(de)好(h£ φ↑ǎo)壞,往往是(shì)除硬件(jiàn)本身(shēn)之外(wài)最主要(y  ₹≠ào)的(de)性能(néng)影(yǐng)響因素±↑。我們遇到(dào)非常多(duō)的(de)來(lái)自(zì)驅動層面的÷₩✘"(de)空(kōng)等,忙等,最終導緻系統機(jī)能(néng)的(de)冗餘浪費(fè '​☆i)。


4. 網絡協議(yì)棧優化(huà)


     ✘ε  除了(le)網絡驅動的(de)優化(hβ✔<uà),QNX的(de)網絡協議(yì)棧io-pkt本身(shē♥÷ £n)也(yě)提供了(le)豐富的(de)參數(shù),可(kě)以根據具體(tǐ)使用(yòn​↓g)的(de)應用(yòng)場(chǎng)景來(lái)達到(dào)性能∏♣(néng)的(de)最優化(huà)。另外(wà∑&i),使用(yòng)QNX SDP 7.1及後續版本的(de)用(yòε₹ng)戶,可(kě)以使用(yòng)最新的(de)版本網絡協議(yì)棧io-sock™•$,它對(duì)多(duō)核CPU的(de)利用(yòng)和(hé)大✘♥★(dà)并發小(xiǎo)包數(shù)據的(de)處理(lǐ)能(néng)力有(y<↓☆←ǒu)顯著地(dì)提升。兩個(gè)協議(yì)棧各有(yǒu)千秋,實際上( ♦♦shàng)大(dà)量的(de)案例證明(míng),σ±™用(yòng)戶并沒有(yǒu)達到(dào)io-pkt的(de)性能(néng↓׶)瓶頸,socket buffer 不(bù)足導緻丢包,typed memory poo"♠l分(fēn)配的(de)不(bù)夠導緻收發阻塞等等,這<"₹(zhè)些(xiē)都(dōu)可(kě)以通(tōng)過配置以及API↔γ≤層面的(de)優化(huà)達到(dào)性能(néng)提升。


5. 系統API優化(huà)


      如(rú)memory all♥€ocation,memory copy等,QNλ₹≥ X提供jemalloc根據實際應用(yòng)場(chǎn ✘σ g)景提供額外(wài)內(nèi)存洩漏手段,提供更多(duō)的(♠∞♣αde)功能(néng),jemalloc比default的(de)mallo↓₩c效率更高(gāo),特别是(shì)對(duì)于大(dà)量線程高(gāo)并發調用(y→→↕òng)的(de)場(chǎng)景。


6. 用(yòng)戶接口優化(huà)


      QNX ±↔提供的(de)底層接口,尤其是(shì)一(y'×ī)些(xiē)自(zì)有(yǒu)API,是(shì)有(yǒu)不(bù)'>‌少(shǎo)細微(wēi)差别的(de),比如(rú)sendmsg()和(hé)senπ™§dmmsg(), 用(yòng)戶往往會(huì)比較熟悉前者,用(yòng)于socket的(d​♥φe)發包,但(dàn)是(shì)後者提供了(le)message 隊列來↔β★±(lái)實現(xiàn)不(bù)增加IPC的(de)基礎上(shàng)提高(g∑♦©&āo)了(le)整體(tǐ)的(de)吞吐率。又(yòu)比如(rú)mmap()∏₩α,我們提供了(le)一(yī)些(xiē)QNX獨有(yǒu)的(de)flag來(lái)‍‌應對(duì)不(bù)同的(de)memory mapping 場(c£≥hǎng)景,如(rú)MAP_ANON與MAP_PHYS的(≈÷αde)配合,才代表申請(qǐng)物(wù)理(lǐ)連續memory region $φ而MAP_LAZY 更會(huì)延遲內(nèi)存的(de)申請(qǐng)分(fēn)配。了€¶<(le)解并熟悉每個(gè)接口的(de)參數(shù)配置以及相(xiàng)近(jìn)命≤" 名接口的(de)應用(yòng)場(chǎng)景會(huì)對(duì)開(kāi)發幫₽∞δ‍助很(hěn)大(dà)。我們的(de)在線文(wén)檔有(yǒu)專門(ménα≥)的(de)章(zhāng)節完整并詳細的‌•≥(de)介紹了(le)每一(yī)個(gè)接口的(de)參數(shù)以及相(xiàng)×Ω關使用(yòng)。


7. QNX提供Momentics IDE環境對(duì)算(suàn)₽∞↑♠法進行(xíng)性能(néng)分(fēn)析


      如(rú)memory leak,app¥πlication profile等,同時•↕(shí)提供kernel trace進行(xíng)分(fēn)析,在抓取♠β的(de)時(shí)間(jiān)段中可(kě)以獲得(de) ≈每個(gè)時(shí)間(jiān)點的(de)事(shì)件(jiàn)、中斷響應₽¶¶→,給出優化(huà)建議(yì)。我們也(yě)>↓π÷支持自(zì)定義的(de)kernel Ω★π事(shì)件(jiàn),來(lái)讓用(yòng)戶可(kě)以精确的(de)了(le)©£解代碼片段的(de)運行(xíng)情況。


8. QNX提供了(le)onboard™≈♠ debug也(yě)支持應用(yòng)程序調用(yòng)棧的(de)實時(sβ×hí)保存及相(xiàng)應的(de)GDB,在調$↓ε查一(yī)些(xiē)忙等的(de)現(xiàn) '☆↔場(chǎng)會(huì)有(yǒu)很(hěn)大(dà)的(de)幫助。


      最後總結一(yī)下α↑​(xià),即便作(zuò)為(wèi)ISO2626≈>®™2 ASIL-D安全認證的(de)硬實時("<↓↕shí)性操作(zuò)系統,QNX在系統性能(néng)上(s$ ∏hàng)也(yě)并沒有(yǒu)落後宏內(nèi)核系統。隻要(yào)合理(lǐ)地(dìα'↕<)使用(yòng)和(hé)優化(huà),它的(de)性能(néng)表現(xi•↕♥↓àn)同樣非常優秀,同時(shí)占用(yòng)更低(dī)系統資源。QNX有(yǒu)著(zh✔↔±e)豐富的(de)算(suàn)法移植和(hé)優化(♠•₽•huà)經驗能(néng)給到(dào)用(yòng)戶,同時(shí)QN¶δX提供一(yī)系列的(de)手段和(hé)工(gōng)具去(qù)定≈$×位算(suàn)法性能(néng)的(de)瓶頸。δ★∑   


       以上(shàng)是(shì)一(yī®♠×')些(xiē)經驗分(fēn)享,更多(duō∏λ)關于黑(hēi)莓QNX的(de)使用©≈​₽(yòng)技(jì)巧和(hé)優化(huà)方法将會(huì)陸續更©"≥新,敬請(qǐng)期待。


轉自(zì)汽車(chē)電(diàn)子(zǐ↔£≤)與軟件(jiàn)

北京德智尚車聯科技有限公司版權所有(yǒu) 京ICP證000000号   技(jì)術(shù)支持:網站(zhàn)建設