汽車產(chǎn)業(yè)利用可重配置硬件技術(shù),可靈活地綜合車載功能。
當(dāng)今的汽車制造商正在把越來越多的高級(jí)功能添加到汽車電子控制單元 (ECU)中,以改善駕駛體驗(yàn),增強(qiáng)安全性,當(dāng)然還期望超過同類競(jìng)爭產(chǎn)品的銷量。在這種情況下,汽車開放系統(tǒng)架構(gòu) (AUTOSAR) 計(jì)劃和功能安全國際標(biāo)準(zhǔn) ISO26262 正在快速成為汽車 ECU 設(shè)計(jì)的技術(shù)和架構(gòu)基礎(chǔ)。
為了滿足新車型日益提高的功能需求,汽車電子產(chǎn)品的密度不斷增大,FPGA 廠商也正在不斷推出更大型的器件。這些器件能夠集成所有的應(yīng)用,而且與前代器件相比,功耗更低,價(jià)格更具競(jìng)爭力。這種趨勢(shì)意味著可重配置計(jì)算技術(shù)在汽車產(chǎn)業(yè)將會(huì)得到進(jìn)一步推廣和應(yīng)用。
我們推出了一種具有開創(chuàng)性的方法,即使用可編程 FPGA 器件而非基于 MCU 的平臺(tái)作為 ECU 的基礎(chǔ),設(shè)計(jì)出一款能夠同時(shí)滿足 AUTOSAR 和 ISO 26262 標(biāo)準(zhǔn)的汽車 ECU。我們的設(shè)計(jì)方法對(duì)可重配置硬件的關(guān)鍵特性,比如并行性、可定制性、靈活性、冗余性和多功能性進(jìn)行了充分的探索。在概念設(shè)計(jì)完成后,我們希望在原型中實(shí)現(xiàn)設(shè)計(jì)。為此,賽靈思 Zynq?-7000 可擴(kuò)展處理平臺(tái)成為了理想選擇。該款 FPGA平臺(tái)將 ARM? 雙核 Cortex?-A9 MPCore 硬處理器和具備動(dòng)態(tài)部分可重配置功能的 28 nm 賽靈思 7 系列可編程邏輯器件完美結(jié)合在一起,不但可充分滿足所需要求,而且還配備有 CAN 和以太網(wǎng)等車載網(wǎng)絡(luò)常用的片上通信控制器。
新興應(yīng)用
目前汽車計(jì)算能力借助通過通信網(wǎng)絡(luò)互連的ECU來分配。在未來幾年內(nèi),由于機(jī)動(dòng)車輛中新應(yīng)用的興起,這樣的計(jì)算能力有望進(jìn)一步提高。這些新應(yīng)用包括安全和駕駛員輔助功能、車輛間通信功能、舒適性和控制功能、車載娛樂功能以及為數(shù)眾多的混合動(dòng)力電動(dòng)技術(shù)。毫無疑義,車輛電子設(shè)備的數(shù)量預(yù)計(jì)還會(huì)增加。根據(jù)分析人員的預(yù)測(cè),汽車應(yīng)用半導(dǎo)體市場(chǎng)的規(guī)模將在未來五年內(nèi)以 8% 的年均復(fù)合增長率 (CAGR) 增長。其中增長最快的細(xì)分市場(chǎng)之一涉及到微控制器 (MCU) 和可編程邏輯器件,比如現(xiàn)場(chǎng)可編程門陣列 (FPGA)。
在車載功能的數(shù)量和先進(jìn)性與日俱增的同時(shí),設(shè)計(jì)和管理這些系統(tǒng)變得日趨復(fù)雜,汽車制造商認(rèn)為有必要采取有效方式來解決這一難題。其結(jié)果就是當(dāng)今 AUTOSAR 和 ISO 26262 兩大標(biāo)準(zhǔn)都在影響著實(shí)際汽車 ECU 軟硬件系統(tǒng)的架構(gòu)、設(shè)計(jì)和部署方式(見側(cè)邊欄)。
2003 年由多家汽車制造商共同制定的 AUTOSAR 標(biāo)準(zhǔn)旨在為分布于車輛中的 ECU 定義標(biāo)準(zhǔn)的系統(tǒng)軟件架構(gòu)。而 ISO 26262 標(biāo)準(zhǔn)的目的則以功能安全性為中心,實(shí)質(zhì)上是以避免或檢測(cè)并處理故障為目的,從而減輕故障影響并防止出現(xiàn)對(duì)任何既有的系統(tǒng)安全目標(biāo)的違反行為。隨著全新的安全關(guān)鍵功能(比如駕駛員輔助或動(dòng)態(tài)控制)的推出,功能安全性已經(jīng)成為汽車開發(fā)中的關(guān)鍵問題之一。ISO 26262 標(biāo)準(zhǔn)于 2011 年批準(zhǔn)生效,可為軟硬件的安全開發(fā)提供支持。
因此,整個(gè)ECU 的設(shè)計(jì)和開發(fā)流程由需要系統(tǒng)性進(jìn)程的標(biāo)準(zhǔn)進(jìn)行管理。我們的工作就是設(shè)計(jì)一款高性價(jià)比嵌入式計(jì)算平臺(tái),采用可重配置硬件技術(shù)實(shí)現(xiàn)優(yōu)化的系統(tǒng)架構(gòu)。
系統(tǒng)架構(gòu)
AUTOSAR 和 ISO 26262 標(biāo)準(zhǔn)主要從軟件開發(fā)的角度著眼,面向的是基于微控制器單元的計(jì)算平臺(tái)。但是,硬件/軟件聯(lián)合設(shè)計(jì)和可重配置計(jì)算技術(shù)的應(yīng)用可為這個(gè)領(lǐng)域帶來眾多優(yōu)勢(shì)。雖然標(biāo)準(zhǔn)的 MCU 往往是汽車 ECU 硬件平臺(tái)的最佳選擇,但隨著新型 FPGA成本的不斷降低,加上部分 FPGA 產(chǎn)品內(nèi)部集成有硬核處理器,使得 FPGA 器件也成為這個(gè)市場(chǎng)中值得廣泛應(yīng)用的理想解決方案。此外,汽車中不斷集成新的嵌入式功能的趨勢(shì)也提出了對(duì)并行計(jì)算架構(gòu)的需求。這在當(dāng)今的車載信息娛樂領(lǐng)域尤為明顯,在這種領(lǐng)域中高速數(shù)字信號(hào)處理正在敞開大門迎接 FPGA 技術(shù)。像賽靈思這樣的可編程邏輯供應(yīng)商和像 MathWorks 這樣的 EDA 工具廠商已對(duì)這個(gè)領(lǐng)域表現(xiàn)出明顯的興趣。
為了在汽車應(yīng)用中發(fā)揮可重配置硬件的全部優(yōu)勢(shì),我們將以關(guān)于部署最終用戶功能的汽車計(jì)算網(wǎng)絡(luò)中最為重要的 ECU 之一——“車身控制器模塊”為重點(diǎn),通過使用案例展現(xiàn)這種技術(shù)的潛力。該ECU也稱為“車身域控制器”,負(fù)責(zé)綜合和控制車輛中主要的電子車身功能,比如擋風(fēng)玻璃雨刷/噴水系統(tǒng)、車燈、搖窗器、引擎點(diǎn)火/熄火、車外后視鏡和中控鎖。我們的目標(biāo)是在FPGA平臺(tái)上設(shè)計(jì)出一款配備有安全關(guān)鍵功能且符合 AUTOSAR 的 ECU 系統(tǒng)。
實(shí)際情景
如果汽車制造商要想經(jīng)濟(jì)高效地管理日益復(fù)雜的車輛功能,經(jīng) AUTOSAR 提倡的 ECU 系統(tǒng)架構(gòu)的標(biāo)準(zhǔn)化則是必由之路。它能夠?qū)崿F(xiàn)分布在 ECU 中的各項(xiàng)功能的高度集成和軟件組件的重復(fù)使用。AUTOSAR 的主要目的是定義一個(gè)統(tǒng)一的 ECU 架構(gòu),讓硬件與軟件分離。這樣 AUTOSAR 通過定義硬件無關(guān)的接口,可提高軟件的重復(fù)使用。換句話說,如果按照 AUTOSAR 標(biāo)準(zhǔn)編寫的軟件組件,只要正確集成到符合 AUTOSAR 標(biāo)準(zhǔn)的運(yùn)行環(huán)境中,就能夠在任何廠商的微控制器上運(yùn)行。
這項(xiàng)功能給汽車制造商帶來了更高的靈活性。由于 AUTOSAR 標(biāo)準(zhǔn)內(nèi)在的即插即用特性,汽車制造商可以在整個(gè)汽車平臺(tái)上以透明的方式更換不同供應(yīng)商開發(fā)的相同軟件模塊的各個(gè)版本,且不會(huì)給汽車中其余功能的發(fā)揮造成負(fù)面效果。最終硬件和軟件實(shí)現(xiàn)彼此高度獨(dú)立。這種分離是通過標(biāo)準(zhǔn)軟件的 API 將抽象層互聯(lián)實(shí)現(xiàn)的。圖 1 是 AUTOSAR 定義的功能層的分解圖。
圖1 從 MCU 到應(yīng)用層的 AUTOSAR 分層模型
底部以黑色表示的是硬件層或物理層,由 MCU 自身(即 CPU 和與其相連的部分標(biāo)準(zhǔn)外設(shè))構(gòu)成。微控制器之上是基礎(chǔ)軟件(BSW),分為三層:粉色的微控制器抽象層 (MCAL)、綠色的 ECU 抽象層 (ECUAL) 和復(fù)雜驅(qū)動(dòng)程序、紫色的服務(wù)層(SRV)。這三層經(jīng)組織形成了多個(gè)列或協(xié)議棧(存儲(chǔ)器、通信、輸入/輸出等)。
緊貼硬件組件的是微控制器抽象層。正如其名所示,該層是 MCU 的抽象。該層的目的是提供一個(gè)硬件獨(dú)立的 API,負(fù)責(zé)處理微控制器中的硬件外設(shè)。微控制器抽象層的上一層是 ECU 抽象層,負(fù)責(zé)抽象 ECU 開發(fā)板上的其他智能器件,一般直接與MCU接觸(例如,系統(tǒng)電壓調(diào)節(jié)器、智能交換控制器、可配置通信收發(fā)器等)。接下來的第三層是服務(wù)層。該層基本具有硬件獨(dú)立性,其作用是處理所需的不同類型的背景服務(wù)。例如網(wǎng)路服務(wù),系統(tǒng)看門狗的 NVRAM 處理或管理。通過這三層,AUTOSAR 定義了一套基礎(chǔ)軟件功能。這套軟件功能在特定的硬件平臺(tái)下支持著汽車 ECU 各高級(jí)抽象層的所有功能。
第四層是運(yùn)行環(huán)境 (RTE),為應(yīng)用軟件提供通信服務(wù)。它由可從上面的 BSW 層和應(yīng)用層 (APP)共同訪問的一套信號(hào)(發(fā)送器/接收器端口)和服務(wù)(客戶端和服務(wù)器端口)構(gòu)成。該 RTE 從基礎(chǔ)軟件中抽象出應(yīng)用,明確地勾勒出將通用的可交換軟件代碼 (APP))與特定的硬件相關(guān)代碼 (BSW) 分離的軟件協(xié)議棧架構(gòu)。換句話說,RTE可將軟件應(yīng)用與硬件平臺(tái)分離。因此運(yùn)行在 RTE 上的所有軟件模塊都具有平臺(tái)無關(guān)性。
在 RTE 之上,通過應(yīng)用層,軟件架構(gòu)方式從分層變?yōu)橐越M件為基礎(chǔ)。功能主要封裝在軟件組件 (SWC) 中。因此,完成 AUTOSAR 軟件組件接口的標(biāo)準(zhǔn)化是支持各項(xiàng)功能跨不同車輛平臺(tái)的ECU實(shí)現(xiàn)可擴(kuò)展性和可移植性的中心環(huán)節(jié)。除復(fù)雜驅(qū)動(dòng)程序外,AUTOSAR 標(biāo)準(zhǔn)明確地規(guī)定了這些組件的 API 及特性。SWC 僅通過運(yùn)行環(huán)境與其他模塊(ECU 間或內(nèi)部)通信。
隨著 ECU 不斷集成越來越多的功能,F(xiàn)PGA 器件成為了單核或多核MCU 的明智替代。通過從總體上把握 AUTOSAR 的不同層次,可以預(yù)見設(shè)計(jì)人員將這種架構(gòu)部署在可編程邏輯中所能帶來的優(yōu)勢(shì)。下文將更深入地介紹我們的設(shè)計(jì)如何實(shí)現(xiàn)基于定制靜態(tài)硬件(基于閃存或SRAM 的 FPGA 技術(shù))的解決方案,然后將這種方法延伸為為一種運(yùn)行時(shí)可重配置的硬件實(shí)現(xiàn)方案(基于 SRAM 的部分可重配置 FPGA)。
基于 FPGA 靜態(tài)硬件的 ECU 設(shè)計(jì)
AUTOSAR 架構(gòu)非常適合由 CPU、存儲(chǔ)器和可編程邏輯組成的嵌入式系統(tǒng)。ECU 平臺(tái)需要一個(gè) CPU 或主機(jī)處理器來管理應(yīng)用并處理分布在應(yīng)用層的軟件組件中的不同功能。同時(shí),MCU 層和部分基礎(chǔ)軟件層可以在可編程邏輯結(jié)構(gòu)中的硬件中綜合。因此,除了能夠?qū)崿F(xiàn)與 CPU 相連的標(biāo)準(zhǔn)外設(shè),其它定制外設(shè)和協(xié)處理器也能夠在硬件中并存,并在軟件中完全或部分地加以管理。
另外從功能安全的角度來看,專用協(xié)處理器或內(nèi)核處理器也非常適用,因?yàn)橛盟鼈儗?shí)現(xiàn)功能可讓硬件從源頭避免干擾,即便要求冗余性,也能給系統(tǒng)設(shè)計(jì)帶來高靈活性。另外,居于中間的 RTE 層可以在分布于 FPGA 中的 RAM 模塊中,或者在嵌入在器件邏輯單元中的觸發(fā)器中以及外部存儲(chǔ)器中綜合。而且,RTE 信號(hào)接口經(jīng)簡單設(shè)計(jì)就能夠同時(shí)進(jìn)行讀寫操作(通過單端口存儲(chǔ)器)或限制架構(gòu)僅進(jìn)行讀操作或者寫操作(通過配有兩個(gè)獨(dú)立讀寫端口的單個(gè)雙端口存儲(chǔ)器),以防范干擾,比如 AUTOSAR 所定義的彼此對(duì)應(yīng)的發(fā)送器和接收器軟件端口。
圖2 將 AUTOSAR ECU 架構(gòu)移植到 FPGA 平臺(tái)上
建議將基于 MCU 的 AUTOSAR ECU 架構(gòu)移植到可擴(kuò)展處理平臺(tái) (EPP) 或者 FPGA 器件上,并在各層中確保清晰的系統(tǒng)分區(qū),如圖 2 所示。位于 RTE 層以下的有操作系統(tǒng) (OS)、存儲(chǔ)器協(xié)議棧、通信協(xié)議棧、I/O 協(xié)議棧等。位于 RTE 層以上的是軟件組件,它們用于實(shí)現(xiàn)應(yīng)用并通過 AUTOSAR 接口與 RTE 進(jìn)行通信。
由于 AUTOSAR 架構(gòu)內(nèi)在的復(fù)雜性,需要功能強(qiáng)大的嵌入式計(jì)算平臺(tái)才能進(jìn)行部署。如今,典型的 ECU 設(shè)計(jì)基于運(yùn)行在 MCU 平臺(tái)上的 32 位單核處理器。但是單核越來越難以提供所需的全部計(jì)算能力。而使用多核 CPU 需要通過多處理器總線和仲裁機(jī)制共享程序/數(shù)據(jù)存儲(chǔ)器,往往會(huì)導(dǎo)致高度復(fù)雜的解決方案,造成性能劣化。
作為這種方案的替代,我們提出了一種基于可編程邏輯的設(shè)計(jì)。這種設(shè)計(jì)只采用一個(gè)單核處理器來發(fā)揮主機(jī) CPU 的作用,但配有更智能的外設(shè)、協(xié)處理器乃至從處理器。所有這些計(jì)算單元都可以在 FPGA 架構(gòu)中例化為新的軟核處理器,比如賽靈思 PicoBlazeTM 和 MicroBlazeTM,從 FPGA 的專用 RAM 模塊運(yùn)行自己的代碼(各個(gè)軟核處理器均分別配有專用程序存儲(chǔ)器),此外,也可例化為定制的硬件加速器。兩種方式的拓?fù)浼軜?gòu)均由一個(gè)主機(jī) CPU 和分擔(dān) 部分CPU 任務(wù)的智能外設(shè)構(gòu)成,從而可降低系統(tǒng)復(fù)雜性。這樣,主機(jī) CPU 負(fù)責(zé)管理軟件中的整個(gè)應(yīng)用層,而定制外設(shè)則負(fù)責(zé)管理 BSW 層,這兩者以并行的方式彼此獨(dú)立地自動(dòng)運(yùn)行。此外,這種外設(shè)設(shè)計(jì)的方法的優(yōu)點(diǎn)還在于能夠讓主機(jī) CPU 的軟件執(zhí)行更加線性化,即外設(shè)不會(huì)通過中斷服務(wù)程序產(chǎn)生過多的請(qǐng)求 CPU 關(guān)注的中斷。圖 3 顯示了這種系統(tǒng)的方框圖及其對(duì)應(yīng)為 FPGA 器件中綜合的功能單元的組件細(xì)分情況。
圖3 在 FPGA 中部署的汽車 ECU 方框圖
FPGA 方法能夠?qū)崿F(xiàn)與多處理器平臺(tái)相媲美的系統(tǒng)性能,且和單核處理器一樣簡單易用,這主要?dú)w功于采用了可與主機(jī)處理器并行處理的功能強(qiáng)大的、自動(dòng)化定制協(xié)處理器。
這種方法能夠?qū)崿F(xiàn)與多處理器平臺(tái)相媲美的系統(tǒng)性能,而且就軟件開發(fā)和維護(hù)而言,和單核處理器一樣簡單易行。通過使用專用硬件構(gòu)建可與主機(jī)處理器并行處理的功能更強(qiáng)大的自動(dòng)化定制協(xié)處理器,就可實(shí)現(xiàn)這種最佳平衡。
從概念上來說,可以通過將這些系統(tǒng)架構(gòu)用 RTE 接口劃分為頂層和底層兩個(gè)彼此獨(dú)立的主要層次來要簡化設(shè)計(jì)。頂層相當(dāng)于 AUTOSAR 的應(yīng)用層,由負(fù)責(zé)管理車輛中最終用戶功能的軟件組件構(gòu)成。而底層則由硬件和基礎(chǔ)軟件乃至 RTE 鏈路構(gòu)成。應(yīng)用層從數(shù)值上來說,可代表約 90% 的車載高級(jí)功能,而且所有 RTE 以上的源代碼都可重復(fù)利用。
同時(shí),底層包含能夠賦予頂層靈活性和多用性的全部功能。這即是說,底層可完成特定硬件平臺(tái)上所有可重用功能的定制化。這樣,頂層從本質(zhì)上說是通過以有限狀態(tài)機(jī) (FSM) 形態(tài)實(shí)現(xiàn)的算法來實(shí)現(xiàn)對(duì)某些車輛負(fù)載、傳感器和制動(dòng)器的控制的一套軟件功能。這些算法由 CPU 循環(huán)執(zhí)行,并在操作系統(tǒng)控制的軟件任務(wù)中調(diào)度。
底層還負(fù)責(zé)實(shí)現(xiàn) CPU 連接的所有標(biāo)準(zhǔn)外設(shè)的驅(qū)動(dòng)程序,例如 A/D 轉(zhuǎn)換器、PWM 控制器、定時(shí)器或者存儲(chǔ)器控制器,從而讓頂層的抽象具備可行性。底層負(fù)責(zé)管理那些需要得到實(shí)時(shí)響應(yīng)的事件。在這方面可編程邏輯能夠起到一定的作用。其構(gòu)想為:讓主機(jī) CPU 將應(yīng)用當(dāng)作一個(gè)簡單的免受通常硬件造成的外部事件影響的軟件功能序列來處理,但要定期讀或?qū)?RTE 信號(hào),讓 FSM 進(jìn)行相應(yīng)的調(diào)整。底層對(duì)硬件事件進(jìn)行隱藏與管理,然后在 RTE 中對(duì)其進(jìn)行預(yù)處理并更新特定信號(hào),或作為結(jié)果,根據(jù)自身具體任務(wù)安排實(shí)時(shí)地執(zhí)行特定的行動(dòng)。
將定制硬件控制器連接至系統(tǒng) CPU 可以最大限度地降低對(duì)共享資源的需求,只要這些控制器能夠自動(dòng)運(yùn)行。從操作系統(tǒng)的角度來看,這樣做有助于降低系統(tǒng)的復(fù)雜性(避免仲裁、時(shí)延、重試機(jī)制等)。
采用專用硬件的另一項(xiàng)優(yōu)勢(shì)在于可以更簡便地實(shí)現(xiàn)一般在軟件中通過多線程才能實(shí)現(xiàn)的某些功能,因?yàn)橛布^軟件內(nèi)在更具并行性。另外,這種靈活的硬件能夠采用并行和流水線硬件設(shè)計(jì),將算法計(jì)算強(qiáng)度高的部分進(jìn)行硬連接,而不是采用馮·諾伊曼 (Von Neumann) 計(jì)算機(jī)所采用的序列軟件方法,從而減少執(zhí)行時(shí)間。
用戶可以將在 MCU 和 BSW 層中綜合的外設(shè)和硬件協(xié)處理器設(shè)置成高智能化水平,以釋放 CPU 時(shí)間,從而簡化車載 ECU 的軟件。
隨著 ECU 平臺(tái)日趨復(fù)雜化,系統(tǒng)所需的 I/O 線路數(shù)也在不斷增加。在這方面 FPGA 較微控制器有明顯的優(yōu)勢(shì),因?yàn)?FPGA一般能夠提供多得多的用戶引腳數(shù)。這一點(diǎn)一般與基于 MCU 的 ECU 有關(guān),因?yàn)檫@種 ECU 需要采用執(zhí)行并-串?dāng)?shù)據(jù)轉(zhuǎn)換的外部芯片(比如數(shù)字移位寄存器或模擬多路復(fù)用器)來擴(kuò)展 ECU 的輸入和輸出。采用 FPGA 可以繞開這些外部組件,進(jìn)而縮減材料清單成本以及電子開發(fā)板的 PCB尺寸。
先進(jìn)的 FPGA 器件已經(jīng)集成有模數(shù)轉(zhuǎn)換器。這個(gè)特性對(duì)汽車設(shè)計(jì)意義重大,因?yàn)樵S多 ECU使用模擬信號(hào)(比如電池電壓)來實(shí)現(xiàn)所需的部分功能。在可編程邏輯器件中集成模數(shù)轉(zhuǎn)換器為 FPGA 開辟了新的應(yīng)用領(lǐng)域。
與 MCU 類似,F(xiàn)PGA 也提供遠(yuǎn)程更新功能。但在這里需要提醒的是,下載到 FPGA 中的位流不僅涉及到軟件代碼,而且與硬件電路也息息相關(guān)。這意味著就算產(chǎn)品已經(jīng)進(jìn)入量產(chǎn)階段,仍然可以通過系統(tǒng)更新或升級(jí)來修改硬件設(shè)計(jì)。汽車產(chǎn)業(yè)非常欣賞這種靈活性,因?yàn)樗軌蛟诋a(chǎn)品發(fā)布后修改缺陷(軟/硬件均可)。
在任何嵌入有符合 ISO 26262安全相關(guān)要求的功能的 ECU 中,涉及該實(shí)現(xiàn)方案的軟硬件必須根據(jù)其分類滿足一定程度的保護(hù)要求。從軟件的角度講,它必須體現(xiàn)出抗干擾能力,即運(yùn)行在 ECU 中的非安全相關(guān)代碼一定不能危及同一 ECU 中安全相關(guān)類的代碼的運(yùn)行。這種隔離是保證安全相關(guān)功能與非安全相關(guān)功能在同一處理器上正確并行運(yùn)行所必須的。一般來說,在可編程邏輯中管理這些指標(biāo)比在 MCU 中具有更大的靈活性。
對(duì)于面向功能安全的存儲(chǔ)器保護(hù)策略,有必要確保只能授權(quán)的安全軟件組件有權(quán)對(duì)特定安全相關(guān)信號(hào)進(jìn)行寫入存取。在 MCU 器件環(huán)境中,存儲(chǔ)器分區(qū)提供了一種故障約束機(jī)制,能夠?qū)④浖?yīng)用彼此分離,避免其間發(fā)生數(shù)據(jù)錯(cuò)誤。可編程邏輯很有可能實(shí)現(xiàn)一種更有效的自我保護(hù)機(jī)制??删幊踢壿嬁梢酝ㄟ^專用的單個(gè)雙端口存儲(chǔ)器來管理與安全信號(hào)相關(guān)的 RTE 緩存,這樣數(shù)據(jù)從寫端口寫入,從讀端口讀取。采用這種方法,可以采用專用的硬件控制器給寫入或讀取這些來自軟件側(cè)的信號(hào)設(shè)置不同的約束條件。這種方法也可以采用寄存器來實(shí)現(xiàn)。
能夠在 ECU 系統(tǒng)中導(dǎo)入定制硬件解決方案是 FPGA 的一大優(yōu)勢(shì),特別是對(duì)安全相關(guān)的功能而言。具體而言,對(duì) I/O 引腳和 GPIO 控制器,在安全功能中涉及的引腳布局可以組合成定制的 I/O 端口,僅供 ECU 中的安全組件訪問,與器件的其余引腳分離。這是將系統(tǒng)的安全相關(guān)引腳與非安全相關(guān)引腳分開的理想辦法,從設(shè)計(jì)上避免了干擾的發(fā)生。任何對(duì)非安全引腳的訪問都不會(huì)破壞安全引腳的狀態(tài),因?yàn)榘踩_只受安全相關(guān)代碼的管理。這種構(gòu)思的具體描述見圖 4。
圖4 軟/硬件聯(lián)合設(shè)計(jì)的安全架構(gòu),可將安全相關(guān)端口和非安全相關(guān)端口隔離開來,以保證無干擾
另外,還能夠根據(jù)應(yīng)用或處理該應(yīng)用的軟件組件的需求定制每個(gè) GPIO 端口的大小,從而避免將 GPIO 端口轉(zhuǎn)換為不同應(yīng)用共享的物理資源,如MCU端口的情況。用這種方法,F(xiàn)PGA中每一個(gè)由不同軟件組件(比如車窗升降器、雨刷、外后視鏡等)管理的應(yīng)用都能夠?qū)⒆约禾囟ǖ亩丝谟成涞较到y(tǒng)存儲(chǔ)映射中特定的寄存器。這在 MCU 平臺(tái)上無法做到,因?yàn)?MCU的端口有固定尺寸(一般為8、16 或 32 位寬)且按字長尋址,而非按位尋址。因此在采用 MCU 的情況下,這種控制寄存器在程序執(zhí)行的時(shí)候變成了有多個(gè) SWC 訪問的共享資源。
我們可以把用于 GPIO 控制器的策略擴(kuò)展用于其它標(biāo)準(zhǔn)外設(shè)。這樣 AUTOSAR 借助 SWC 概念在頂層提倡的功能分區(qū)和隔離思路也可以在可編程硬件的幫助下推廣運(yùn)用到較低層的資源上。這種技術(shù)如果采用基于標(biāo)準(zhǔn) MCU 器件的靜態(tài)硬件解決方案是無法實(shí)現(xiàn)的。
我們上文介紹的用于 MCU 標(biāo)準(zhǔn)外設(shè)的隔離策略也可以用于安全功能的各個(gè)通道或數(shù)據(jù)路徑。這一特性尤其適用于按 ISO 26262 標(biāo)準(zhǔn)的 ASIL 分級(jí)組織的精細(xì)分類安全目標(biāo)(見側(cè)邊欄)。此項(xiàng)功能可用于將各個(gè)通道或者數(shù)據(jù)路徑分解成較低 ASIL 級(jí)別的冗余分區(qū),這樣每一個(gè)通道或路徑都以冗余方式運(yùn)行,后續(xù)根據(jù)各自的新級(jí)別予以實(shí)現(xiàn)。這種基于冗余的安全策略是選擇可編程邏輯的又一理由,因?yàn)榭删幊踢壿嬆軌蛟谕黄骷卸啻卫鄠€(gè)相同、獨(dú)立的處理引擎。另外,滿足某個(gè) ASIL 級(jí)別的要求用架構(gòu)方法(硬件)往往比用抽象軟件能夠更輕松明晰地證明,特別是像抗干擾這樣的功能。C 編程語言中的棧溢出或是數(shù)據(jù)指針處理不當(dāng)可能會(huì)給系統(tǒng)帶來出乎意料的安全性問題。
這種基于冗余的安全策略是選擇可編程邏輯的又一理由,因?yàn)榭删幊踢壿嬆軌蛟谕黄骷卸啻卫鄠€(gè)相同、獨(dú)立的處理引擎。
可編程邏輯的靈活性及其對(duì)功能安全的適用性還帶來另一項(xiàng)設(shè)計(jì)優(yōu)勢(shì),就是可以采用三模冗
余 (TMR) 策略。這是航空航天應(yīng)用中用于緩解單粒子翻轉(zhuǎn) (SEU) 風(fēng)險(xiǎn)的常見方法。這種緩解方案由三個(gè)相同邏輯電路構(gòu)成,并行執(zhí)行相同的任務(wù),對(duì)應(yīng)的輸出由一個(gè)多數(shù)表決電路進(jìn)行比較。采用硬件實(shí)現(xiàn)這種策略效率很高。
另外,在這個(gè)高度關(guān)注成本和功耗的市場(chǎng)上,賽靈思 Zynq-7000 EPP等一些可編程邏輯器件能夠支持多項(xiàng)降低系統(tǒng)總體功耗的功能,其中的部分功能是從 MCU 繼承而來。像處理系統(tǒng)的僅加電模式、休眠模式和外設(shè)獨(dú)立時(shí)鐘域這樣的功能能夠大幅降低器件待機(jī)期間的動(dòng)態(tài)功耗。
某些可編程邏輯器件在結(jié)構(gòu)中配備有硬核處理器,便于設(shè)計(jì)人員第一步先用軟件開發(fā)整個(gè)系統(tǒng)功能,就像他們尋常在 MCU 平臺(tái)上所做的一樣,隨后逐步地在設(shè)計(jì)中增加硬件,將部分設(shè)計(jì)移植到可編程邏輯資源。這種方法能夠讓設(shè)計(jì)人員為解決方案開發(fā)出不同的版本,而且與純軟件方法相比,能夠?qū)崿F(xiàn)在定制硬件中綜合部分功能的優(yōu)勢(shì)。
在運(yùn)行時(shí)可重配置硬件上進(jìn)行 ECU 設(shè)計(jì)
在探討完畢借助可編程邏輯在靜態(tài)硬件和軟件上實(shí)現(xiàn) ECU 的優(yōu)勢(shì)后,我們接下來探討采用基于 SRAM 并具備運(yùn)行時(shí)部分可重配置功能的 FPGA 設(shè)計(jì) ECU。部分可重配置技術(shù)能夠?yàn)槠囋O(shè)計(jì)人員提供更多優(yōu)勢(shì)。
事實(shí)上,其中的一大優(yōu)勢(shì)是如果 FPGA 包含有不必在啟動(dòng)時(shí)(如在 ECU 喚醒或加電)配置的部分可重配置區(qū)域,可以縮短系統(tǒng)啟動(dòng)時(shí)間。不支持動(dòng)態(tài)部分可重配置的 FPGA在加電時(shí)需要配置所有的 FPGA 資源,但運(yùn)行時(shí)可重配置 FPGA 只需下載部分位流進(jìn)行部分重配置。
由于當(dāng)今先進(jìn)的 FPGA 器件具有巨大的容量,故在加電時(shí)下載完整的位流會(huì)引起可觀的配置時(shí)間開銷。運(yùn)行時(shí)部分可重配置技術(shù)能夠顯著地縮短這種配置時(shí)延。在那種情況下,有可能在加電時(shí)只配置一個(gè)最起碼的子系統(tǒng)(即引導(dǎo)載入程序和立即需要的部分系統(tǒng)應(yīng)用),讓系統(tǒng)其余部分保持待機(jī)狀態(tài),直到有必要初始化為止。如果系統(tǒng)在加電或喚醒時(shí)需要快速響應(yīng),可將這種啟動(dòng)工作劃分為兩個(gè)階段,以加快初始化過程。為此,可將系統(tǒng)架構(gòu)分解為一個(gè)靜態(tài)域和一個(gè)或者多個(gè)部分可重配置域 (PRR)。靜態(tài)域涵蓋負(fù)責(zé)執(zhí)行啟動(dòng)過程的系統(tǒng)(一般來說是主機(jī) CPU),以及可重配置引擎和通往位流庫的數(shù)據(jù)鏈路。由特定部分位流描述的其他域可按應(yīng)用需求,隨后下載。
另外,如果禁用 PRR 域,則可以讓器件的功耗與禁用區(qū)域部分成比例降低。在使用汽車電池供電的 ECU 中,節(jié)能模式尤為重要。為此,在車輛未使用時(shí)(即處于休眠模式時(shí)),車載 ECU 可使用低功耗模式,以讓 ECU 功耗保持最低。同樣,可以在不需要的時(shí)候使用空白位流禁用 FPGA 的部分區(qū)域,減少邏輯活動(dòng),從而降低動(dòng)態(tài)功耗。
在采用運(yùn)行時(shí)可重配置邏輯的系統(tǒng)中,汽車設(shè)計(jì)人員還可使用一種從航空航天應(yīng)用中借鑒來的重配置技術(shù)。重配置(configuration scrubbing) 可以將系統(tǒng)從因單粒子翻轉(zhuǎn) (SEU)和電磁干擾造成的 SRAM 故障中恢復(fù)過來。定期重新配置硬件外設(shè)可保證系統(tǒng)在出現(xiàn)故障時(shí)自我修復(fù)。另外,這樣也可以將故障的最大時(shí)長限制在重配置時(shí)間間隔內(nèi)。這種技術(shù)也通常運(yùn)用在軟件中,作為一種常見的抗干擾保護(hù)措施,例如 MCU 外設(shè)的定期重配置。
另一項(xiàng)運(yùn)行時(shí)部分重配置技術(shù)的靈活性帶來的有前景的功能是在 FPGA 資源的某個(gè)特定二維位置出現(xiàn)永久性或不可修復(fù)的電路故障,比如影響到特定邏輯單元或 RAM 模塊時(shí),可通過功能重定位實(shí)現(xiàn)故障修復(fù)。一旦發(fā)現(xiàn)有硬件或軟件故障出現(xiàn),可以在運(yùn)行中將所需的功能自動(dòng)重定位到同一 ECU 中的可編程邏輯器件的其他部分。雖然這個(gè)構(gòu)思是可行的,但這項(xiàng)功能還沒有得到當(dāng)今的自動(dòng)化工具的完全支持。
適用于汽車產(chǎn)業(yè)的運(yùn)行時(shí)可重配置計(jì)算技術(shù)最強(qiáng)大的特性無疑是共享的硬件資源上功能的實(shí)時(shí)時(shí)分復(fù)用??梢詫?duì)由 ECU 中的相同計(jì)算資源處理的功能性應(yīng)用進(jìn)行時(shí)間共享,如果應(yīng)用間相互獨(dú)立(例如,當(dāng)車輛向前直行駛時(shí)使用行車道偏離預(yù)警功能,倒車時(shí),則切換到后視攝像頭視圖或停車輔助應(yīng)用)。這種設(shè)計(jì)思路可以幫助降低此類嵌入式系統(tǒng)的成本和復(fù)雜性,釋放空間,減輕車身重量。
這種設(shè)計(jì)思路還可用于實(shí)現(xiàn)特定算法在不斷變化的環(huán)境條件或者外部條件中的自適應(yīng)性。例如,給定的引擎控制算法可通過部分可重配置自主調(diào)整部分硬件模塊,以在任何運(yùn)行溫度下或電池電壓下實(shí)現(xiàn)理想的運(yùn)行。同樣的理念對(duì)通信系統(tǒng)也適用,比如可以設(shè)計(jì)某種加密控制器,能夠在運(yùn)行中運(yùn)用特定的參數(shù)函數(shù)制定專門的安全等級(jí)。另如,可以設(shè)計(jì)某種 ECC 加密器/解密器 IP,用于在高噪聲通信信道中檢測(cè)和修改數(shù)據(jù)傳輸錯(cuò)誤,能夠根據(jù)感應(yīng)到的信噪比動(dòng)態(tài)適應(yīng)其硬件架構(gòu)。