色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 牛人業(yè)話 > 編寫代碼太累?試試基于模型的設(shè)計(jì)

          編寫代碼太累?試試基于模型的設(shè)計(jì)

          作者:paradoxfx 時(shí)間:2013-11-25 來源:電子產(chǎn)品世界 收藏

            前一陣參加了公司一個(gè)關(guān)于基于模型的設(shè)計(jì)的講座,先介紹了基于模型的設(shè)計(jì)model based design,然后是親自動(dòng)手體驗(yàn);感覺很有意義,特別是其中的生成,所以在此和大家分享一下。

          本文引用地址:http://cafeforensic.com/article/192595.htm

            聽起來,自動(dòng)生成代碼好像是專門為不想多動(dòng)手的工程師準(zhǔn)備的工具。其實(shí),生成最早是做為基于模型的設(shè)計(jì)方法的一部分提出的。一般情況下,系統(tǒng)軟件的開發(fā)分為需求定義、功能設(shè)計(jì)、代碼編寫和測試等幾個(gè)階段,測試、找和解決往往要花費(fèi)很多的精力,特別是越是隱藏的深的越難發(fā)現(xiàn)和解決,隱患也很大。所以每次在傳統(tǒng)方法下發(fā)現(xiàn)和解決bug造成的發(fā)布延時(shí)都會(huì)造成整個(gè)修復(fù)成本的指數(shù)級(jí)上升。而采用基于模型的設(shè)計(jì),則可以在設(shè)計(jì)的早期通過仿真等手段保證模型的正確性,例如在仿真環(huán)境下,我們的模型能夠完全實(shí)現(xiàn)我們的意圖,然后生成和驗(yàn)證就是水到渠成的問題了。

            其次,基于模型的設(shè)計(jì)在復(fù)雜和非常復(fù)雜的系統(tǒng)中特別有意義。他們舉了幾個(gè)例子,例如在高檔的汽車上,全部代碼預(yù)估已經(jīng)達(dá)到千萬行、甚至兩千萬行的級(jí)別了,這么多代碼要是靠手工編寫和測試,首先需要幾十個(gè)幾百個(gè)人的編程和測試團(tuán)隊(duì)不說,光是溝通的效率就很難保證了;基于模型的設(shè)計(jì)方法則可以有效解決這個(gè)問題。目前在汽車行業(yè),這種模式已經(jīng)成為主流的開發(fā)方法了,在航空航天等領(lǐng)域也得到了很廣泛的應(yīng)用,例如著名的F-22戰(zhàn)斗機(jī)和“好奇號(hào)”火星車都使用了基于模型的設(shè)計(jì)方法。例如講座中提到,火星車的開發(fā)中,使用了380000次仿真,這要是按照傳統(tǒng)的測試方法去一遍遍做,估計(jì)整個(gè)團(tuán)隊(duì)都要吐血身亡了。

            此外,開發(fā)一個(gè)復(fù)雜系統(tǒng)要花費(fèi)大量的時(shí)間,新系統(tǒng)開發(fā)時(shí)從現(xiàn)有系統(tǒng)中復(fù)用現(xiàn)有的代碼是省事實(shí)力的?;谀P偷脑O(shè)計(jì)方法因?yàn)槭褂媚P蛥⒖颊{(diào)用的方法引用子系統(tǒng),所以代碼的移植和復(fù)用非常方便。例如例如講座中提到,F(xiàn)35戰(zhàn)斗機(jī)有A、B、C三種型號(hào),在開發(fā)過程中,可以重復(fù)使用的系統(tǒng)設(shè)計(jì)模型就顯著提高了開發(fā)效率。

            接下來講講我所理解的基于模型設(shè)計(jì)的開發(fā)過程:

            1. 系統(tǒng)需求

            不管用啥開發(fā)方法,最終要完成的系統(tǒng)是一樣的,所以系統(tǒng)需求并沒有什么顯著區(qū)別。只不過Simulink開發(fā)工具可以在建模中將模型與需求文檔進(jìn)行關(guān)聯(lián),方便快速查看模型功能與需求文檔之間是否有偏差。

            2. 建模

            就是在Simulink環(huán)境中把我們需要的功能用模塊搭建起來,例如控制系統(tǒng)、通信系統(tǒng)等,基于圖形化的編程還是較為直觀和容易的,并且仿真測試很快就能得到結(jié)果了。

            3. 代碼生成

            模型有了,這一步就是超級(jí)吸引人的了,直接把模型生成C代碼,多方便的功能。當(dāng)然有一些規(guī)范要定義的,包括一些ISO的標(biāo)準(zhǔn);而且如果我們使用的處理器被Simulink支持的話,在生成代碼的時(shí)候還可以直接針對代碼優(yōu)化,例如我們的目標(biāo)對象是TI的一個(gè)DSP,則一些數(shù)學(xué)運(yùn)算在生成代碼時(shí)會(huì)直接調(diào)用BootROM里的數(shù)學(xué)庫,相比于傳統(tǒng)的C語言math.h里面的標(biāo)準(zhǔn)數(shù)學(xué)庫,運(yùn)行速度要強(qiáng)的多;常用的DSP、ARM等基本都是支持的。

            4. 軟件在環(huán)測試

            硬件在環(huán)測試HIL大家可能都聽說過,不過軟件在環(huán)測試SIL貌似是個(gè)比較新鮮的概念。它的含義就是把生成的c代碼調(diào)用到仿真環(huán)境中,輸入是與仿真的那步是一樣的,這樣就能比較生成的代碼和我們的模型是否有結(jié)果的差異。當(dāng)然幾乎是不會(huì)出現(xiàn)什么狀況的。

            5. 硬件在回路測試

            這一步很多人都不陌生,就是把生成的代碼下載到實(shí)際的控制器中,觀測返回的結(jié)果是不是和我們的仿真模型是一致的。

            試驗(yàn)了一下,生成代碼的效率還不錯(cuò),可讀性也很好,如果覺得編程太累了,可以嘗試一下。當(dāng)然有一些功能在Simulink里面實(shí)現(xiàn)還是暫時(shí)有困難的,例如實(shí)時(shí)操作系統(tǒng)的任務(wù)調(diào)度,目前還很難實(shí)現(xiàn)出來,所以可以把功能劃分一下,一部分控制系統(tǒng)、通信系統(tǒng)的代碼使用這種方法,其它的則還需要手工編寫,然后通過接口進(jìn)行協(xié)同工作。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          c語言相關(guān)文章:c語言教程




          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉