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