国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

基于Simulink的OSEK嵌入式軟件開發(fā)方法

發(fā)布時(shí)間:2010-2-22 13:37    發(fā)布者:李寬
關(guān)鍵詞: OSEK , Simulink , 嵌入式 , 軟件開發(fā)
引言

現(xiàn)在V型開發(fā)模式已成為使用最廣的汽車軟件開發(fā)流程標(biāo)準(zhǔn)。這一標(biāo)準(zhǔn)流程得到許多工具的支撐,有來自Mathworks的工具,如用于功能開發(fā)和仿真的 Matlab/Simulink/Stateflow,用于自動(dòng)代碼生成的Real—TimeWorkshop,以及來自dSpace的工具。硬件有用于快速控制原型開發(fā)的AutoBox和用于硬件在環(huán)測試的模塊,軟件有產(chǎn)品級(jí)代碼生成器TargetLink。它們?cè)诩涌扉_發(fā)周期的同時(shí),也提高了代碼的可靠性。

平臺(tái)軟件方面,OSEK OS是廣泛應(yīng)用于汽車電子領(lǐng)域的嵌入式操作系統(tǒng)(RTOS)規(guī)范。它定義了一些基本的系統(tǒng)服務(wù),比如任務(wù)處理、中斷服務(wù)程序(ISR)處理、資源管理、事件處理以及報(bào)警服務(wù)等。

由上可知,將Matlab/Simulink的建模和仿真環(huán)境在代碼生成階段與OSEK OS規(guī)范相結(jié)合,將極大地方便開發(fā)。這方面Matlab已有針對(duì)OSEK/VDX的嵌入式對(duì)象模塊,TargetLink也實(shí)現(xiàn)了部分結(jié)合,但兩者都局限于特定的硬件,不能應(yīng)用于不同的控制器和實(shí)時(shí)操作系統(tǒng)。

1 嵌入式軟件開發(fā)理念

符合基于模型的開發(fā)和OSEK規(guī)范的軟件架構(gòu)如圖1所示。以英飛凌XC164系列單片機(jī)為例,硬件層的核心部件由RTOS提供的系統(tǒng)服務(wù)進(jìn)行管理,外設(shè)部件由相應(yīng)的驅(qū)動(dòng)程序驅(qū)動(dòng)。

中間層(軟件運(yùn)行環(huán)境)包括兩部分,操作系統(tǒng)和硬件驅(qū)動(dòng)。操作系統(tǒng)采用順應(yīng)OSEK規(guī)范的μC/OS-II(見3.1),硬件外設(shè)驅(qū)動(dòng)開發(fā)在后面作介紹。

應(yīng)用程序指的是與硬件無關(guān)的軟件,含控制算法和中斷服務(wù)程序(ISR)。控制算法完成控制任務(wù),形式一般為Simulink模型。該模型可以和被控對(duì)象模型一起在閉環(huán)狀態(tài)下完成功能仿真,同時(shí)也可以在代碼生成階段與硬件驅(qū)動(dòng)以及操作系統(tǒng)API一起生成可在目標(biāo)硬件上運(yùn)行的程序。這里ISR可以有兩種類型,可以是手寫的C代碼,也可以是Simulink模型中的觸發(fā)子系統(tǒng)。在該子系統(tǒng)中的觸發(fā)源是圖1中所示的硬件層外設(shè)。


                           
2 MATLAB環(huán)境下代碼生成流程

實(shí)時(shí)工作空間(Real-Time Workshop,RTW)代碼生成流程包含下面幾部分。

①仿真和模型文件(model.mdl)。通過手動(dòng)添加C語言S函數(shù)可以擴(kuò)展Simulink模型庫。

②中間描述文件(model.rtw)。該文件描述了模型中系統(tǒng)和各模塊以及它們之間的聯(lián)系,可以看作是模型文件的分層式的描述庫文件。

③目標(biāo)語言編譯器(TLC)文件。目標(biāo)語言編譯器讀取model.rtw文件中的信息,將模型最終轉(zhuǎn)化成源代碼。

TLC文件有兩種形式,系統(tǒng)TLC文件和模塊TLC文件。前者控制整個(gè)模型的代碼生成,比如可以指定模型生成C語言源代碼,而后者僅針對(duì)對(duì)應(yīng)的模塊。對(duì)每個(gè)手動(dòng)添加的C語言S函數(shù)對(duì)象,必須有對(duì)應(yīng)的模塊TLC文件,才可用于代碼生成。

④生成的源代碼。圖2中列舉了生成的主要源代碼,其中model.c是model.mdl對(duì)應(yīng)生成的算法源代碼。



對(duì)于生成的源代碼可對(duì)其手動(dòng)添加需要的ISR,或者整合一些成熟的C算法代碼,然后在Keil環(huán)境下進(jìn)行編譯,生成嵌入式可執(zhí)行文件。下面將 model.mdl看作應(yīng)用程序來討論。嵌入式應(yīng)用程序主要完成兩類任務(wù),周期性任務(wù)和事件驅(qū)動(dòng)型任務(wù)。后者通常以ISR處理。

為了使Simulink模型能在RTOS中執(zhí)行,必須將其劃分成不同的任務(wù)。Targetlink中的任務(wù)劃分如圖3所示。TargetLink有兩種劃分方式,默認(rèn)方式和自定義方式。默認(rèn)方式下,TargetLink將模型中所有周期性的具有相同采樣時(shí)間的子系統(tǒng)劃歸為獨(dú)立任務(wù),具有相同觸發(fā)源的觸發(fā)子系統(tǒng)結(jié)合在一起,要么和觸發(fā)源一起歸為同一任務(wù),要么獨(dú)立成為新的任務(wù)。自定義方式下,用戶通過在子系統(tǒng)中添加特殊的“任務(wù)模塊”(見圖3中的 “TaskA”、“Task B”、“Task C”)來任意地劃分任務(wù)。

     

鑒于本開發(fā)是基于Matlab中針對(duì)OSEK/VDX的嵌入式對(duì)象模塊,TargetLink中的任務(wù)劃分方式不能被直接移植,因此采用函數(shù)調(diào)用子系統(tǒng) (function-callsubsystem)作為獨(dú)立任務(wù)的標(biāo)識(shí),如圖4中的Task A和Task B模塊。同Simulink中其他離散模塊一樣,函數(shù)調(diào)用發(fā)生器有自己的采樣時(shí)間,用以表明該子系統(tǒng)被執(zhí)行的頻度。模型中也會(huì)有一些其他模塊不在函數(shù)調(diào)用子系統(tǒng)內(nèi),如圖4中的定時(shí)模塊,以便與任務(wù)模塊相區(qū)分。圖4中ISR的部分采用觸發(fā)子系統(tǒng),當(dāng)觸發(fā)條件滿足時(shí)該子系統(tǒng)被執(zhí)行。



3 軟件運(yùn)行環(huán)境的開發(fā)

3.1 OSEK順應(yīng)性開發(fā)

近來已有很多商業(yè)嵌入式操作系統(tǒng)符合OSEK規(guī)范,像Wind River的OSEKWorks、Elektrobit的Pro-OSEK,還有ETAS的RTA-OSEK。鑒于成本方面的考慮,采用內(nèi)核源代碼開放的 μC/OS-II。

μC/0S-II和OSEK規(guī)范有許多共同點(diǎn),比如都支持基于任務(wù)優(yōu)先級(jí)的占先式調(diào)度,都有很好的可移植性和可裁剪性。但也存在不同之處,比如OSEK規(guī)范中的BCC2和ECC2順應(yīng)等級(jí)都支持同一優(yōu)先級(jí)下的多個(gè)任務(wù),而μC/OS-II僅支持同一優(yōu)先級(jí)下一個(gè)任務(wù);OSEK規(guī)范對(duì)互斥資源的訪問采用最高優(yōu)先級(jí)限度協(xié)議,而μC/0S-II采用互斥信號(hào)量機(jī)制。參考文獻(xiàn)[6]在基于μC/OS-II的OSEK順應(yīng)性移植方面進(jìn)行了實(shí)際的開發(fā)。本文采用修改過的μC/OS-II作為OSEK的一個(gè)操作系統(tǒng)實(shí)例,來討論模型的定時(shí)機(jī)制。

3.2 定時(shí)機(jī)制

Matlab/Simulink環(huán)境下RTw Embedded Coder默認(rèn)采用多速率、多任務(wù)求解器來處理多采樣時(shí)間的模型。在生成的model.c文件中,有函數(shù)rate_monotonic_sehed- uler()。該函數(shù)用于維護(hù)調(diào)度計(jì)數(shù)器,處理模型中不同采樣時(shí)間模塊的運(yùn)行順序。它實(shí)際上就是操作系統(tǒng)中經(jīng)常提到的單調(diào)執(zhí)行率調(diào)度法(RMS)。

μC/OS-II中函數(shù)OSTickISR()提供時(shí)間基準(zhǔn)服務(wù),用于判斷任務(wù)等待以及超時(shí)。這個(gè)中斷服務(wù)程序通常由硬件計(jì)時(shí)器驅(qū)動(dòng),中斷頻率在 10~100 Hz。在函數(shù)0S-TickISR()中調(diào)用了OSTimeTick()用于處理任務(wù)等待。

函數(shù)OSTicklSR()的代碼見代碼段1:

OSTicklSR PROC INTERRUPT UCOS_OSTicklSR=Ox22



為了將兩者的定時(shí)策略相結(jié)合,可進(jìn)行兩處修改。第一,在μc/OS-II中保留函數(shù)OSTickISR(),但是中斷頻率不是如代碼段1中所示的10 ms那樣的固定值,而對(duì)不同的應(yīng)用程序采用浮動(dòng)的中斷頻率。這里取model.mdl中所有采樣時(shí)間的最大公約數(shù)作為模型的時(shí)間基準(zhǔn)。這樣可以最大限度地減小系統(tǒng)因周期性的時(shí)鐘中斷OS—TickISR()而造成的資源開銷。第二,創(chuàng)建一個(gè)新任務(wù)HighstPrioTask()。該任務(wù)具有最高的優(yōu)先級(jí),即任務(wù)控制塊TCB中OSTCBPrio=0,這樣在每次產(chǎn)生任務(wù)調(diào)度時(shí)都能確保該任務(wù)獲得CPU使用權(quán)。該任務(wù)可理解為在圖4中的任務(wù)子系統(tǒng)和定時(shí)模塊之上的高一級(jí)的調(diào)度任務(wù)。其偽代碼見代碼段2(Pseudocode of added task High-


3.3 創(chuàng)建自定義驅(qū)動(dòng)模塊

圖1中軟件運(yùn)行環(huán)境的自定義開發(fā)可以分為兩部分,一部分是實(shí)時(shí)操作系統(tǒng)的API驅(qū)動(dòng)庫的自定義開發(fā),另一部分是XCl64系列單片機(jī)的設(shè)備驅(qū)動(dòng)模塊開發(fā)。兩者都可利用參考文獻(xiàn)[4]中提及的“自定義設(shè)備驅(qū)動(dòng)”來描述。在“自定義設(shè)備驅(qū)動(dòng)”的開發(fā)中,開發(fā)者通過Matlab提供的S一函數(shù)機(jī)制,為每個(gè)模塊需要手動(dòng)編寫兩個(gè)源文件,即block.c和block.tlc。其中block.c負(fù)責(zé)在仿真階段進(jìn)行模塊初始化及模塊輸出的計(jì)算,同時(shí)在代碼生成階段通過函數(shù)mdlRTW為model.rtw傳遞所需的參數(shù)。文件block.C中出現(xiàn)的主要函數(shù)有:

①mdlInitializeSizes,用于細(xì)化SimStruct結(jié)構(gòu)中不同參數(shù)的維數(shù)(SimStruct是指Simulink數(shù)據(jù)結(jié)構(gòu),Sim- Struct及其相關(guān)的宏定義參見Matlab目錄下文件sim-strue.h)。

②mdlInitializeSampleTimes,用于細(xì)化該模塊的采樣時(shí)間。

③mdlOutputs::對(duì)輸入設(shè)備來講,從硬件中讀取值加以計(jì)算并傳遞到模塊輸出端;對(duì)輸出設(shè)備而言,從上流模塊讀取數(shù)據(jù),加以處理并寫回硬件。

文件block.tlc用來控制代碼生成過程,通過相應(yīng)函數(shù)將語句寫入生成的源文件中,代碼段3是一個(gè)例子。文件中使用的函數(shù)主要包括:%function BlockTypeSetup(block,system)void、%function Start(block,system)Output、%function Outputs



4 應(yīng)用實(shí)例

圖5是一個(gè)簡單的應(yīng)用。其中建立了兩個(gè)任務(wù),任務(wù)ADC_SUM每0.1 S執(zhí)行1次,任務(wù)ADC_GPIO每0.5 S執(zhí)行1次。第一個(gè)任務(wù)包含一個(gè)ADC S函數(shù)模塊。該S函數(shù)屬輸入設(shè)備,并被封裝成具有圖5所示的參數(shù)輸入界面;第二個(gè)任務(wù)包含另外一個(gè)S函數(shù)模塊,GPIO,在這個(gè)應(yīng)用中為輸出模塊。



像第二部分描述的一樣,算法可以進(jìn)行仿真。仿真完成后可通過RTW生成代碼(本文選擇osekworks.tlc為系統(tǒng)TLC文件,并對(duì)該文件進(jìn)行了適當(dāng)修改)。生成的源代碼(包括*.c源文件和*.h頭文件)可以在Keil C166環(huán)境下聯(lián)合編譯并進(jìn)行軟件調(diào)試運(yùn)行,如圖6所示,這樣也便于集成傳統(tǒng)手動(dòng)開發(fā)流程中成熟的算法代碼。最終圖6 Keil C166環(huán)境下編譯帶μo/os—ll的生成源代碼代碼可在目標(biāo)硬件上運(yùn)行。



5 結(jié)論

目前越來越多的汽車電子系統(tǒng)的開發(fā)借助Matlab/Simulink,并且其已變成標(biāo)準(zhǔn)的開發(fā)工具。本文提出的軟件開發(fā)方法基于Sireulink環(huán)境和OSEK OS規(guī)范。在Simulink環(huán)境下開發(fā)的算法可以結(jié)合OSEK RTOS(本文為修改過的μC/OS-II)直接應(yīng)用到目標(biāo)硬件上。該方法已通過實(shí)例進(jìn)行了驗(yàn)證,與傳統(tǒng)方法比較極大地縮短了開發(fā)時(shí)間。

參考文獻(xiàn)

1. Henning Wallentowitz Konrad Reif:Handbuch-Kraftfahrzeugelektronik,Grundlagen,Komponenten,Systeme,Anwendung 2006
2. OSEK OS 2.2.1.OSEK/VDX Operation System Specification 2.2.1
3. TIAN Shuo.LIU Yuan.XIA Wenchuan.LI Jianqiu.YANG Minggao Advanced ECU Software Development Method for Fuel Cell Systems [期刊論文] -清華大學(xué)學(xué)報(bào)自然科學(xué)版(英文版)2005(5)
4. Real-Time Workshop User's Guide
5. K?ster Lutz.Thomsen Thomas.Stracke Ralf Connecting Simulink to OSEK:Automatic Code Generation For Real-Time Operating Systems with TargetLink 2008
6. 顧劍杰 基于μC/OS-II的OSEK順應(yīng)性開發(fā)研究 2008
7. Real-Time Workshop Embedded Coder User's Guide
8. Labrosse Jean J.邵貝貝 嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS-II 2005

作者:同濟(jì)大學(xué) 張永博 沈勇 來源:單片機(jī)與嵌入式系統(tǒng)應(yīng)用 2009(5)
本文地址:http://www.qingdxww.cn/thread-8398-1-1.html     【打印本頁】

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問題,我們將根據(jù)著作權(quán)人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評(píng)論 登錄 | 立即注冊(cè)

廠商推薦

  • Microchip視頻專區(qū)
  • 無線充電基礎(chǔ)知識(shí)及應(yīng)用培訓(xùn)教程2
  • 想要避免發(fā)生災(zāi)難,就用MPLAB® SiC電源仿真器!
  • PIC18-Q71系列MCU概述
  • 基于CEC1712實(shí)現(xiàn)的處理器SPI FLASH固件安全彈性方案培訓(xùn)教程
  • 貿(mào)澤電子(Mouser)專區(qū)

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號(hào) | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 成人在线视频一区 | 亚洲 欧美 自拍 明星合成 | 欧美日韩视频精品一区二区 | 国产乱对白刺激视频在线观看 | 欧美国产黄色 | 成人久久精品一区二区三区 | 国产综合影院 | 日本不卡一区二区三区视频 | 精品欧美一区二区在线观看 | 91精品国产色综合久久 | 毛片免费观看 | 久久香蕉国产线看免费 | 欧美午夜网 | 欧美日韩国产一区三区 | 成人在线午夜 | 国产成人aa在线视频 | 四虎在线永久 | 丁香婷婷色 | 国内外成人免费视频 | 日本一区二区网站 | 手机看黄av免费网址 | 麻豆天美精东91制片厂 | 精品日韩欧美国产一区二区 | 成品人app软件下载 成品人app软件大全下载免费版 | 亚洲小色网 | 久久网视频| 中文字幕日韩精品一区口 | 日本三级黄网站 | 91麻豆精品国产91久久久久久 | 狠狠色综合色综合网站久久 | 亚洲综合色色图 | jizz在亚洲 | 日本成人免费在线 | 亚洲欧美日韩高清一区二区三区 | 四虎影视在线看免费完整版 | 色综合天天综合网看在线影院 | 请输入搜索词:www免费 | 久久久国产成人精品 | 男女强吻摸下面揉免费 | m男亚洲一区中文字幕 | 性欧美高清精品videos |