www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 消費(fèi)電子 > 消費(fèi)電子
[導(dǎo)讀]為了能夠同時在16位或8位中小型CPU上使用實(shí)時操作系統(tǒng)和基于UML的可視化圖形程序設(shè)計(jì)方法進(jìn)行應(yīng)用程序設(shè)計(jì),在此詳細(xì)討論了將一種新式嵌入式實(shí)時UML框架程序設(shè)計(jì)平臺移植到TMS320LF2407上全部過程。

通過狀態(tài)機(jī)部件、基礎(chǔ)框架、任務(wù)管理內(nèi)核和跟蹤調(diào)試器的移植證明了這種平臺在中小型CPU上運(yùn)行的可行性、便捷性和高可靠性等優(yōu)點(diǎn)。最后,通過航天相機(jī)控制器應(yīng)用程序設(shè)計(jì)實(shí)例中各個任務(wù)線程的執(zhí)行時間測量結(jié)果及可調(diào)度結(jié)果進(jìn)一步驗(yàn)證了該平臺的實(shí)用性。

0 引言

隨著高級編程語言和操作系統(tǒng)在越來越多種類的CPU構(gòu)架上的應(yīng)用,系統(tǒng)應(yīng)用程序變得越來越大,越來越復(fù)雜。并且實(shí)際應(yīng)用大多對于程序的設(shè)計(jì)周期、可靠性都具有很高的要求?;趥鹘y(tǒng)的嵌入式實(shí)時操作系統(tǒng)的軟件設(shè)計(jì),雖然可使程序的實(shí)時性能得到提高,但是并行程序設(shè)計(jì)過程中存在著更多的競爭狀態(tài),而且這些競爭狀態(tài)極難被發(fā)現(xiàn)。如何能夠找到一種符合軟件工程學(xué)的程序設(shè)計(jì)方法成為每個嵌入式軟件工程師所面臨的問題。

傳統(tǒng)的實(shí)時操作系統(tǒng)雖然可以完成任務(wù)管理,但是往往代碼量較大,任務(wù)切換要求復(fù)雜,完全摒棄編譯器提供的程序調(diào)用機(jī)制,采用任務(wù)堆棧機(jī)制,接口程序設(shè)計(jì)要求高,實(shí)現(xiàn)任務(wù)切換時占用資源較大,不適合應(yīng)用于8位和16位總線構(gòu)架的CPU上。

另一方面,基于UML 的實(shí)時框架程序設(shè)計(jì)方法對于當(dāng)今的高復(fù)雜性、短開發(fā)周期的商業(yè)環(huán)境來說變得越來越重要。主要是因?yàn)閁ML 語言是可執(zhí)行的,所以根據(jù)UML 建立的系統(tǒng)行為模型可以生成可執(zhí)行代碼,從而節(jié)約了從抽象模型到手工編寫可執(zhí)行代碼的費(fèi)時、費(fèi)力的工作量。但是所有的UML 代碼生成工具是為類似PC上應(yīng)用而設(shè)計(jì)的,不適合應(yīng)用于中小型的CPU,且售價(jià)昂貴。

如果將RTOS的實(shí)時性與UML模型設(shè)計(jì)的直觀性、安全性和便捷性相結(jié)合,應(yīng)用于中小規(guī)模的CPU 芯片無疑會給深度嵌入式系統(tǒng)開發(fā)帶來更多的手段。

1 實(shí)時UML 框架程序設(shè)計(jì)平臺(QP)簡介

QP是使用實(shí)時搶占式任務(wù)管理內(nèi)核、基于UML狀態(tài)圖的軟件設(shè)計(jì)方法的輕量級軟件平臺,是一種新式操作系統(tǒng)。QP軟件平臺結(jié)構(gòu)如圖1所示由以下4個部件組成。

1.1 任務(wù)管理內(nèi)核(QK)

QK也采用了類似其他商業(yè)內(nèi)核的優(yōu)先級的搶占機(jī)制以保證關(guān)鍵任務(wù)得到實(shí)時執(zhí)行。但是QK 實(shí)現(xiàn)搶占的原理有別于任何一種操作系統(tǒng)。QK采用的是Moore狀態(tài)機(jī)的“運(yùn)行到結(jié)束”的機(jī)制,因此當(dāng)系統(tǒng)還在忙于處理前較低優(yōu)先級事件時,當(dāng)較高優(yōu)先級的事件到來時,系統(tǒng)將新事件存儲在消息隊(duì)列中,直到低優(yōu)先級事件完成后,再執(zhí)行新事件。QK 的實(shí)現(xiàn)原理不同于傳統(tǒng)RTOS的堆棧操作,僅使用C 語言編譯器的中斷服務(wù)程序(ISR)機(jī)制就可完成。也就是QK的移植完全不需要插入額外的匯編語句。所以,任務(wù)切換時沒有額外的開銷,執(zhí)行速度快,相當(dāng)于子程序調(diào)用。當(dāng)然如果使用其他RTOS 的任務(wù)管理功能也能代替QK,稍候在QP 到TMS320LF2407的接口程序設(shè)計(jì)部分介紹。

 

 

1.2 基礎(chǔ)框架平臺

該框架平臺完成了驅(qū)動事件管理功能、狀態(tài)機(jī)架構(gòu)管理和實(shí)時任務(wù)管理功能。

實(shí)時UML框架序設(shè)計(jì)平臺(QF)中任務(wù)是由能實(shí)現(xiàn)輕量級UML狀態(tài)機(jī)和用來接收觸發(fā)事件的消息隊(duì)列組成。因此基于實(shí)時UML框架的任務(wù)具有UML狀態(tài)機(jī)的特點(diǎn)。QF 將任務(wù)分為激活狀態(tài)和休眠狀態(tài),QF 根據(jù)觸發(fā)事件和任務(wù)優(yōu)先級對其進(jìn)行管理。實(shí)際工作時任務(wù)間采用異步的事件發(fā)送和接收機(jī)制進(jìn)行通信。任務(wù)使用消息隊(duì)列接收其他活動對象的事件消息;同時,不同任務(wù)產(chǎn)生的事件也會利QF投送給其他訂閱該消息的任務(wù)。對于觸發(fā)事件的交換,排隊(duì),收集,銷毀等工作則由QF統(tǒng)一完成??梢?,任務(wù)間通過QF框架進(jìn)行間接通信,實(shí)現(xiàn)了事件松耦合。因此,基于QF的程序設(shè)計(jì)可以采用模塊化的設(shè)計(jì)方法,給設(shè)計(jì)過程中方案的修改和設(shè)計(jì)后期的軟件維護(hù)提供了極大的方便。正像使用UML 的自動設(shè)計(jì)工具軟件進(jìn)行程序設(shè)計(jì)的過程一樣,使用QF的程序設(shè)計(jì)也遵循以下過程:使用UML語義進(jìn)行模型設(shè)計(jì),根據(jù)QP平臺代碼轉(zhuǎn)換方法將UML模型轉(zhuǎn)化為源代碼。

總之,基于QF的程序設(shè)計(jì)實(shí)現(xiàn)了可視化程序設(shè)計(jì)和“自動”代碼生成的目的;另外,在嵌入式系統(tǒng)中也可以將QF當(dāng)作為一個軟件總線,將QF的接口移植到其他OS之上,以隱藏下層硬件和軟件的差異。

1.3 狀態(tài)機(jī)部件(QEP)

上節(jié)提到的QF任務(wù)的狀態(tài)機(jī)的特性是由狀態(tài)機(jī)部件(QEP)完成的。QEP是一個簡化的輕量級的UML狀態(tài)機(jī)部件,實(shí)現(xiàn)了狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)換觸發(fā)事件響應(yīng)等功能。QEP提供了兩種狀態(tài)機(jī)類型:層次化狀態(tài)機(jī)(HSM)和平面狀態(tài)機(jī)(FSM)。

1.4 跟蹤調(diào)試器(QSPY)

QSPY 使用緩存機(jī)制采集系統(tǒng)內(nèi)運(yùn)行狀態(tài),事后在空閑任務(wù)時再編碼輸出,再有在整個QP 平臺中QSPY調(diào)試插件有機(jī)的與系統(tǒng)關(guān)鍵運(yùn)行環(huán)節(jié)有機(jī)的結(jié)合在一起,因此基于QSPY的調(diào)試可以獲得更多的系統(tǒng)的信息的同時又不會過多地干擾程序的正常運(yùn)行。在這一點(diǎn)上比傳統(tǒng)RTOS中的跟蹤調(diào)試器更領(lǐng)先一步。

2 QP 到TMS320LF2407 的接口移植

QP存在C和C++版本。基于C語言版本的精簡版QP平臺的代碼量可以在4 KB左右,可以輕易的放入到大多數(shù)的小規(guī)模CPU的片上存儲器中。并且該平臺的實(shí)現(xiàn)原理如上節(jié)所述可以使用C編譯器實(shí)現(xiàn)[4],因此移植工作量極少,僅需幾十行的C語言程序就可完成。顯然在諸如TMS320LF2407 的中小型的CPU 上更適合使用基于C 的版本。QP 移植主要的工作集中在改寫qep_port.h,qf_port.h,qf_port.c,qk_port.h 和qs_port.h 這4 個文件。

2.1 QEP的接口移植

QEP 完成了狀態(tài)機(jī)的實(shí)現(xiàn)機(jī)制。配置和移植QEP需修改qep_port.h頭文件中關(guān)于各種數(shù)據(jù)類型和主要參數(shù)的定義。其中主要的有Q_ROM,Q_ROM_VAR 和QEP_SIGNAL_SIZE 三個宏定義。Q_ROM 宏是用來定義常變量到程序存儲區(qū)域的,比如使用較大的表或數(shù)組等常數(shù)時不希望占用RAM資源時,將其定義在程序區(qū),可以使用Q_ROM宏。定義方法根據(jù)不同的編譯器而不同,比如在Keil C51 中Q_ROM 被定義為code 關(guān)鍵字。

Q_ROM_VAR 宏用來定義如何采用指針類型取程序存儲器變量。QEP_SIGNAL_SIZE 宏用來定義信號寬度,通常為1,2或4.針對TMS320LF2407的硬件結(jié)構(gòu)特點(diǎn)定義了8位、16位和32位有符號和無符號數(shù)的類型。

2.2 QF的接口移植

QF 的移植主要集中在對于狀態(tài)機(jī)和任務(wù)管理方面。在qf_port.h 中根據(jù)實(shí)際的軟件需求修改狀態(tài)機(jī)實(shí)現(xiàn)相關(guān)的定義,例如觸發(fā)事件的類型、事件隊(duì)列的深度和事件緩存的容量。QF中事件初始位置存放在事件緩存區(qū)中,所有的任務(wù)間的事件傳遞使用指針方式進(jìn)行,從而有效地減少了事件傳遞對內(nèi)存的開銷。任務(wù)管理方面定義了最大任務(wù)數(shù)、中斷嵌套相關(guān)的定義以及任務(wù)切換的機(jī)制。

在pf_port.c中需要編寫有關(guān)諸如QF平臺開始和退出代碼,如無特殊需要這些函數(shù)可以使用空函數(shù)代替。

QP平臺中對于程序的運(yùn)行關(guān)鍵位置使用了斷言手段進(jìn)行約束,在平臺運(yùn)行異常時會給出診斷信息。在pf_port.c 的Q_assert_handler()函數(shù)可以返回平臺錯誤信息。

2.3 QK的接口移植

QP平臺的任務(wù)調(diào)度機(jī)制在QK中完成。因此QK的移植需要根據(jù)TMS320LF2407 的編譯工具進(jìn)行接口函數(shù)的設(shè)計(jì)。所有調(diào)度相關(guān)的定義在qk_port.h 頭文件中。其中主要的是中斷相關(guān)的定義,如:開關(guān)中斷的機(jī)制和中斷響應(yīng)程序的進(jìn)入和退出機(jī)制等。

QK 中使用QK_INT_KEY_TYPE,QK_INT_LOCK(key_),QK_INT_UNLOCK(key_)三個宏接口定義了中斷開關(guān)機(jī)制。其中QK_INT_KEY_TYPE 定義了中斷嵌套時中斷優(yōu)先級傳遞參量類型。QK_INT_LOCK(key_)定義了關(guān)中斷的機(jī)制,QK_INT_UNLOCK(key_)定義了開中斷的機(jī)制。在TMS320LF 因?yàn)樵赥MS320LF2407 的C 編譯器中沒有直接對ST0、ST1 寄存器進(jìn)行操作的方法,此處使用嵌入?yún)R編實(shí)現(xiàn)中斷使能和中斷禁止功能。還有,在TMS320LF2407 中具有中斷優(yōu)先級管理器,因此中斷傳遞參數(shù)類別QK_INT_KEY_TYPE在本移植中不用定義。

QP 中中斷服務(wù)程序相當(dāng)于最高優(yōu)先級的任務(wù),因此中斷的進(jìn)入動作QK_ISR_ENTRY()和退出動作QK_ISR_EXIT()需要特殊規(guī)定:QK_ISR_ENTRY(pin,ISR_PRIO):首先是,將當(dāng)前QK 優(yōu)先級保存到變量pin上;然后將當(dāng)前QK的優(yōu)先級ISR_PRIO改變?yōu)樽罡邇?yōu)先級別;最后使能中斷。QK_ISR_EXIT(pin)中斷服務(wù)程序退出動作的過程是:關(guān)中斷,清中斷寄存器結(jié)束中斷標(biāo)記,從變量pin中恢復(fù)以前的優(yōu)先級,調(diào)用QK的任務(wù)切換函數(shù)進(jìn)行任務(wù)調(diào)度。

需要注意,TMS320LF2407 中斷有2 種類型:一種由事件管理模塊管理,不需要使用程序清中斷標(biāo)志位,如定時器,計(jì)數(shù)器,PWM 等設(shè)備;另一種需要任務(wù)清中斷標(biāo)記,如串行外設(shè)接口(SPI)、串行通信接口(SCI)、CAN 總線等。所以在中斷退出時需要分別處理,一般在BSP中進(jìn)行。[!--empirenews.page--]

2.4 QS 的接口移植

QS 完成了軟件系統(tǒng)運(yùn)行信息的收集和輸出功能。

QS移植需要修改qs_port.h文件。其中定義了系統(tǒng)信息緩存區(qū)的深度,定義了在空閑時系統(tǒng)信息的輸出方式等。

3 基于QP 的航天相機(jī)控制器控制軟件的實(shí)例通過上節(jié)所述的構(gòu)建過程QP 平臺被移植到了TMS320LF2407上,下面通過某航天相機(jī)控制器的控制軟件的設(shè)計(jì)實(shí)例說明基于QP的軟件架構(gòu)設(shè)計(jì)過程和實(shí)際運(yùn)行結(jié)果。

3.1 基于QP的航天相機(jī)控制器的軟件設(shè)計(jì)

基于QP 平臺的軟件設(shè)計(jì)過程完全采用UML 的圖形可視化方法。使用用例圖分析軟件任務(wù)、需求。使用類圖描述軟件架構(gòu)。使用活動圖或順序圖描述軟件結(jié)構(gòu)中的對象間的消息交換細(xì)節(jié)。使用順序圖與狀態(tài)圖描述軟件系統(tǒng)對象間的行為轉(zhuǎn)換。如圖2中描述了航天相機(jī)控制器軟件總體架構(gòu)的狀態(tài)轉(zhuǎn)換圖。

 

 

其中分為4個狀態(tài),正常工作時系統(tǒng)在程控模式和正常模式間轉(zhuǎn)換,觸發(fā)信號為程控結(jié)束和E5.4 信號。

在正常模式內(nèi)部又有工況參數(shù)輪詢和攝像2種模式,通過相應(yīng)的觸發(fā)信號系統(tǒng)在兩種狀態(tài)間轉(zhuǎn)換。另外E5.1.1到E5.1.7信號為內(nèi)部轉(zhuǎn)換觸發(fā)信號。

3.2 軟件源程序的生成

在QP中有關(guān)狀態(tài)機(jī)的所有的要素,如狀態(tài)、層次狀態(tài)、狀態(tài)轉(zhuǎn)換、輸入事件觸發(fā)和輸出事件觸發(fā)均可以對應(yīng)為固定的源代碼,在將活動對象轉(zhuǎn)化為源代碼時幾乎無需編程人員的參與。例如,對于狀態(tài)機(jī)中的狀態(tài),QP中使用帶有事件參數(shù)指針的函數(shù)來表示,其返回值指向另一個QP狀態(tài)。對于信號的傳遞采用指針消息隊(duì)列來表示。

3.3 控制器軟件的測試結(jié)果

由于使用了QS動態(tài)調(diào)試手段,所以可以在最為接近全速運(yùn)行的狀態(tài)下收集軟件運(yùn)行信息。如圖3所示控制器采集模擬量工況參數(shù)場景的實(shí)測各個觸發(fā)事件發(fā)生的時間信息,時間刻度為1 μs.

 

 

如圖3中所示模擬量遙測任務(wù)在t1時刻執(zhí)行,采集系統(tǒng)內(nèi)的模擬量參數(shù)。采集完成后在t2時刻向系統(tǒng)“發(fā)布”數(shù)據(jù)信號量。在t4時刻“訂閱”了數(shù)據(jù)信號的數(shù)據(jù)合成任務(wù)得以執(zhí)行。在數(shù)據(jù)合成任務(wù)以某種方式對數(shù)據(jù)打包編碼后,在t5 時刻向系統(tǒng)“發(fā)布”打包后的數(shù)據(jù)消息。最后通訊任務(wù)在t6時刻,將打包數(shù)據(jù)通過數(shù)據(jù)鏈路輸出。對于模擬遙測任務(wù),t1 為任務(wù)執(zhí)行的起始時刻,t3 為任務(wù)結(jié)束時刻,任務(wù)執(zhí)行時間可由下面表達(dá)式(1)來描述。

 

 

根據(jù)上面的測量方法可以統(tǒng)計(jì)一個軟件運(yùn)行周期內(nèi)所有任務(wù)的執(zhí)行時間,下表是本相機(jī)控制器軟件在2 s的運(yùn)行周期內(nèi),常規(guī)工況下,所有任務(wù)執(zhí)行時間的統(tǒng)計(jì)結(jié)果。

 

 

通過上表可見,QP 平臺完成了軟件中各個任務(wù)的管理工作,但是QP 平臺對于系統(tǒng)資源的占用時間極少。另外采用速率單調(diào)調(diào)度[1](RMS)算法可以看到本應(yīng)用軟件是完全可調(diào)度系統(tǒng)。通過上面講述的工作后,證明整個系統(tǒng)已經(jīng)能夠正常運(yùn)行,移植成功。

4 結(jié)論

綜上,QP下的程序設(shè)計(jì)完全是基于可視化的UML狀態(tài)圖方式,因此提高了程序設(shè)計(jì)的效率,縮短了設(shè)計(jì)周期,并且減少了不確定的、無法預(yù)測的狀態(tài)從而加強(qiáng)了軟件的安全性;QP 的實(shí)現(xiàn)原理有別于傳統(tǒng)的RTOS,因此QP具有緊湊的代碼結(jié)構(gòu),代碼量小,QP的代碼量非常少,即使是在所有的功能都被使能的情況下也只有4 K左右[1],更適合于深度的嵌入式系統(tǒng)。

因此,在完成了QP 平臺在TMS320LF2407 上的構(gòu)建的同時也證明了基于實(shí)時UML狀態(tài)機(jī)的應(yīng)用軟件是完全可以在中小型CPU上運(yùn)行的。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉