基于Simulink的OSEK嵌入式軟件開發方法
摘要 近年來,V型開發模式在汽車電子開發領域得以廣泛應用,同時Matlab/Simulink及OSEK實時操作系統規范已成為標準的開發平臺,文章通過引入新的理念和方法將兩者相結合。首先從分析軟件的架構入手,介紹了Simulink模型中的任務識別、定時機制、基于μC/OS―II的OSEK順應性開發,以及在Matlab環境下如何創建自定義的驅動庫等,最后通過應用實例驗證了該開發方法的可行性。
關鍵詞 嵌入式軟件開發代碼自動生成 Matlab/Simulink OSEK μC/OS-II
引 言
現在V型開發模式已成為使用最廣的汽車軟件開發流程標準。這一標準流程得到許多工具的支撐,有來自Mathworks的工具,如用于功能開發和仿真的Matlab/Simulink/Stateflow,用于自動代碼生成的Real―TimeWorkshop,以及來自dSpace的工具。硬件有用于快速控制原型開發的AutoBox和用于硬件在環測試的模塊,軟件有產品級代碼生成器TargetLink。它們在加快開發周期的同時,也提高了代碼的可靠性。
平臺軟件方面,OSEK OS是廣泛應用于汽車電子領域的嵌入式操作系統(RTOS)規范。它定義了一些基本的系統服務,比如任務處理、中斷服務程序(ISR)處理、資源管理、事件處理以及報警服務等。
由上可知,將Matlab/Simulink的建模和仿真環境在代碼生成階段與OSEK OS規范相結合,將極大地方便開發。這方面Matlab已有針對OSEK/VDX的嵌入式對象模塊,TargetLink也實現了部分結合,但兩者都局限于特定的硬件,不能應用于不同的控制器和實時操作系統。
1 嵌入式軟件開發理念
符合基于模型的開發和OSEK規范的軟件架構如圖1所示。以英飛凌XC164系列單片機為例,硬件層的核心部件由RTOS提供的系統服務進行管理,外設部件由相應的驅動程序驅動。
中間層(軟件運行環境)包括兩部分,操作系統和硬件驅動。操作系統采用順應OSEK規范的μC/OS-II(見3.1),硬件外設驅動開發在后面作介紹。
應用程序指的是與硬件無關的軟件,含控制算法和中斷服務程序(ISR)。控制算法完成控制任務,形式一般為Simulink模型。該模型可以和被控對象模型一起在閉環狀態下完成功能仿真,同時也可以在代碼生成階段與硬件驅動以及操作系統API一起生成可在目標硬件上運行的程序。這里ISR可以有兩種類型,可以是手寫的C代碼,也可以是Simulink模型中的觸發子系統。在該子系統中的觸發源是圖1中所示的硬件層外設。

2 MATLAB環境下代碼生成流程
實時工作空間(Real-Time Workshop,RTW)代碼生成流程包含下面幾部分。
①仿真和模型文件(model.mdl)。通過手動添加C語言S函數可以擴展Simulink模型庫。
②中間描述文件(model.rtw)。該文件描述了模型中系統和各模塊以及它們之間的聯系,可以看作是模型文件的分層式的描述庫文件。
③目標語言編譯器(TLC)文件。目標語言編譯器讀取model.rtw文件中的信息,將模型最終轉化成源代碼。
TLC文件有兩種形式,系統TLC文件和模塊TLC文件。前者控制整個模型的代碼生成,比如可以指定模型生成C語言源代碼,而后者僅針對對應的模塊。對每個手動添加的C語言S函數對象,必須有對應的模塊TLC文件,才可用于代碼生成。
④生成的源代碼。圖2中列舉了生成的主要源代碼,其中model.c是model.mdl對應生成的算法源代碼。










評論