基于OSEK標準的嵌入式實時操作系統在汽車電子中的應用
引言
隨著國內汽車電子產業的不斷升級和研發投入的不斷加大,國內生產的汽車電子,如簡單的ECU已經越來越普及,應用于車載音響、儀表、車身控制BCM、動力轉向EPS等。越來越多的企業將精力投入到比較復雜的控制領域,比如發動機控制,防抱死系統(ABS)等,對于這些邏輯復雜、實時性和安全性高的控制任務,傳統的前后臺系統模式非實時處理的弊端就越來越呈現出來,這就勢必需要用到實時操作系統來管理這些任務。
OSEK標準是1993年德國汽車工業界聯合推出的,“汽車電子的開放式系統及接口軟件規范”,即OSEK(Open System and the Corres-ponding Interfaces for Automotive Electronics)。1994年法國汽車工業界的相似規范VDX(Vehicle Distributed Executive)和OSEK規范合并,從而形成OSEK/VDX規范體系。當前OSEK標準已經成為汽車電子軟件開發領域中的通用標準,旨在增強軟件代碼安全性、移植性,減少軟件開發周期。
目前,市場上通用的開源RTOS有很多,比如μC/OS-Ⅱ,FreeRTOS,Linux-2.6等,但是這些核多半是用于通用領域或者安全性要求不太高的領域,如果將這些移植到汽車電子動力安全控制領域,是不太合適的;而且,這些核本身不是基于OSEK標準,如果引入OSEK標準,無疑加大了內核移植的難度。NEC電子的實時操作系統RX850是一款基于OSEK標準的汽車級專用RTOS,其內核的實時性已經得到第三方的專業測試。它已經被移植到了NEC芯片的集成開發環境PM Plus和Green Hills,客戶只需要在IDE(Integrated Develop Environment)中編寫腳本文件來配置RTOS即可通過編譯,使得客戶從底層驅動編寫到RTOS任務調度輕松實現“無縫結合”,大大縮短了RTOS移植的開發周期。本文建立了基于NEC電子32位車身專用芯片V850/Fx3的軟件平臺,并介紹了如何實現RX850操作系統的配置,以發動機控制模塊為控制模型來實現多任務的實時調度,最后通過軟仿工具來分析該內核的效率和任務調度的實時性。
1 系統平臺介紹
本系統采用NEC電子的32位車身專用芯片V850/Fx3系列,V850是NEC電子的32位微處理器核,5級流水線控制,內部32個32位寄存器,乘法/除法指令,數據空間支持最大4 GB線性尋址能力,代碼空間支持64 MB線性尋址能力,內部1 MB的codeFLASH,60 KB的RAM空間,32 KB的data FLASH用作E2PROM模擬。
基于OSEK標準的RX850實時操作系統符合以下標準:操作系統規范(OSEKOS)、通信規范(OSEKCOM)、網絡管理規范(OSEKNM)和OSEK實現語言(OSEKOIL)。
其中OSEKOS是針對汽車應用特點而專門制定的一個小型RTOS規范,著重以下幾個方面:
(1)可移植性,所有API都是標準化的并且在功能上都有明確的定義;
(2)可擴展性,OSEKOS旨在通用于任何類型的ECU,因此一方面系統要高度的模塊化,另一方面又要能進行靈活的配置;
(3)汽車應用的特定需求,諸如可靠性、實用性和代價敏感性等。
相應地,OSEKOS靜態配置可以通過OS2EKOIL語言實現,用戶在系統生成時靜態制定任務的個數、需要的資源和系統服務。OSEKCOM為通信網絡中的數據交換提供了標準的接口和協議。OSEKNM為監視網絡的流量提供了一組標準的功能函數,以保證網絡的安全性和可靠性。
2 RX850內核配置
由于RX850已經被嵌入到IDE,因此用戶直接編寫內核腳本文件即可,下面介紹如何來配置內核。
(1)系統時鐘設置
clkhdr INTTMOEQ0 //選定TimerM為時間片中斷源
(2)堆棧設置
RX850的堆棧分為系統堆棧和任務堆棧。
POOL0功能:系統基本表信息、準備隊列、每個管理塊、任務堆棧、中斷句柄堆棧(系統堆棧)、可變長度內存、不變長度內存。
POOL1功能:任務堆棧、中斷句柄堆棧(系統堆棧)、可變長度內存、不變長度內存。
POOL0和POOL1都可以作為任務堆棧,即使沒有POOL1也可以。配置如下:
評論