首頁 > 文章中心 > 正文

          汽車電子中操作系統的使用論文

          前言:本站為你精心整理了汽車電子中操作系統的使用論文范文,希望能為你的創作提供參考價值,我們的客服老師可以幫助你提供個性化的參考范文,歡迎咨詢。

          汽車電子中操作系統的使用論文

          論文關鍵詞:OSEK嵌入式實時操作體統RX850汽車電子

          論文摘要:實時操作系統(RTOS)是復雜控制系統中必不可少的一部分,它能按照任務的優先級實現多任務調度,通過信號量、事件標志來實現任務的同步,消息隊列和郵箱機制來實現任務之間的通訊,中斷機制來實現突發事件的管理。較傳統的前后臺系統,它具有更高的實時性、穩定性。介紹了當前在國際汽車工業界日益占據主導地位的汽車電子開放式平臺系統(OSEK/VDX)規范。介紹了NEC汽車電子專用實時操作系統RX850,列舉了其他RTOS并分析了其優缺點,建立了基于RX850的RTOS軟件開發平臺,實現了汽車發動機控制模塊任務的調度,并對RTOS的多任務進行了軟仿,這對于復雜軟件系統開發是非常有實際意義的。

          引言

          隨著國內汽車電子產業的不斷升級和研發投入不斷加大,國內生產的汽車電子簡單的ECU已經越來越普及,例如車載音響,儀表,車身控制BCM,動力轉向EPS等等。越來越多的企業將精力投入到比較復雜的控制領域,比如發動機控制,防抱死系統(ABS)等,對于這些邏輯復雜、實時性和安全性高的控制任務,傳統的前后臺系統模式非實時處理的弊端越來越呈現,這就勢必需要用到實時操作系統來管理這些任務。

          OSEK標準是1993年德國汽車工業界聯合推出了“汽車電子的開放式系統及接口軟件規范”,即OSEK(opensystemandthecorrespondinginterfacesforautomotiveelectronics)。1994年法國汽車工業界的相似規范VDX(vehicledistributedexecutive)和OSEK規范合并,從而形成OSEK/VDX規范體系。當前OSEK標準已經成為汽車電子軟件開發領域中的通用標準,旨在增強軟件代碼安全性、移植性,減少軟件開發周期。

          目前,市場上通用的開源RTOS有很多,比如μC/OS-Ⅱ,FreeRTOS,Linux-2.6等,但是這些核多半是用于通用領域或者安全性要求不太高的領域,如果將這些移植到汽車電子動力安全控制領域,是不太合時宜的;而且,這些核本身不是基于OSEK標準,如果引入OSEK標準,無疑加大了內核移植的難度。NEC電子的實時操作系統RX850是一款基于OSEK標準的汽車級專用RTOS,其內核的實時性已經得到第三方的專業測試。它已經被移植到了NEC芯片的集成開發環境PMPlus和GreenHills,客戶只需要在IDE(IntegratedDevelopEnvironment)中編寫腳本文件來配置RTOS即可通過編譯,使得客戶從底層驅動編寫到RTOS任務調度輕松實現“無縫結合”,大大縮短了RTOS移植的開發周期。本文建立了基于NEC電子32位車身專用芯片V850/Fx3的軟件平臺,并介紹了如何實現RX850操作系統的配置,以發動機控制模塊為控制模型來實現多任務的實時調度,最后通過軟仿工具來分析該內核的效率和任務調度的實時性。

          一、系統平臺介紹

          本系統采用NEC電子的32位車身專用芯片V850/Fx3系列,V850是NEC電子的32位微處理器核,5級流水線控制,內部32個32位寄存器,乘法/除法指令,數據空間支持最大4GB線性尋址能力,代碼空間支持64M線性尋址能力,內部1MB的codeflash,60KB的RAM空間,32KB的dataflash用作EEPROM模擬。

          基于OSEK標準的RX850實時操作系統符合以下標準:操作系統規范(OSEKOS)、通信規范(OSEKCOM)、網絡管理規范(OSEKNM)和OSEK實現語言(OSEKOIL)。其中OSEKOS是針對汽車應用特點而專門制定的一個小型RTOS規范,著重以下幾個方面:(1)可移植性,所有API都是標準化的并且在功能上都有明確的定義;(2)可擴展性,OSEKOS旨在通用于任何類型的ECU,因此一方面系統要高度的模塊化,另一方面又要能進行靈活的配置;(3)汽車應用的特定需求,諸如可靠性、實用性和代價敏感性等。相應的,OSEKOS靜態配置可以通過OS2EKOIL語言實現,用戶在系統生成時靜態制定任務的個數、需要的資源和系統服務。OSEKCOM為通信網絡中的數據交換提供了標準的接口和協議。OSEKNM為監視網絡的流量提供了一組標準的功能函數,以保證網絡的安全性和可靠性。

          二、RX850內核配置

          由于RX850已經被嵌入到IDE,因此用戶直接編寫內核腳本文件即可,下面介紹如何來配置內核。

          1.系統時鐘設置

          clkhdrINTTM0EQ0//選定TimerM為時間片中斷源

          2.堆棧設置

          RX850的堆棧分為系統堆棧和任務堆棧,

          POOL0功能:系統基本表信息、準備隊列、每個管理塊、任務堆棧、中斷句柄堆棧(系統堆棧)、可變長度內存、不變長度內存。

          POOL1功能:任務堆棧、中斷句柄堆棧(系統堆棧)、可變長度內存、不變長度內存。

          POOL0和POOL1都可以作為任務堆棧,即使沒有POOL1也可以。配置如下:

          intstk0x400:pool0//系統堆棧大小為0x400

          tskTSK1_TSK10x050:pool10x06TTS_DMT0x00ei//TSK_ID_1ms任務堆棧大小0x50

          3.允許最大優先級任務數

          maxpri0x1f//允許最大優先級任務數為0x1f

          4.信號量設置

          semSem_Task10x00//設置了信號量Sem_Task1為0

          semSem_Task20x00//設置了信號量Sem_Task2為0

          5.事件標志設置

          flgflg_Task1//設置了事件標志flg_Task1

          flgflg_Task2//設置了事件標志flg_Task2

          5.郵箱設置

          mbxID_Task1TA_MPRI//設置Task1的郵箱

          mbxID_Task2TA_MPRI//設置Task2的郵箱

          6.中斷設置

          RX850的中斷分為直接中斷和間接中斷兩種,直接中斷不受RX850制約的中斷句柄,理論上接近硬件中斷的速度,其缺點是需要用戶自己寫中斷處理句柄,包括:(1).寄存器壓棧;(2).換向,跳轉到中斷句柄的開始;(3).調用系統命令;(4).返回到調度;間接中斷的中斷句柄在RX850的中斷預處理后才被啟動,優點是簡化了句柄處理過程,缺點是由于RX850的預處理降低了速度,其處理過程如下:

          間接中斷配置如下:

          inthdrINTAD_AD_Interrupt//AD間接中斷句柄配置

          inthdrINTC1REC_CAN_Ch1RxInt//CAN間接中斷句柄配置

          7.固定/可變內存池設置

          當系統需要交換較大的數據時,此時任務堆棧是不夠用的,需要開辟一段內存來使用。RX850支持兩種方式的內存配置,固定內存池和可變內存池。固定內存池由用戶自定義內存池的大小,可變內存池根據實際應用系統動態的定義所需內存大小,配置如下:

          mpfMPF_ID_MBX0x08:pool150

          //固定內存以0x08字節為單位排列,大小為50*0x08;

          mplMPL_ID_Task10x08:pool1

          //可變內存0x08字節為單位排列

          8.系統周期循環中斷設置

          cycCYC_INT_TIMER_CYC_IntTimerTCY_OFF10

          //系統周期循環中斷時間為10個時間片

          以上完成了操作系統的配置,然后通過NEC的IDE即可生成操作系統的.s和.h文件,將此兩個文件包含在工程文件中即可。超級秘書網

          三、RX850軟仿及結論

          通過以上配置,選擇發動機控制模塊為對象,下面對RX850進行軟仿。NEC電子提供專門的軟仿工具AZ,在IDE中打開AZ。

          通過上圖可以很方便的看到每個任務的實時調度情況和CPU內核的使用效率。目前CPU的空閑率為94%,很多任務實際上沒有被調用,用戶可以根據實際情況將更多的功能模塊放在API任務中來運行。軟仿只能提供模擬的仿真,如果用戶需要更精確的trace工具,則需要用硬仿來實現。

          四、結束語

          對于比較復雜的控制系統,RTOS是必不可少的,建立以上開發平臺,使得系統工程師可以專注于系統功能建模仿真,然后將功能函數與該平臺的API任務調度結合,即可完成片上測試。實踐證明,這種開發模式大大提高了整個項目的進度。