基于模型的嵌入式C代碼的實(shí)現(xiàn)與驗(yàn)證
基于模型的設(shè)計(jì)核心是系統(tǒng)模型。MathWorks公司的Simulink產(chǎn)品系列使設(shè)計(jì)人員可以在一個(gè)圖形化的交互環(huán)境中應(yīng)用基于模型的設(shè)計(jì),在該環(huán)境中,設(shè)計(jì)人員還可以利用直觀的模塊圖,對(duì)系統(tǒng)模型和子系統(tǒng)設(shè)計(jì)進(jìn)行可視化處理。在統(tǒng)一的可視化的開(kāi)發(fā)測(cè)試平臺(tái)上,從設(shè)計(jì)概念到實(shí)現(xiàn)一氣呵成,減少了不必要的勞動(dòng),大大縮短項(xiàng)目的開(kāi)發(fā)周期,減少資金投入,提高代碼的穩(wěn)健性、一致性,滿足DO-17B航空電子規(guī)范的工作流程,使基于模型的設(shè)計(jì)能夠?yàn)槟切?duì)安全性、可靠性要求極其嚴(yán)格甚至近乎苛刻的設(shè)計(jì)提供絕好的方案。和基于文本的模型相比,這種圖形化的環(huán)境可以使你更容易理解設(shè)計(jì)和子系統(tǒng)之間的交互。Mathworks公司的Real-Time Workshop Embedded Coder可以將Simuli nk/ Stateflow中的算法模型自動(dòng)轉(zhuǎn)化為嵌入式C代碼,大大降低了嵌入式系統(tǒng)的開(kāi)發(fā)門(mén)檻。開(kāi)發(fā)人員可以在Simulink/Stateflow中建立系統(tǒng)模型,構(gòu)思解決方案,然后使用RTW自動(dòng)生成優(yōu)化的、可移植的、自定義的產(chǎn)品級(jí)C代碼,并根據(jù)特定的目標(biāo)硬件配置自動(dòng)生成嵌入式系統(tǒng)實(shí)時(shí)應(yīng)用程序。
2.2 Matlab中C代碼生成
Matlab中C代碼生成主要有兩種方式。
(1)基于Embedded Matlab
支持從概念到實(shí)現(xiàn)的編程理念,用戶可以從現(xiàn)存或自編的M-code中直接生成高效、可讀的嵌入式C代碼,使編程效率大為提高。
(2)用戶通過(guò)Simulink和有限狀態(tài)Stateflow
Simulink是動(dòng)態(tài)和嵌入式等系統(tǒng)的建模與仿真工具,也是基于模型設(shè)計(jì)的基礎(chǔ)。Simulink自帶了1000多個(gè)用戶模塊,可實(shí)現(xiàn)與有限狀態(tài)機(jī)的無(wú)縫鏈接,擴(kuò)展對(duì)復(fù)雜系統(tǒng)的建模能力。基本上它可以快速地創(chuàng)建基于嵌入式器件的應(yīng)用模型,完成精確的系統(tǒng)模型描述,可以針對(duì)任何能夠用數(shù)學(xué)來(lái)描述的系統(tǒng)進(jìn)行建模,例如動(dòng)力學(xué)系統(tǒng)、控制制導(dǎo)系統(tǒng)、通信系統(tǒng)、船舶及汽車(chē)等。Simulink還提供了豐富的功能塊以及不同的專(zhuān)業(yè)模塊集合,利用Sireulink幾乎可以做到不書(shū)寫(xiě)一行代碼完成整個(gè)動(dòng)態(tài)系統(tǒng)的建模工作。Stateflow狀態(tài)機(jī)基于有限狀態(tài)機(jī)的理論使用自然的、便于理解的形式,使復(fù)雜的邏輯關(guān)系清晰簡(jiǎn)單。一些傳統(tǒng)方法很難實(shí)現(xiàn)的算法利用其建模非常容易,特別適用于對(duì)復(fù)雜的事件驅(qū)動(dòng)系統(tǒng)進(jìn)行建模和仿真。用戶只通過(guò)簡(jiǎn)單直觀的鼠標(biāo)操作,就可以輕而易舉地構(gòu)造出復(fù)雜的系統(tǒng),生成可靠的C代碼。利用RTW-EC等工具為用戶算法自動(dòng)生成嵌入式代碼。這是一種高效、實(shí)用的方法,目前國(guó)內(nèi)外各大公司在進(jìn)行新產(chǎn)品開(kāi)發(fā)時(shí)已廣泛采用。它的核心思想是讓工程師把精力集中于算法的研究上,把枯燥、困難的代碼編寫(xiě)工作留給計(jì)算機(jī)去自動(dòng)完成,這樣可以大大縮短產(chǎn)品的開(kāi)發(fā)周期,同時(shí)避免了人為引入的錯(cuò)誤,降低了風(fēng)險(xiǎn)。
2.3 嵌入式代碼的快速生成
以8051處理器為例,利用Matlab Plug-in Blockset與Stateflow無(wú)縫鏈接,利用RTW-EC工具自動(dòng)生成C代碼,并完成代碼測(cè)試檢驗(yàn)工作。開(kāi)發(fā)環(huán)境:Matlab+Proteus。
首先構(gòu)建stateflow模型并生成代碼。以簡(jiǎn)單的流水燈為例,使用Stateflow構(gòu)建模型Stateflow-model如圖1所示。本文引用地址:http://www.ex-cimer.com/article/149948.htm
模型連接Lightflow model如圖2所示。
模型連接好后,調(diào)整模型配置選項(xiàng)卡參數(shù)。處理器選擇8051系列,ERT.TLC生成代碼選C,生成SIL,生成代碼報(bào)告打勾,其他默認(rèn)。
保存模型,單擊幽按鈕,Matlab將自動(dòng)生成模型代碼。
評(píng)論