osek

德國汽車的開放系統和介面標準

OSEK/VDX是應用在模塊和靜態實時操作系統上的標準,由主要的汽車製造商和供應商,研究機構以及軟體開發商發起。

簡介


OSEK,是指德國的汽車電子類開放系統和對應介面標準(open systems and the corresponding interfaces for automotive electronics),而VDX則是汽車分散式執行標準(vehicle distributed executive),後者最初是由法國獨自發起的,後來加入了OSEK團體。兩者的名字都反映出OSEK/VDX的目的是為汽車電子制定標準化介面。該標準完全獨立,對目標系統只限制了少量的條件。這樣,就可以應用一些簡單的處理器替代那些昂貴的解決方案,來控制任務執行,並不需要任何附加條件。事實上,在此基礎上,也可以合理使用一些更複雜的CPU,於是該標準便對任何可能的目標平台都沒有了限制。
標準定義了三個組件來構成OSEK/VDX標準:實時的操作系統(OSEK OS),通訊子系統(OSEK-COM)和網路管理系統(OSEK-NM)。這樣定義的一個好處是方便了各個組件版本的定義,這已在實際應用中得到了體現,例如:現在OSEK-COM(3.0.2)和OSEK-NM(2.5.2)的版本就與OSEK-OS(2.2.1)的版本不同。圖1給出了OSEK/VDX的基本結構和各組件間的關係。
圖1 OSEK/VDX標準操作系統基本結構
OSEK-OS是個靜態的操作系統,不支持在運行過程中動態更改,用戶在產生特定的kernel之間,必須確定所需要資源的準確數目。另外,OSEK-OS也不需要進行動態的內存管理。通過這些限制,大大增加了更好的進行代碼優化的幾率,甚至使得不帶內存管理硬體的簡單處理器有了用武之地。用戶不需要估算最壞情況下所需的資源——因為,可以容易的定度出靜態系統的實際需求是多少,以及這個系統是否能夠滿足。
OSEK-OS中最重要的資源包括任務、時間和中斷。為此,提供了一個輕量級的API庫。版本2.2對應的API提出了26個用戶功能介面。輕量級的API使得開發者可以輕鬆上手,並靈活使用。
OSEK-OS中提供了兩類任務:基本任務(basic task)和擴展任務(extended task)。基本任務只有自己終止時才釋放處理器,它也不接收更高的事件信號(event)。因此,常常用來完成那些激活后就必須完整執行的工作。擴展任務可以接收事件信號,它們只需要啟動一次,並接收相關事件的控制。每個任務會被賦予一個固定的優先順序,運行期間不允許更改。
使用事件(event)——也被稱為資源(resource)——可以同步任務的執行。前面提到,擴展任務既可以由事件觸發,執行中也會等待事件信號,這樣便可以使用事件,達到同步任務的目的。而基本事件則只能由事件觸發,不接收事件信號。
OSEK/VDX術語中提到的資源,是一種確保對全局數據進行互斥訪問的數據結構,與信號量有些相似。開發者可以使用資源防止死鎖的出現。為此,OSEK/VDX提出了優先順序最高限制協議,為每個資源指定特定的優先順序,並在任務使用相關資源時,把任務的優先順序設置為相應的值。這是同步的一種安全的實現方法,使用資源的任務既不能等待事件也不會終止。
OSEK/VDX中的時間管理採用了計數器(counter)和定時器(alarm),甚至在一個計數器上對應多個定時器。計時單位是固定長度的tick,定時器在某個特定時刻被激活,從而激活某個任務或者引發某個事件。定時器可動態的切換成非激活態和激活態。也可以指定定時器是一次定時,還是周期定時。除了標準定時器外,也提供了靜態定時器,但OSEK-OS中並沒有定義靜態定時器的API,計數器API也一樣。它們的實現依賴於具體的系統實現。
OSEK/VDX標準的所有文檔包括OSEK-OS,OSEK-COM和OSEK-NM的API描述,以及OSEK實現語言OIL規範都免費對公眾開放。
德國3Soft公司從1996開始開發OSEK操作系統,目前擁有350人,其中70多人專門開發OSEK操作系統平台。已經為BMW提供了基於OSEK的軟體開發平台(BMW Standard Core),為VW/Audi開發了OSEK軟體開發平台,同時為DaimlerChrysler提供了首個基於OSEK項目的軟體平台,此外提供了各種硬體平台的Bootloader、HIS實現。
3Soft的OSEK產品TresOS ECU創造了很多個第一,第一個商業化OSEK/VDX系統(1997年ProOSEK1.0問世),汽車部件產品生產中使用的第一個OSEK/VDX-OS(1999年Andi A8的dashboard-ECU採用了ProOSEK),整車生產中的第一個OSEK/VDX-OS軟體標準核(1998年基於ProOSEK的BMW標準核問世,BMW要求所有的電子產品供應商基於這個標準核來開發軟體,基於該標準核的BMW 7繫於2001投產),2000年第一個OSEKtime操作系統實現商用,2002年第一個提供HIS I/O庫的OSEK/VDX-OS,2003年第一個圖形化OSEK的通用配置工具TresOS,2005年第一個AUTOSAR OS,2006年第一個提供基於FlexRay的FTCOM在BMW商用。
TresOS ECU是3Soft針對汽車電子控制單元(ECU)的軟體開發者通常要面對客戶提供或者需要多個軟體組件,而且這些組件需要滿足ECU特定的需求,來完成正確的操作,提供給開發者針對標準化組件進行集中配置的一個新途徑。其中包括TresOS Launcher這個集成配置工具和各種配置插件,這些Plug-in包括OSEK-OS 2.2.2(ISO 17356)、OSEKtime 1.0(OSEK/VDX)、I/O-Library 2.0.1(HIS-Specification)、Crypto-Module(RSA,AES,CRC等)、LIN 2.0/1.3 Driver(LIN-Specification)等,並且支持用戶進行自定義擴展。
TresOS Launcher把多個配置工具組裝成為一個集成開發環境。用戶可以在這些工具中任意轉換。Launcher把重要的數據(例如使用的硬體,配置的引導行)提供給所有的配置工具,以確保一致性。
TresOS Launcher管理存放各個配置工具專有數據的資料庫,以分級的文件樹形式存放。在此過程中,對創建,驗證,以及有時得標準化格式(例如OIL等)進行保留。
TresOS Launcher使用流程:
Tresos概念的優點能在一個小例子得到充分體現。現在有一位開發者,他想在其應用中使用控制器中的EEPROM。那麼,他只需執行如下步驟:
 在I/O庫配置工具中配置EEPROM驅動
 在OSEK配置工具中配置一個訪問EEPROM的任務
 在OSEK配置工具中配置一個周期性激活該任務的計時器
 實現這個可訪問前面已配置好了驅動EEPROM的任務
在TresOS中,任何配置工具可向其它工具提供服務。OESK配置工具提供的典型服務包括:任務註冊和計時器等。使用這些服務,實現集成的準備和執行。事件的步驟則簡單的多:
 在I/O庫配置工具中配置EEPROM驅動
下述動作由tresos框架自動執行:
 I/O庫配置工具向OSEK配置工具請求訪問EEPROM的任務的註冊
 I/O庫配置工具向OSEK配置工具請求激活該任務的計時器的註冊
 I/O庫配置工具可能產生源代碼,實現訪問EEPROM驅動的任務
程序會保存開發者已做的工作,此後,開發者不需要在不同工具之間進行轉換。從而使得這一過程中產生錯誤和集成中間件的風險大大降低。
TresOS有很好的可擴展性:
像TresOS這樣的系統是否成功取決於其擴展性。當集成了大量配置工具后,便可完成自動集成。將來,3SOFT將為TresOS開發所有的配置工具。
所有相關介面將對公眾開放,於是用戶便可載入所需的庫。這樣,任何人都能進行可適用於TresOS的插件的開發,這些插件可以使用那些已有的插件或者自己提供的服務。
所有進行獨立插件開發的必要信息都是可用的(可能指沒有專利限制)。所有已有插件嚴格遵循這些規範,以保證介面的一致性。3SOFT可對客戶向TresOS集成自主開發庫提供技術支持。
TresOS ECU OSEK插件是3Soft公司已被廣泛驗證了的實時操作系統ProOSEK的直接後繼者。它遵循OSEK/VDX規範,得利於3SOFT公司OSEK技術方面的長期經驗。
升級了TresOS ECU OSEK插件的操作系統,不僅適用於汽車工業領域,而且在只能提供少量資源的領域也可以廣泛使用。按照應用需求,靜態提供所有的操作系統業務。TresOS ECU的優勢在於它的可裁減性,集成的圖形架構環境和自動代碼生成

支持標準


 OS:嚴格遵循OSEK/VDX-OS 2.2.2
 配置語言OIL 2.5
 內部通訊遵循COM 3.0.3(所有一致的類:BCC1,BCC2,ECC1,ECC2,CCCA,CCCB)
 支持ORTI 2.0/2.1 (取決於工具鏈)
支持可裁減性:
 可產生滿足應用需求的kernel
 可生成1KB以下的kernel
提供硬體抽象層(I/O庫):
 定義在硬體和應用間抽象層有利於應用的移植。硬體抽象層以附加Tresos ECU插件的方式提供,符合德國HIS團體的目前規範。
支持擴展調試:
 任務跟蹤(TaskTrace)
 棧檢查(stack check)
 運行檢查(Runtime Checks)
支持如下目標系統:
 Motorola: HC08, HC12, Star12, MPC555/56x
 Hitachi: SH2, SH2E, H8S
 Infineon: C16X, XC16x, TriCore
 ST Microelectronics: ST10, ST30
 Fujitsu: F2MC – 16LX
 Texas Instruments: TMS470
 NEC: V850
 Altera: Excalibur (ARM9)
 Simulation for Windows NT/2K/XP
並且可根據客戶需要進行移植。
支持主機系統:
 帶有JRE1.4.2或者更高版本的任意桌面系統(例如:WindowsXP, Linux)
支持其它功能:
 通訊驅動(LIN, CAN, ...)
 適用於無線電,醫療設備,家用等等