新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > Matlab/RTW EC面向MC9S12D64的自動代碼生成

        Matlab/RTW EC面向MC9S12D64的自動代碼生成

        作者: 時間:2016-09-12 來源:網絡 收藏

        摘要:傳統的電控軟件開發模式已無法滿足日益龐大、復雜的汽車電控系統的開發要求,基于模型的開發方法以及自動技術在汽車嵌入式軟件開發中得到越來越廣泛的應用。本文介紹使用Matlab/Real-Time Workshop Embedded Coder(Matlab/)將Simulink控制模型生成C代碼以及生成代碼與Freescale MC9S12D64單片機底層代碼的集成方法,通過測試驗證了生成代碼的有效性。

        本文引用地址:http://www.104case.com/article/201609/305079.htm

        引言

        隨著汽車電子控制系統的日益復雜化,以及用戶對產品安全性、可靠性的要求,嵌入式應用的開發難度與代碼量都在迅速增加。目前,一臺中高檔汽車的軟件控制代碼就超過了500萬行,通用雪佛蘭Volt整車的代碼量超過1 000萬行,而一輛功能先進的醫療急救車甚至需要超過5 000萬行的軟件代碼,而且隨著設計內容的增加、多變的新特征、模糊的設計參數以及用戶不斷增加的需求,程序員的勞動量大大增加,傳統的手工編程方式越來越不能適應現代汽車電控系統的設計開發要求。

        Matlab/Real-Time Workshop Embedded Coder(Matlab/RTW EC)是MathWorks公司提供的嵌入式代碼自動生成工具,它能夠快速地將Matlab/Simulink控制器模型自動生成優化的、可移植的產品級C代碼,并根據特定的目標配置自動生成實時應用程序,從而大大減輕軟件工程師的工作量,縮短的開發周期,提高開發效率。本文以Freescale MC9S12D64單片機為目標芯片,說明從Simulink控制模型生成目標嵌入式代碼的方法。

        1 基于模型的設計

        基于模型的設計是利用計算機建模仿真技術,快速完成嵌入式產品等產品開發過程中核心算法的開發和驗證工作,利用自動技術快速完成產品開發中的邏輯功能、處理算法的實現,同時利用模型的方法構造出被控對象,方便、快捷、大量重復地進行產品控制效果的驗證工作。相比于傳統的開發模式,基于模型的設計開發流程具有以下一些優點:

        ①在統一的開發測試平臺上,讓設計從需求分析階段就開始驗證與確認,并做到持續不斷地驗證與測試,讓設計的缺陷盡量暴露在開發的初級階段。

        ②讓工程師把主要精力放在算法和測試用例的研究上,嵌入式C代碼的生成與驗證留給計算機去自動完成。

        ③模型的復用性好,易于維護和移植。

        ④大大縮短開發周期并降低開發成本。

        Matlab/RTW EC面向MC9S12D64的自動代碼生成

        圖1為基于模型的設計開發流程。在基于模型的設計方法中,系統工程師首先要建立一個系統模型來精確、無歧義地描述用戶的需求,創建一個可執行、可跟蹤的技術規范,并在系統模型與需求之間建立雙向鏈接。在整個開發過程中,工程師利用測試用例追蹤系統級模型和需求,了解系統模型的功能覆蓋度。這些測試通常包括以下三種:

        ①軟件在環測試(Software-in-the-Loop,SIL)是對模型生成的代碼或者手寫代碼進行非實時仿真,目的是為了驗證生成的代碼和模型在功能上的等效性。

        ②處理器在環測試(Processor-in-the-Loop,PIL)是將自動生成的C代碼下載到目標處理器中,與被控對象一起進行非實時的聯合仿真,目的是為了測量模型生成的代碼在目標處理器上的運行時間,即檢查運行速度和資源消耗。

        ③硬件在環測試(Hardware-in-the-Loop,HIL)是把被控對象的模型生成C代碼并編譯成可執行的文件放到工控機上運行,然后把控制器和工控機通過線|連接,實現閉環控制,檢查整個系統功能。

        顯然,算法的實現是聯系系統模型和在環測試驗證的重要紐帶,這其中所涉及的代碼自動生成技術是基于模型開發方法的關鍵技術之一。自動的基本流程包括:運行Model Advisor進行模型檢查、配置代碼生成選項、生成代碼、檢查生成的代碼及報告以及測試生成的代碼等5個環節。

        Matlab/RTW EC面向MC9S12D64的自動代碼生成

        生成代碼的過程如圖2所示。用戶在Matlab/Simulink/Stateflow建立的算法模型經過Simulink編譯器生成rtw中間文件;rtw文件是一個描述整個模型的結構體文本,包含模型中的參數、變量、模塊名稱以及為代碼生成所做的各種配置,rtw文件經過目標語言編譯器(Target Lang uage Compiler,TLC)生成C語言代碼,最后通過C編譯器得到最終的可執行程序。

        2 流水燈模型建立及嵌入式代碼生成

        流水燈Simulink功能驗證模型,通過設置脈沖發生函數的周期和占空比,使LED燈按照一定的時間間隔順時針方向輪流點亮。示意圖略一一編者注。

        將流水燈功能驗證模型中的脈沖生成器和Goto模塊分別使用In、Out模塊替換后得到的自動代碼生成模型如圖3所示。

        Matlab/RTW EC面向MC9S12D64的自動代碼生成

        在Configuration Parameters中對代碼生成過程進行相關的配置并指定變量的數據類型后,Matlab/RTW EC依據上述的流水燈控制模型自動生成了ert_ main.c、LightsCtr.c、LightsCtr.h、LightsCtr_private.h、LightsCtr_types.h、LightsCtr_private.h、rt wty pes.h等6個文件。其中,ert_main.c提供了算法函數調用的樣例程序,它包括main()、rt_OneStep()函數。LightsCtr.c包含了Lights Ct rinitialize()、LightsCtrstep()、LightsCtr_terminate()函數,是整個模型的算法實現代碼。

        3 應用層底層代碼集成

        Matlab/RTW EC生成的應用層代碼和特定芯片的驅動代碼集成目前主要有兩種方式:一種方式是在建模過程中,將驅動程序封裝為S函數模塊,代碼自動生成的過程中建立相應芯片的TLC模板文件,實現一鍵從模型到編澤代碼下載到控制器芯片中。第二種方式是在集成開發環境(Integrated Development Environment,IDE)中手工進行代碼集成。

        在產品化的項目開發中,采用第一種方式集成代碼,需要對底層驅動建模,存在以下的困難:①底層驅動在Simulink環境下不能仿真;②底層驅動建模需要熟悉TLC腳本語言;③產品化項目的底層軟件往往很大,開發一個安全、可靠的底層模塊庫,針對特定的目標板定制TLC文件等,都需要大量的時間投入,不易操作。


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 奇台县| 南京市| 大姚县| 山东省| 安达市| 当雄县| 康乐县| 杭锦旗| 新化县| 娱乐| 鄂伦春自治旗| 武安市| 徐闻县| 黄冈市| 柳州市| 宜城市| 东兴市| 大田县| 本溪市| 班玛县| 砚山县| 南漳县| 盘山县| 深水埗区| 西畴县| 新干县| 大埔区| 微山县| 南开区| 苍山县| 固原市| 依兰县| 崇信县| 凉城县| 临邑县| 吉水县| 沅陵县| 平江县| 雷山县| 宾川县| 定襄县|