眾所周知,隨著自動駕駛和智能網聯技術的飛速發展,傳統的汽車開放系統架構CP Autosar已經無法滿足日益復雜的汽車電子系統的功能需求。尤其底層軟件中,針對面向服務架構SOA開發需要使用高性能的處理器,自適應汽車開放系統架構AP Autosar有著不可比擬的優勢。
而應用軟件中,自動駕駛整體架構主要涉及感知、規劃、決策、控制等節點。通過數據或信息的存儲、傳遞及有效及時處理,可以完成感知算法、決策算法、控制算法的整體遞進式集成。數據在采集單元與算法單元之間、每兩個算法節點之間進行傳遞時,都需要經過“數據緩存”和“數據發布”兩個步驟。這一過程就涉及多項自動駕駛底層軟件技術,如內存動態分配、芯片運算能力、芯片實時監控策略。本文將針對這三方面內容進行詳細說明。
1.功能安全攔路虎:內存分配與訪問
在汽車電子系統的軟件開發標準中,強調需要保證軟件架構要素之間的獨立性,相互之間不能存在干擾。而這類干擾軟件要素的可能原因分為三部分:運算、內存、通信。其中,運算能力涉及運算時序和執行策略。這對開發符合功能安全要求的軟件提出了具體的要求,而這一分析過程無論從難度系數還是工作量上都很大,而“內存分配”和“內存訪問”是非常重要的一個原因。
1)內存分配
內存分配主要存在于自動駕駛底層軟件領域。通常的做法是,數據發布單元向底層操作系統申請適當的內存,數據發布之后釋放內存。在申請內存和釋放內存的過程中,主要有如下三種內存分配方式存在:
如上圖所示,“靜態內存分配”和“堆上內存分配”兩種方式中,其相關技術需要在分配內存空間時,都需要搜索連續且空閑的最小內存分配單元,導致存在時間開銷大、內存碎片化嚴重等問題。這對于在靈活且受限的內存資源(SRAM、LDDR、FLash)中,將可能由于頻繁的進行動態內存分配產生的內存碎片,可能影響自動駕駛系統運行性能。
從對于系統功能安全設計上講這類內存分配所帶來的影響將是不能被容忍的。所以在不同的自動駕駛底層軟件系統中,對于當前先進的自動駕駛系統程序不管是應用程序,還是平臺模塊,都是直接調用可移植操作系統接口或編程語言c++的接口進行內存的動態申請/釋放。然而,汽車電子系統的軟件開發標準ISO26262要求盡可能不要動態申請/釋放內存,甚至在某些高等級的自動駕駛安全等級,如ASIL D中考慮到動態申請/釋放內存,頻繁的動態申請/釋放,會產生大量的內存碎片,不但會增加申請結果和時間的不確定性,甚至還會影響性能,通常又是禁止動態申請/釋放內存的,實際上這兩類需求卻又是相互矛盾的。
因此,對于動態內存管理,需要開發許多不同種類的算法。不同的操作系統有不同的實現方式,為了程序的可移植性,一般在開發語言的庫中都提供了統一接口。在系統真正需要內存時,才通過操作系統調用接口API來獲取實際的物理內存。
此外,很多適配底軟開發的供應商當前在進行自適應汽車開放系統架構設計中,還重點傾注更多精力用于內存保護和提高內存利用率。例如,設置可用內存池,在有需求時獲取內存大小需求,從目標交換模塊對應的內存集合中確定目標內存,在有需要時,申請合適大小的目標尺寸,通過以上方法,可以有效減小運行時的資源瓶頸,減少內存碎片化。
2)內存訪問
隨著汽車電子系統復雜性的不斷提高、越來越多的軟件和機電設備的應用,來自電子系統失效和隨機硬件失效的風險日益增加。在功能安全中,相關失效分析是一項非常重要的工作。在ISO26262中要求,如果嵌入式軟件包含不同ASIL等級的軟件組件設計SWC,要么整個軟件工程都需要基于最高安全等級的要求進行開發,這就需要保證擁有更高安全等級的SWC的操作不會受到其他SWC的干擾。
總結起來,SWC相關的內存故障主要包含如下幾方面:
在基于面向服務的架構中需要基于更低安全等級要求開發的SWC,可能會出現錯誤地訪問到更高安全等級SWC的內存區域,產生干擾。為此,SWC需要運行在不同的內存區域,或者不同的內存分區,來防止類似的內存訪問違例。
由于每個可編程核心(總線主機)都有一個內存保護單元MPU(如果沒有MPU,則可以通過DMA守衛來控制總線主設備的訪問),它定義了軟件訪問保護措施,當MPU嵌入很多異構芯中時也同時具有內存保護功能,可以保護當前執行的代碼不被一些“無關聯”的數據所侵害,防止對內存數據的錯誤訪問,并控制外圍模塊的寄存器。這類保護措施主要是限制相關內存地址權限,這類權限限制將確保其程序訪問內存地址的范圍與其無關,組織關鍵數據不被破壞,整個系統更加健壯、安全。
2.自動駕駛異構計算能力提升:
超異構計算芯片集成
高階自動駕駛系統需要在AI單元的選型上采用了并行計算架構的AI芯片進行硬件加速、資源分配、調度、圖像識別、深度學習等。使用多核車規級CPU配置進行任務調度、執行自動駕駛相關的大部分核心算法,同時整合多源數據完成路徑規劃、決策控制等邏輯運算處理。
AI芯片處理功能包含如下:
a)圖像感知:對攝像頭輸出的數字圖像進行包含ISP處理、編解碼、視頻圖像分割、目標識別、跟蹤處理等,同時,生成BEV鳥瞰圖、視覺定位建圖等;
b)激光點云處理:對激光雷達輸出的點云進行聚類、目標識別、跟蹤處理等;
c)融合處理:包括基于圖像識別得前融合,圖像、毫米波/激光雷達、高精定位目標后融合等;
d)軌跡規劃:利用檢測到的圖像目標信息,規劃自車行駛軌跡。
對于諸如如上各種功能的整體融合,當前的架構策略通常是采用多芯片融合技術進行相應的分片分模塊處理。但是,從整體執行效率、執行效果、開發周期上看,這種多芯片異構方式都不見得是最佳選擇。首先,為了集中達到對不同運算能力的需求,通常需要從不同芯片廠家拿貨進行接口及軟件適配,這將是一個比較長期且大量的開發工作。另外,各芯片適配過程中是否能夠完全兼容也并非能夠在開發初期能夠完全解釋清楚。因此,如果能夠搭建一種“超異構計算芯片”融合包含xPU的所有功能子項,那將是智駕系統架構的福音。
這里我們將對這類新型芯片進行詳細介紹。
“超異構處理器”,顧名思義可以認為是由CPU、GPU、各類DSA以及其他各類處理器引擎共同組成的,CPU、GPU和DPU整合重構的一種全系統功能融合的單芯片解決方案。
那么這類超異構處理器到底能對自動駕駛系統底層軟件帶來哪些好處呢?
首先,超異構處理器的融合策略有利于計算資源的充分整合,進一步提升數據計算效率。因為相比于需要三芯片實現異構計算的方案,這種超異構融合系統,將內部功能劃分和交互統一構建,可以顯著降低彼此功能和交互的各種掣肘。
其次,對于自動駕駛系統來說,其計算過程中的大部分場景(80%-90%)都是相對輕量級場景,通過超異構實現的單個芯片計算策略通過Chiplet加持以及多DIE單芯片的方式,實現重量級場景的覆蓋,完全可以cover住幾乎全部的通用場景。因此,在其復雜度和系統規模中均實現較好的反饋。
最后,超異構計算單元實際是一個整合多類芯片的大的芯片集合,同時在電路設計中最大程度的簡化其外圍邊緣件設計,實際是最大程度的減少了BOM表的數量。因此,對于芯片成本可以得到大幅降低。
實際上,當前已有部分芯片供應商已經在這類芯片設計中,實現了類超異構芯片的設計能力。這家供應商就是TI的TDA4 系列芯片。
如下圖所示表示了當前被各家自動駕駛玩家鐘愛的TDA4 VM芯片,實際的內部架構可以看出,其設計上,已經將包含CPU(A72、R5F)、DPU(C7x)、GPU、主MCU等。這種雜糅式集成實際可看成簡單的超異構芯片。里面既能實現高實時性運算的R核(外置接攝像頭I/O連接模塊,直接控制攝像頭的開閉及數據實時傳輸),也有可提升運算量的A核(實現深度學習、卷及計算、MAC計算等大量感知端需要的運算能力)。最后還有為了滿足功能安全要求,設置了雙核MCU實現功能安全島需要的鎖步校驗功能。這樣一個高集成度低成本的芯片怎能不受各玩家的鐘愛呢?
3.自動車輛有效執行的重中之重:實時性設計
在自動駕駛技術中,對功能模塊的實時性要求非常高,尤其是自動駕駛算法的復雜性造成數據分發節點非常多,內存操作的時間開銷更大,影響到在突發事件的場景下(例如,有行人突然闖入)自動駕駛系統對實時響應性的要求,很可能會影響自動駕駛系統的安全。
由于高階自動駕駛系統一般都采用異構芯片進行不同數據信息源信息處理。需要嚴格限定硬件ECU在規定的時間內完成任務,否則就可能導致系統功能的失效。例如對于線控轉向,如果駕駛員發出轉向操作后100ms內車輪沒有執行轉向,則可能導致碰撞事故,嚴重的甚至造成車毀人亡。橫縱向執行域的系統(ESP、EPS)往往屬于這一領域。當然,如果硬件達標而軟件執行期間出現一定的時間偏差,在設定的線性范圍之內也是被允許的,例如有的應用要求系統在90%的情況下能夠確保在規定時間內完成任務即可。車輛信息娛樂域(IVI)或動力域(VCU)的系統大多都屬于這類系統。
那么這種實時性到底指的是哪塊呢?這方面實時性又需要重點關注哪些要素呢?
總體而言,影響系統實時性的因素從軟件架構上可以分為通信、調度和代碼三個層面。從系統架構上,實時性實際又需要從整個傳感端、控制端到執行端進行區分。
1、系統架構實時性解讀
1)傳感端:
對于集中式方案來說,傳感端的實時性處理有兩種情況需要區分。其一,如果傳感器能夠作為單獨小的ECU,那么整個環境數據采集工作則可以認為是由傳感自身自行控制和執行的。如攝像頭曝光時間、雷達微波發生頻率、激光掃描頻率等。對于輸入域控的數據而言,域控只需要給出傳感器對應的同步時間戳即可。其二,如果傳感器不存在單獨控制的ECU端,那么整個傳感采集過程都將受制于域控制器。這個過程可以看成域控制器需要通過一定的控制線(如攝像頭的IIC線)對傳感器的采集速率、采集頻率、控制電壓、采集輸入時間點都要進行控制。那么整個實時性控制將完全交由域控來進行控制。
當前很多情況下,域控對傳感數據的控制只是部分實時性控制。如只對攝像頭數據采集的實時性進行直接控制,如控制曝光、傳輸速率等。而對于毫米波、激光雷達等則是分布式方式,其實時性控制只是簡單地全局時間注入及打時間戳等方式。
另外,如果是域控底層驅動傳感器I/O口的方式,還包括域控能夠實時的將傳感器原始數據進行實時性處理,如底層ISP/白平衡、中間層AI深度學習感知聚類、頂層與其他傳感器數據的后融合等。
2)控制端:
對于控制端來講,其實時性則是相對復雜些,他包括底層軟件驅動的實時性,中間件資源整合調用的實時性以及頂層應用軟件的實時性。實際應用中,不同系統對于實時性的滿足程度并不相同。比如AEB這一對系統處理實時性要求極高的功能就需要系統能夠在異常場景中能夠將數據及時的采集到,并在內部進行有效處理。這一處理過程實際是要求系統是一種處理實時性極高的系統。
以實時性滿足的不同需求可以分為實時性計算任務和實時性監控任務。實時性計算任務主要是指規定時間內完成的不同敏感性任務,如“硬實時系統”和“軟實時系統”。實時監控任務則是針對運行的軟硬實時系統實施包含運行效率、運行安全度、執行結果反饋等方面的信息監控。以AUTOSAR標準為例,CP通常用于硬實時系統中,而AP多用于對實時性要求較低、但又比用于車機的Android實時性要求高的系統。
總之,自動駕駛車內的各種系統對實時性有不同的要求。實時性是一個相對的概念,針對不同功能安全、信息安全,需要設計不同等級的實時運算和監控系統,以滿足系統的功能要求,綜合平衡系統升級的靈活性、成本等不同因素,設計滿足需求的實時性系統。
3)執行端:
執行端的實時性很容易理解,即是域控發送的執行信息能夠得到執行器的及時處理和反饋。這塊在當前也是簡單地通過對執行器的接口需求進行規范。比如縱向執行加速度會規范加速響應延遲、加速穩態時間、穩態波動最大最小值等。橫向執行轉向角會規范轉角響應延遲、最大最小響應轉角、最大最小手力矩等。
從整車功能域角度出發,自動駕駛是收集外部傳感器數據量最大的模塊,為了持續探測到車身四周各種復雜環境信息,需要毫米波、攝像頭和激光雷達配合以達到360度無死角感知。并且為了保證安全,所有數據都需要接近實時的速度處理,為了保證大量數據的實時處理,較低的數據延遲需要由高性能的計算單元和高帶寬的網絡通信,數據可輕易在不同內核中共享。
2、軟件架構實時性解讀
這里主要是指運行于硬件SOC、MCU上的軟件架構平臺。從底之上主要包括底層驅動軟件實時性(I/O代碼驅動層面),涉及I/O函數層級、基本代碼塊、機器指令碼、操作狀態碼等。中間層軟件實時性(中間件調度)包括SOC層級、CPU層級、GPU層級、MCU層級的系統管理、算法接口、AI處理等。頂層通信層面則是針對環域控的整個車內外網絡、云端服務等。
除開如上運算單元外,配置軟件實時性監控、檢測和刪除錯誤的互連事務也是必不可少的環節。如總線監控器、內存訪問結果監控、虛擬控制臺實時性監測、系統CPU入侵檢測等。
5.總結
本文對自動駕駛系統中的內存分配、多異構芯片、實時性進行全面較準確地分析,這將有助于大家更準確地理解車輛控制系統中的各項性能指標進行完整的解讀,并能夠對肯恩存在問題進行系統、全面的分析。其目的是使得開發出的智能駕駛產品功能更可靠,性能表現更優,真正降低交通事故的概率和產生的危害。
審核編輯 :李倩
-
汽車電子
+關注
關注
3027文章
7992瀏覽量
167437 -
編程語言
+關注
關注
10文章
1949瀏覽量
34850 -
自動駕駛
+關注
關注
784文章
13897瀏覽量
166698
原文標題:自動駕駛系統設計的那些底層軟件開發中的重點解讀
文章出處:【微信號:eng2mot,微信公眾號:汽車ECU開發】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論