根據IEEE最近的報告,豪華級別的汽車的軟件代碼長度將超過1億行,GENIVI聯盟預測其中70%的代碼是來自汽車的IVI系統,也就是我們常說的車載信息和娛樂系統(InfotainmentandTelematics),其余的30%代碼來自儀表盤、車身電子、發動機和引擎控制以及汽車安全相關部件[1]。即使是30%的代碼,這3千萬行代碼長度也已經超過了1千萬級代碼行數的波音787飛機,與2千5百萬行代碼行數的Windwos2000接近。如此巨大的代碼量不使用嵌入式系統操作(以下簡稱嵌入式OS)和軟件平臺架構是不可想象的,以此聯動產生的軟件研發、測試和維護成本也是巨大的,帶給汽車的安全性和可靠性隱患更是無法預估的。
OSEK和AUTOSAR
90年代的中期,一些歐洲的汽車工業廠商聯合發起了一個聯盟--OSEK/VDX,目的是為了形成一個針對汽車中各分布式單元的開放式架構的工業標準。該標準對RTOS、軟件接口、通信和網絡管理任務都有專門的說明。
“OSEK”的意思是“開放系統和汽車電子的對應通信接口”。這個標準最初是在1993年由德國的BMW、Bosch、Daimler-Benz、Opel、Siemens、VW和Karlsruhe大學共同發起制定的。“VDX”的意思是“車輛分布式執行”(VehicleDistributedeXecutive),這個標準的發起人是法國的PSA和Renault。1994年2個聯盟合并,由于OSEK操作系統的功能能夠和VDX協調運行,所以為了簡化,一般使用術語“OSEK”來取代OSEK/VDK。
開發OSEK規范之前,汽車電子開發者要支付高額的、周期性開發費用,面對控制單元(ECU)軟件非應用相關方面的管理也不正規,不同的軟件接口和協議所造成的各生產廠商制造的控制單元部件的不兼容性的問題更是嚴重,這些問題的存在便促使了OSEK出現[2]。
OSEK聯盟只是定義OSEK規范,符合該規范的開源和商業的RTOS產品現在已經很多了,比如開源的FreeOSEK、OpenOSEK、Toppers-OSEK(日本京都大學發起的開源項目,我在“開源的嵌入式OS”一文中已經作了介紹)。商業OSEKOS有德國Vector公司的OS/Can、EB(Elektrobit)公司的tresosAutoCore和OsekCore,美國MentorGraphic的Nucleus,還有GPL和商業雙授權的ArcticCore,它同時支持AUTOSAR和OSEK規范[3]。
OSEK是基于ECU開發,標準包括三部分:操作系統(0S)、通信(COM交互層)、網絡管理(NM)。AUTOSAR(汽車開發系統架構)是基于整體汽車電子開發,包括汽車電子功能的劃分、ECU統一軟件架構、ECU軟件開發過程等整套的方法和理論。AUTOSAR規范中定義的操作系統就是OSEKOS,而通信和網絡管理雖然和OSEK有區別,但思路是一樣的。