引言
隨著國內(nèi)汽車電子產(chǎn)業(yè)的不斷升級和研發(fā)投入的不斷加大,,國內(nèi)生產(chǎn)的汽車電子,,如簡單的ECU已經(jīng)越來越普及,應用于車載音響,、儀表,、車身控制BCM、動力轉(zhuǎn)向EPS等,。越來越多的企業(yè)將精力投入到比較復雜的控制領域,,比如發(fā)動機控制,防抱死系統(tǒng)(ABS)等,,對于這些邏輯復雜,、實時性和安全性高的控制任務,傳統(tǒng)的前后臺系統(tǒng)模式非實時處理的弊端就越來越呈現(xiàn)出來,,這就勢必需要用到實時操作系統(tǒng)來管理這些任務,。
OSEK標準是1993年德國汽車工業(yè)界聯(lián)合推出的,“汽車電子的開放式系統(tǒng)及接口軟件規(guī)范”,,即OSEK(Open System and the Corres-ponding Interfaces for Automotive Electronics),。1994年法國汽車工業(yè)界的相似規(guī)范VDX(Vehicle Distributed Executive)和OSEK規(guī)范合并,從而形成OSEK/VDX規(guī)范體系。當前OSEK標準已經(jīng)成為汽車電子軟件開發(fā)領域中的通用標準,,旨在增強軟件代碼安全性,、移植性,減少軟件開發(fā)周期,。
目前,,市場上通用的開源RTOS有很多,比如μC/OS-Ⅱ,,F(xiàn)reeRTOS,,Linux-2.6等,但是這些核多半是用于通用領域或者安全性要求不太高的領域,,如果將這些移植到汽車電子動力安全控制領域,,是不太合適的;而且,,這些核本身不是基于OSEK標準,,如果引入OSEK標準,無疑加大了內(nèi)核移植的難度,。NEC電子的實時操作系統(tǒng)RX850是一款基于OSEK標準的汽車級專用RTOS,,其內(nèi)核的實時性已經(jīng)得到第三方的專業(yè)測試。它已經(jīng)被移植到了NEC芯片的集成開發(fā)環(huán)境PM Plus和Green Hills,,客戶只需要在IDE(Integrated Develop Environment)中編寫腳本文件來配置RTOS即可通過編譯,,使得客戶從底層驅(qū)動編寫到RTOS任務調(diào)度輕松實現(xiàn)“無縫結(jié)合”,大大縮短了RTOS移植的開發(fā)周期,。本文建立了基于NEC電子32位車身專用芯片V850/Fx3的軟件平臺,,并介紹了如何實現(xiàn)RX850操作系統(tǒng)的配置,以發(fā)動機控制模塊為控制模型來實現(xiàn)多任務的實時調(diào)度,,最后通過軟仿工具來分析該內(nèi)核的效率和任務調(diào)度的實時性,。
1 系統(tǒng)平臺介紹
本系統(tǒng)采用NEC電子的32位車身專用芯片V850/Fx3系列,V850是NEC電子的32位微處理器核,,5級流水線控制,,內(nèi)部32個32位寄存器,乘法/除法指令,,數(shù)據(jù)空間支持最大4 GB線性尋址能力,,代碼空間支持64 MB線性尋址能力,內(nèi)部1 MB的codeFLASH,,60 KB的RAM空間,,32 KB的data FLASH用作E2PROM模擬。
基于OSEK標準的RX850實時操作系統(tǒng)符合以下標準:操作系統(tǒng)規(guī)范(OSEKOS),、通信規(guī)范(OSEKCOM),、網(wǎng)絡管理規(guī)范(OSEKNM)和OSEK實現(xiàn)語言(OSEKOIL),。
其中OSEKOS是針對汽車應用特點而專門制定的一個小型RTOS規(guī)范,著重以下幾個方面:
(1)可移植性,,所有API都是標準化的并且在功能上都有明確的定義,;
(2)可擴展性,,OSEKOS旨在通用于任何類型的ECU,,因此一方面系統(tǒng)要高度的模塊化,另一方面又要能進行靈活的配置,;
(3)汽車應用的特定需求,,諸如可靠性、實用性和代價敏感性等,。
相應地,,OSEKOS靜態(tài)配置可以通過OS2EKOIL語言實現(xiàn),用戶在系統(tǒng)生成時靜態(tài)制定任務的個數(shù),、需要的資源和系統(tǒng)服務,。OSEKCOM為通信網(wǎng)絡中的數(shù)據(jù)交換提供了標準的接口和協(xié)議。OSEKNM為監(jiān)視網(wǎng)絡的流量提供了一組標準的功能函數(shù),,以保證網(wǎng)絡的安全性和可靠性,。
2 RX850內(nèi)核配置
由于RX850已經(jīng)被嵌入到IDE,因此用戶直接編寫內(nèi)核腳本文件即可,,下面介紹如何來配置內(nèi)核,。
(1)系統(tǒng)時鐘設置
clkhdr INTTMOEQ0 //選定TimerM為時間片中斷源
(2)堆棧設置
RX850的堆棧分為系統(tǒng)堆棧和任務堆棧。
POOL0功能:系統(tǒng)基本表信息,、準備隊列,、每個管理塊、任務堆棧,、中斷句柄堆棧(系統(tǒng)堆棧),、可變長度內(nèi)存、不變長度內(nèi)存,。
POOL1功能:任務堆棧,、中斷句柄堆棧(系統(tǒng)堆棧)、可變長度內(nèi)存,、不變長度內(nèi)存,。
POOL0和POOL1都可以作為任務堆棧,即使沒有POOL1也可以,。配置如下:
(7)中斷設置
RX850的中斷分為直接中斷和間接中斷兩種,,直接中斷是不受RX850制約的中斷句柄,理論上接近硬件中斷的速度,,其缺點是需要用戶自己寫中斷處理句柄,,包括:寄存器壓棧,;換向,跳轉(zhuǎn)到中斷句柄的開始,;調(diào)用系統(tǒng)命令,;返回到調(diào)度。間接中斷的中斷句柄在RX850的中斷預處理后才被啟動,,優(yōu)點是簡化了句柄處理過程,,缺點是由于RX850的預處理降低了速度,其處理過程如圖1所示,。
間接中斷調(diào)度如圖2所示,,配置如下:
(8)固定/可變內(nèi)存池設置
當系統(tǒng)需要交換較大的數(shù)據(jù)時,此時任務堆棧是不夠用的,,需要開辟一段內(nèi)存來使用,。RX850支持兩種方式的內(nèi)存配置:固定內(nèi)存池和可變內(nèi)存池。固定內(nèi)存池由用戶自定義內(nèi)存池的大小,,可變內(nèi)存池根據(jù)實際應用系統(tǒng)動態(tài)地定義所需內(nèi)存大小,,配置如下:
(9)系統(tǒng)周期循環(huán)中斷設置
系統(tǒng)周期循環(huán)中斷設置如下:
以上完成了操作系統(tǒng)的配置,然后通過NEC的IDE即可生成操作系統(tǒng)的.s和.h文件,,將此兩個文件包含在工程文件中即可,。
3 RX850軟仿及結(jié)論
通過以上配置,選擇發(fā)動機控制模塊為對象,,下面對RX850進行軟仿,。NEC電子提供專門的軟仿工具AZ,在IDE中打開AZ,,運行程序后可以看到如圖3,,圖4所示的界面。
也可以通過RD850來實時檢測各任務的狀態(tài),,如圖5所示,。
通過圖4,圖5可以很方便地看到每個任務的實時調(diào)度情況和CPU內(nèi)核的使用效率,。目前CPU的空閑率為94%,,很多任務實際上沒有被調(diào)用,用戶可以根據(jù)實際情況將更多的功能模塊放在API任務中來運行,。軟仿只能提供模擬的仿真,,如果用戶需要更精確的trace工具,則需要用硬仿來實現(xiàn),。
4 結(jié)語
對于比較復雜的控制系統(tǒng),,RTOS是必不可少的,建立以上開發(fā)平臺,,使得系統(tǒng)工程師可以專注于系統(tǒng)功能建模仿真,,然后將功能函數(shù)與該平臺的API任務調(diào)度結(jié)合,,即可完成片上測試。實踐證明,,這種開發(fā)模式大大提高了整個項目的進度,。