<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于SCADE的嵌入式軟件開發(fā)

          基于SCADE的嵌入式軟件開發(fā)

          作者: 時(shí)間:2014-02-12 來源:網(wǎng)絡(luò) 收藏

          同時(shí),為了考慮系統(tǒng)的運(yùn)算時(shí)間問題,通過基本指令步長將實(shí)際的物理時(shí)間離散成指令周期時(shí)間,從而產(chǎn)生了邏輯時(shí)間。這樣,就可以使用邏輯時(shí)間來代替物理時(shí)間,給出運(yùn)算時(shí)間的參考值。

          3.4并發(fā)性

          并發(fā)性概念認(rèn)為系統(tǒng)所有輸入都是并發(fā)的,系統(tǒng)運(yùn)算模塊按照數(shù)據(jù)流動(dòng)執(zhí)行,而且根據(jù),所有模塊的運(yùn)行都是在可以忽略不計(jì)的時(shí)間內(nèi)完成的。其中,沒有輸入輸出關(guān)系的模塊都是并發(fā)執(zhí)行的,有輸入輸出關(guān)系的模塊是按照輸入輸出關(guān)系順序執(zhí)行的。

          并發(fā)性概念進(jìn)一步簡化了系統(tǒng)設(shè)計(jì)的復(fù)雜度,也為系統(tǒng)仿真提供了一種簡化的“運(yùn)行”方式。

          4基于開發(fā)關(guān)鍵技術(shù)

          4.1建模機(jī)制

          基于模型的開發(fā)流程,其基礎(chǔ)就是模型描述問題,也就是尋找一種合適的形式來描述系統(tǒng)。

          根據(jù)的特點(diǎn),可以把其劃分為接口和功能模塊兩部分,功能模塊部分由連續(xù)控制部分與狀態(tài)邏輯部分組成,其輸人輸出端分別為傳感器和執(zhí)行器。的一般結(jié)構(gòu)如圖2所示。

          本文引用地址:http://www.ex-cimer.com/article/256973.htm



          針對(duì)這種劃分,提供了兩套圖形化的建模機(jī)制:數(shù)據(jù)流圖和有限狀態(tài)機(jī)。對(duì)應(yīng)嵌入式軟件結(jié)構(gòu)的劃分,數(shù)據(jù)流圖模型可以用來表示連續(xù)控制部分,主要包括傳感器采樣。信號(hào)處理。復(fù)雜的數(shù)學(xué)邏輯計(jì)算。實(shí)現(xiàn)各種算法等功能;有限狀態(tài)機(jī)模型可以用來表示狀態(tài)邏輯部分,主要包括各種系統(tǒng)狀態(tài)的遷移和工作模式的變化等功能。

          這是一種已被證實(shí)為有效并廣泛使用的嵌入式軟件建模方式之一,能夠簡單有效的描述嵌入式系統(tǒng)。

          4.2需求建模

          一個(gè)復(fù)雜的嵌入式系統(tǒng)的需求建模過程,是一項(xiàng)系統(tǒng)的設(shè)計(jì)工作,一般有自頂向下和自底向上兩種設(shè)計(jì)方式:

          自頂向下的設(shè)計(jì)方式是一種從抽象到具體的過程。它首先需要根據(jù)系統(tǒng)的接口需求,建立系統(tǒng)的黑盒模型;然后根據(jù)系統(tǒng)的功能需求,對(duì)系統(tǒng)進(jìn)行模塊劃分,并層層細(xì)化,直至最低層的功能單元;最后是功能單元的實(shí)現(xiàn)工作。

          自底向上的設(shè)計(jì)方式是一種從具體到抽象的過程。它根據(jù)系統(tǒng)的功能需求,首先實(shí)現(xiàn)的是底層的各個(gè)功能模塊,然后根據(jù)各模塊之間的接口定義,層層組合,最后形成整個(gè)系統(tǒng)模型。

          這兩種設(shè)計(jì)方式在實(shí)際使用中各有優(yōu)劣,可以根據(jù)具體需要組合使用。

          同時(shí),SCADE的建模方式也可以被認(rèn)為是一種基于組件的開發(fā)方式。一個(gè)功能獨(dú)立,接口明確構(gòu)功能算法模型就類似于一個(gè)封裝好的組件,可以直接通過接口調(diào)用。而SCADE軟件開發(fā)環(huán)境的高安全性限制和平臺(tái)無關(guān)性,保證了模型的通用性和重用價(jià)值。這樣,基于成熟算法模型的封裝與重用,可以使軟件開發(fā)變成模型組件的“裝配”,極大的提高軟件生產(chǎn)效率,也減少了引人錯(cuò)誤的可能。

          4.3模型驗(yàn)證手段

          基于嚴(yán)密的建模理論,SCADE提供了一系列基于模型的驗(yàn)證手段,使模型檢查。系統(tǒng)調(diào)試和仿真驗(yàn)證工作都可以在模型層面上完成。其中主要有以下幾項(xiàng):

          (1)靜態(tài)檢查,檢查模型設(shè)計(jì)是否有靜態(tài)語意。語法錯(cuò)誤;(2)模擬仿真,根據(jù)算法設(shè)計(jì)測(cè)試用例,通過仿真器模擬接口輸入輸出,直接“執(zhí)行”模型來實(shí)現(xiàn)仿真的功能;(3)形式驗(yàn)證,根據(jù)需求設(shè)計(jì)的安全特性,通過嘗試在邏輯上尋找反例來檢查模型的安全性;(4)系統(tǒng)原型仿真,通過與其他設(shè)計(jì)工具的橋接,可以實(shí)現(xiàn)系統(tǒng)與模擬外部環(huán)境模型的連接運(yùn)行,方便測(cè)試和需求驗(yàn)證。

          對(duì)于一個(gè)系統(tǒng)模型的驗(yàn)證工作,一般是按照自底向上的順序進(jìn)行的。首先要對(duì)底層功能模塊進(jìn)行驗(yàn)證,由于其結(jié)構(gòu)和接口最為簡單,所以最易于調(diào)試。在所有組成模塊都經(jīng)過充分驗(yàn)證的基礎(chǔ)上,可以繼續(xù)進(jìn)行上一層模型的驗(yàn)證工作,并一步步的遞推至最頂層的系統(tǒng)模型。

          4.4代碼自動(dòng)生成

          SCADE基于嚴(yán)格的數(shù)學(xué)理論和一套形式化方法,能夠確保其代碼和模型的完全一致,并滿足一系列的安全性特征,是完全面向工程的產(chǎn)品代碼。

          SCADE的代碼生成過程提供了多種設(shè)置以滿足各種需求,需要根據(jù)實(shí)際使用需要進(jìn)行配置,一般情況下其產(chǎn)品可以直接嵌人到產(chǎn)品中去而不需要做任何修改。

          5開發(fā)實(shí)例

          依據(jù)上述開發(fā)技術(shù),實(shí)例構(gòu)建某型號(hào)制導(dǎo)炸彈飛控軟件的制導(dǎo)控制模塊,來實(shí)踐基于模型的嵌人式軟件開發(fā)流程。

          5.1開發(fā)流程

          基于SCADE的嵌入式軟件開發(fā)流程,主要工作集中在建模層面,其流程如圖3所示。



          5.2需求分析軟件需求規(guī)格描述如下:

          (1)需要實(shí)現(xiàn)的功能:此模塊為計(jì)算功能模塊,主要根據(jù)慣性系下比例導(dǎo)引指令。彈目相對(duì)位置和彈體姿態(tài)計(jì)算彈體需要實(shí)現(xiàn)的過載指令。

          (2)輸入:慣性系下比例導(dǎo)引指令。彈目相對(duì)位置。炸彈姿態(tài)。

          (3)輸出:彈體導(dǎo)引指令。

          5.3需求建模

          需求建??梢苑譃楦乓O(shè)計(jì)階段和詳細(xì)設(shè)計(jì)階段。概要設(shè)計(jì)階段的主要工作是建立系統(tǒng)模型和模塊分層細(xì)化;詳細(xì)設(shè)計(jì)階段的主要工作是完成具體模塊設(shè)計(jì)。

          在這個(gè)例子中,根據(jù)算法所要實(shí)現(xiàn)的功能首先定義了整個(gè)系統(tǒng)的輸入輸出變量,然后建立系統(tǒng)的黑盒模型,如圖4所示。



          評(píng)論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();