致力于汽車行業(yè)基于模型設(shè)計(jì)流程的實(shí)現(xiàn)以及電控單元開發(fā)方面的技術(shù)咨詢工作。他專注于嵌入式代碼生成、系統(tǒng)集成、模型驗(yàn)證、處理器在環(huán)(PIL)實(shí)現(xiàn)、模型架構(gòu)設(shè)計(jì)以及MBD工具定制等方面的開發(fā)及工具鏈的深入應(yīng)用。在加入邁斯沃克之前,李智慧曾供職于法雷奧、德爾福、中汽中心等公司,有10年的汽車行業(yè)產(chǎn)品開發(fā)經(jīng)驗(yàn)。
圖形化建模是架構(gòu)設(shè)計(jì)普遍使用的方法。而 Simulink 已經(jīng)成為許多系統(tǒng)工程師進(jìn)行架構(gòu)設(shè)計(jì)的利器。不管是在仿真驗(yàn)證階段還是快速原型階段,都可以利用 Simulink 非常方便地對(duì)復(fù)雜控制模型進(jìn)行功能的組織、劃分、調(diào)度等工作。
本文參考 ISO 26262 的要求,同時(shí)考慮 AUTOSAR 代碼生成的兼容性,給出使用 Simulink 實(shí)現(xiàn)軟件架構(gòu)設(shè)計(jì)的一些建議。
應(yīng)用層軟件功能劃分
ISO 26262-6 要求創(chuàng)建層次化結(jié)構(gòu)的軟件組件(Software Components — SWC)。軟件組件應(yīng)滿足規(guī)模適中、高內(nèi)聚、低耦合的要求。軟件組件加上ASIL(Automotive Safety Integration Level,汽車安全完整性等級(jí))的要求就決定了開發(fā)及驗(yàn)證的方法。軟件架構(gòu)中的最小實(shí)體(Entity)就是軟件單元(Software Unit)。
在 AUTOSAR(Automotive Open System Architecture)中,應(yīng)用層軟件由應(yīng)用軟件組件組合(Compositions of Application Software Components)組成。一個(gè)應(yīng)用軟件組件(Application Software Component — ASWC)要符合特定的模板,而且通過虛擬功能總線(Virtual Functional Bus — VFB。)與其他應(yīng)用組件進(jìn)行通信(在控制器內(nèi)部,VBF 的具體實(shí)現(xiàn)是運(yùn)行時(shí)環(huán)境 Run-time Environment — RTE)。Runnable(或可譯為運(yùn)行實(shí)體)是應(yīng)用軟件組件提供的、可以獨(dú)立調(diào)度的最小代碼片段。
【注】在 AUTOSAR 文檔中,軟件組件(通常指的是原子軟件組件 - Atomic Software Component)可以細(xì)分為應(yīng)用軟件組件(Application Software Component)和傳感器-執(zhí)行器軟件組件(Sensor-Actuator Software Component)。本文考慮與 Simulink 建模的相關(guān)性,只講應(yīng)用軟件組件。如果傳感器-執(zhí)行器軟件組件也用 Simulink 建模實(shí)現(xiàn),可以參照應(yīng)用軟件組件開發(fā)方法,在 Simulink 建模層面不強(qiáng)調(diào)其差異性。
不管在 ISO 26262 還是 AUTOSAR 中,對(duì)于軟件單元在層次化結(jié)構(gòu)中的具體定位都沒有明確規(guī)定,實(shí)踐中通常根據(jù)具體軟件架構(gòu)以及應(yīng)用復(fù)雜度而定。
在 ISO 26262 架構(gòu)下,如果某個(gè)軟件組件功能獨(dú)立而且實(shí)現(xiàn)簡單,它本身就可以是一個(gè)軟件單元;如果功能復(fù)雜,則可以進(jìn)一步劃分為幾個(gè)軟件單元。
在 AUTOSAR 中情況類似:一個(gè)應(yīng)用軟件組件可以只包含一個(gè)(也可能是幾個(gè))運(yùn)行實(shí)體,而且功能簡單,那么這個(gè)應(yīng)用軟件組件本身就可以使一個(gè)軟件單元;如果包含多個(gè)運(yùn)行實(shí)體而且功能較為復(fù)雜,每個(gè)運(yùn)行實(shí)體可以是軟件單元;如果某些運(yùn)行實(shí)體的功能非常復(fù)雜,則可以進(jìn)一步將一個(gè)運(yùn)行實(shí)體劃分為幾個(gè)軟件單元來實(shí)現(xiàn)。
在 Simulink 中,功能劃分體現(xiàn)在:將模型虛擬分組來創(chuàng)建抽象層;根據(jù)調(diào)度需求將模塊(block)分組;利用模型引用(Model Reference)來控制模型的規(guī)模。具體的軟件分層類似于以上提到的 AUTOSAR 中的分層。軟件單元通常要求為獨(dú)立模型,以便于單獨(dú)開發(fā)、驗(yàn)證以及管理。其他層次根據(jù)復(fù)雜度而定。
下圖給出了一個(gè) ISO 26262、Simulink、AUTOSAR 三者的映射關(guān)系示例:

該示例表示的是最為復(fù)雜的一種情況:一個(gè)應(yīng)用軟件組件包含多個(gè)復(fù)雜運(yùn)行實(shí)體,而運(yùn)行實(shí)體進(jìn)一步劃分,有多個(gè)軟件單元模型實(shí)現(xiàn)。從上到下都是通過模型引用的方式逐級(jí)展開。以下各個(gè)章節(jié)都是基于這種情況示例。
軟件單元(Software Unit)
使用 Simulink模型來表達(dá)軟件單元
相比于子系統(tǒng)庫而言,一個(gè)模型有自己的仿真及代碼生成配置參數(shù),可以單獨(dú)仿真、測試以及增量式生成代碼。由于模型的使用,多個(gè)軟件單元可以并行開發(fā),并且在配置管理系統(tǒng)中可以單獨(dú)管理。
MathWorks建議
使用模型引用(Model Reference)集成軟件單元
頂層模型(集成模型)只是一個(gè)整體框架,具體的各個(gè)軟件單元通過模型引用連接。在這種架構(gòu)下,利用 Simulink 本身的模型更新(快捷命令 Ctrl+D)功能,可以很容易地完成軟件單元集成后的靜態(tài)驗(yàn)證??梢詸z查軟件單元之間的接口是否匹配,可以檢查軟件單元模型與頂層集成模型配置參數(shù)的兼容性(例如解析器的選擇、硬件相關(guān)設(shè)置等)從而保證代碼生成的一致性。

運(yùn)行實(shí)體(Runnable)內(nèi)部軟件單元(SU)的集成
在頂層模型這一層,Simulink 模塊可以顯示軟件單元的模型信息以及數(shù)據(jù)流和模塊執(zhí)行順序。
MathWorks建議
使用模型引用的方式測試軟件單元
通過頂層模型(Top Model。也可稱之為測試框架 – Test Harness)引用軟件單元模型的方式來進(jìn)行單元測試(Unit Test)。單元測試的基本要求之一是測試人員不可以修改被測單元(不管是模型還是代碼)。所以要建立測試框架,輸入激勵(lì)信號(hào)以及輸出的觀測都要在測試框架環(huán)境下完成。對(duì)于模型,可以采用模型引用(Model Reference)實(shí)現(xiàn)被測模型與測試環(huán)境的獨(dú)立。

模型 SU1 進(jìn)行 PIL 模式單元測試的框架模型
一個(gè)軟件單元模型可以在多種模式下測試驗(yàn)證:
正常仿真模式(Normal Mode)
模型在環(huán)(Model-in-the-loop -- MIL)
軟件在環(huán)(Software-in-the-loop -- SIL)
處理器在環(huán)(Processor-in-the-loop -- PIL)
上圖所示的測試框架模型可以由 Simulink 軟件自動(dòng)生成(上圖由 Simulink Test 生成,也可以根據(jù)實(shí)際需要,由 Simulink Verification and Validation 或者 Simulink Design Verifier 生成類似的測試框架)。工程師只需要根據(jù)功能需求,輸入測試用例(測試數(shù)據(jù)或測試序列)即可。
同樣的測試框架模型以及測試用例可以在各個(gè)測試階段重復(fù)使用:
模型階段 – 正常仿真模式或模型在環(huán) – MIL
在 PC 機(jī)上驗(yàn)證生成的代碼 – SIL
在目標(biāo)處理器上驗(yàn)證生成的代碼 – PIL
Simulink 自帶的仿真數(shù)據(jù)觀測器(Simulation Data Inspector)可以很方便的完成測試數(shù)據(jù)觀測及分析:
不同測試用例數(shù)據(jù)(輸入或輸出)圖形化顯示或?qū)Ρ?/p>
不同測試階段結(jié)果對(duì)比(比如 MIL 和 SIL 對(duì)比,MIL 和 PIL 對(duì)比等)

用仿真數(shù)據(jù)觀測器分析數(shù)據(jù)
此外,Simulink Design Verifier還可以幫助工程師生成一些特定目的的測試數(shù)據(jù)來提高測試覆蓋度。
AUTOSAR運(yùn)行實(shí)體(Runnable)
MathWorks 建議
使用函數(shù)調(diào)用子系統(tǒng)(Function-call Subsystem)
描述運(yùn)行實(shí)體
AUTOSAR 當(dāng)中,一個(gè)運(yùn)行實(shí)體(Runnable)是指一個(gè)原子軟件組件(AUTOSAR Atomic Software Component)提供的最小代碼段,同時(shí)也是一個(gè)可以被單獨(dú)調(diào)度的任務(wù)。函數(shù)調(diào)用子系統(tǒng)提供了調(diào)度控制機(jī)制,可以很容易地實(shí)現(xiàn)模型各個(gè)部分周期性或非周期性的調(diào)度控制。

函數(shù)調(diào)用子系統(tǒng)描述運(yùn)行實(shí)體
每個(gè)函數(shù)調(diào)用子系統(tǒng)由一個(gè)或幾個(gè)互相連接的軟件單元(如圖:運(yùn)行實(shí)體內(nèi)部軟件單元的集成)組成。運(yùn)行實(shí)體間數(shù)據(jù)交互的完整性采用AUTOSAR 運(yùn)行實(shí)體間變量(Interrunnable Variable,簡稱IRV)機(jī)制來保護(hù)。因?yàn)樗泻瘮?shù)調(diào)用由一個(gè)統(tǒng)一的觸發(fā)源產(chǎn)生,所以仿真的時(shí)候不會(huì)產(chǎn)生數(shù)據(jù)完整性問題。
軟件組件(Software Component)
對(duì)于應(yīng)用層軟件來說,ISO 26262當(dāng)中的軟件組件(SWC)對(duì)應(yīng)于 AUTOSAR 中的應(yīng)用軟件組件(ASWC)。
MathWorks建議
采用獨(dú)立模型來描述AUTOSAR應(yīng)用軟件組件(ASWC)
在一個(gè)Simulink模型里將一個(gè)軟件組件對(duì)應(yīng)的所有函數(shù)調(diào)用子系統(tǒng)封裝起來,在用Embedded Coder生成代碼時(shí),這些函數(shù)調(diào)用子系統(tǒng)會(huì)自動(dòng)映射到相應(yīng)的運(yùn)行實(shí)體(Runnable)。
MathWorks建議
要對(duì)應(yīng)用模型架構(gòu)與AUTOSAR 的兼容性進(jìn)行驗(yàn)證
在架構(gòu)設(shè)計(jì)的早期,工程師可以只創(chuàng)建運(yùn)行實(shí)體(Runnable)模型框架,其中的軟件單元(Software Unit)為空模型(只有頂層輸入及輸出,內(nèi)部沒有邏輯及連接,如下圖所示)。

空白的軟件單元模型
Embedded Coder(要求包含 AUTOSAR 支持包)可以分析模型架構(gòu),確認(rèn)各個(gè)應(yīng)用軟件組件(ASWC)是否可以根據(jù) AUTOSAR(指定版本)的要求正確地訪問數(shù)據(jù)接口以及是否可以正確地使用運(yùn)行實(shí)體間變量(IRV)。

AUTOSAR 接口配置驗(yàn)證
軟件單元(Software Unit)集成完成之后,在應(yīng)用軟件組件(ASWC)生成代碼之前,可以利用 Embedded Coder 分析模型的 AUTOSAR 符合性,包括軟件單元(Software Unit)建模正確性分析,比如數(shù)據(jù)的耦合性檢查、全局?jǐn)?shù)據(jù)存儲(chǔ)檢查、全局跳轉(zhuǎn)模塊檢查等等。
Embedded Coder 在生成 C 代碼的同時(shí),還會(huì)生成對(duì)應(yīng)的 arxml 文件,該文件符合指定的 AUTOSAR 版本,可以導(dǎo)入到外部 AUTOSAR 編輯工具(AAT)進(jìn)一步完成系統(tǒng)級(jí)集成。
MathWorks建議
在 Simulink 環(huán)境下完成
AUTOSAR應(yīng)用軟件組件的測試驗(yàn)證
應(yīng)用軟件組件(ASWC)這一級(jí)的集成測試可以完全在 Simulink 的環(huán)境下完成。
為了驗(yàn)證生成的源代碼,Embedded Coder 將生成的代碼編譯打包成 S 函數(shù)(S-Function),創(chuàng)建軟件在環(huán)模塊(SIL block)。由于選擇了 autosar.tlc 作為系統(tǒng)目標(biāo)文件(System Target File),S 函數(shù)運(yùn)行所需要的 AUTOSAR RTE 接口會(huì)自動(dòng)配置(不需要RTE代碼生成)。
軟件在環(huán)(SIL)和處理器在環(huán)(PIL)模塊可以在原始模型測試環(huán)境下直接替換被測模型(采用模型引用配置)。

同一測試環(huán)境完成不同測試
軟件組件(Software Component -- SWC)的層次化結(jié)構(gòu)
MathWorks建議
用虛擬子系統(tǒng)描述應(yīng)用抽象層
ISO 26262 建議采用層次化的結(jié)構(gòu)來組織軟件組件(參照 ISO 26262-6 第 7 章)。在AUTOSAR 中,應(yīng)用軟件組件(ASWC)集成在一起稱為組合(Composition)。在 Simulink 中,采用虛擬子系統(tǒng)對(duì)功能模塊進(jìn)行分組,從而實(shí)現(xiàn)抽象層的概念。組合(Composition)加上被控對(duì)象模型(Plant Model),可以仿真運(yùn)行整個(gè)應(yīng)用系統(tǒng)(下圖省略了調(diào)度部分)。

系統(tǒng)級(jí)模型
在組合層次采用模型引用來集成軟件組件:

組合模型引用軟件組件模型
應(yīng)用軟件調(diào)度
ISO 26262 要求指定每一個(gè)算法塊的調(diào)度方法及執(zhí)行順序。
運(yùn)行實(shí)體(Runnable)內(nèi)部軟件單元(SU)的執(zhí)行順序
MathWorks建議
如果沒有對(duì)具體數(shù)據(jù)的依賴性,要將執(zhí)行順序顯示出來
在函數(shù)調(diào)用子系統(tǒng)(Runnable)內(nèi)部,Simulink可以顯示每個(gè)模型(軟件單元 - SU)的執(zhí)行順序(參考上圖:運(yùn)行實(shí)體內(nèi)部軟件單元的集成)。如果模型之間存在數(shù)據(jù)依賴,Simulink可以自動(dòng)判斷并設(shè)定執(zhí)行順序。如果沒有依賴,Simulink根據(jù)輸出端口編號(hào)給出推薦的執(zhí)行順序,用戶可以通過優(yōu)先級(jí)選項(xiàng)修改執(zhí)行順序。
運(yùn)行實(shí)體的調(diào)度(Scheduling of Runnables)
MathWorks建議
使用Stateflow 或MATLAB模塊創(chuàng)建集中的調(diào)度器
Simulink 中的函數(shù)調(diào)用子系統(tǒng)由函數(shù)調(diào)用事件(Function-call Event)觸發(fā)。可以產(chǎn)生觸發(fā)事件的模塊有 Stateflow、MATLAB 模塊及函數(shù)調(diào)用生成器(Function-call Generator)。為了清楚表達(dá)所有軟件單元復(fù)雜的調(diào)度關(guān)系,建議使用 Stateflow 狀態(tài)圖。

Stateflow 實(shí)現(xiàn)集中化調(diào)度示例
在Stateflow中,時(shí)間邏輯(Temporal Logic)可以用來產(chǎn)生周期性觸發(fā)事件,數(shù)據(jù)輸入端的轉(zhuǎn)移條件可以用來產(chǎn)生非周期觸發(fā)事件。每個(gè)并行狀態(tài)右上角的數(shù)字顯示了該狀態(tài)的執(zhí)行次序。每個(gè)狀態(tài)里的事件列表定義了觸發(fā)的先后順序。
應(yīng)用層通常有許多觸發(fā)事件。為了提高效率,可以用 MATLAB 腳本自動(dòng)創(chuàng)建這樣的調(diào)度器,并且自動(dòng)連接到相應(yīng)的函數(shù)調(diào)用子系統(tǒng)。
軟件集成人員在 AUTOSAR RTE 中進(jìn)行運(yùn)行實(shí)體(Runnable)的運(yùn)行任務(wù)分配時(shí),可以參照用 Stateflow 描述的任務(wù)調(diào)度。反過來,也可以參照 RTE 中的任務(wù)分配調(diào)度,設(shè)計(jì) Stateflow 調(diào)度器。
應(yīng)用層軟件接口
ISO 26262 要求完整定義軟件單元(SU)及軟件組件(SWC)之間的接口。
ISO 26262 建模標(biāo)準(zhǔn)檢查(Model Advisor)可以驗(yàn)證軟件單元建模的合規(guī)性。通過運(yùn)行模型更新檢查功能,Simulink 引擎自動(dòng)檢查接口連接及數(shù)據(jù)定義的正確性。Embedded Coder(包括 AUTOSAR 支持包)可以用來確認(rèn)應(yīng)用軟件組件(ASWC)接口定義是否完整以及是否符合 AUTOSAR 的要求。
Simulink 軟件提供的工具鏈(主要用到算法開發(fā)類、測試驗(yàn)證類、代碼生成類等工具箱)以及開發(fā)方法可以很好地滿足符合 ISO 26262 及 AUTOSAR 要求的應(yīng)用軟件開發(fā)。
-
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
7342瀏覽量
94910 -
調(diào)制解調(diào)器
+關(guān)注
關(guān)注
3文章
887瀏覽量
41054 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4419瀏覽量
67678
發(fā)布評(píng)論請(qǐng)先 登錄
ADC模數(shù)轉(zhuǎn)換實(shí)戰(zhàn):硬件設(shè)計(jì)與軟件開發(fā)要點(diǎn)指南!
融合AI的OpenHarmony應(yīng)用軟件開發(fā):ai學(xué)習(xí)自律輔助軟件
軟件設(shè)計(jì)及串口相關(guān)函數(shù)介紹
使用Simulink自動(dòng)生成浮點(diǎn)運(yùn)算HDL代碼(Part 1)
【匠芯創(chuàng)D133CBS KunLun Pi開發(fā)板試用體驗(yàn)】介紹、環(huán)境搭建
simulink只要運(yùn)行就會(huì)死機(jī)
EasyGo DeskSim軟件基礎(chǔ)功能介紹
嵌入式軟件開發(fā)常用的軟件有哪些?
基于瑞薩64位MPU RZ/G2L進(jìn)行32位應(yīng)用軟件開發(fā)
關(guān)于用 Simulink 開發(fā)應(yīng)用軟件相關(guān)介紹和分享
評(píng)論