自動(dòng)代碼生成,在此前的文章中說到了QM是一個(gè)自動(dòng)生成代碼的工具,這樣的代碼就好用嗎?
你是否用過或者寫過這樣的代碼自動(dòng)生成腳本,如果代碼可以生成,生成的代碼又不好用只能參考,是不是有點(diǎn)雞肋呢?
本想說到這個(gè)問題,但是在此之前,我們又有必要先了解一下QM這個(gè)軟件,它是怎么自動(dòng)生成代碼的,原理是什么,好不好用。
QM是什么?
QM(QP Modeler) 是一款免費(fèi)軟件,基于模型設(shè)計(jì)(MBD) 和自動(dòng)代碼生成工具,用于基于分層狀態(tài)機(jī)(UML 狀態(tài)圖)和事件驅(qū)動(dòng)的 QP 實(shí)時(shí)嵌入式軟件框架 (RTEF), QM 可用于 Windows、Linux 和 MacOS 主機(jī)。
有什么作用?
QM 基于模型的設(shè)計(jì)工具的主要目標(biāo)是:
-
將軟件分解為稱為活動(dòng)對(duì)象的事件驅(qū)動(dòng)組件
-
以圖形方式設(shè)計(jì)與這些活動(dòng)對(duì)象關(guān)聯(lián)的分層狀態(tài)機(jī)
-
自動(dòng)生成具有生產(chǎn)質(zhì)量且可從您的設(shè)計(jì)中完全追溯的代碼
QM從根本上說是一個(gè)面向?qū)ο蟮墓ぞ?,與目標(biāo)編程語(yǔ)言無關(guān),面向?qū)ο笠馕吨?QM 模型從根本上由類組成,并且只有類才能擁有與其關(guān)聯(lián)的狀態(tài)機(jī)。
QM看起來如何?
QM是一個(gè)跨平臺(tái)的桌面應(yīng)用程序,以下顯示了QM中執(zhí)行的典型活動(dòng):
-
在 QM 中使用分層狀態(tài)機(jī)
-
在 QM 中生成代碼
-
設(shè)計(jì)一個(gè)子機(jī)器來捕獲 QM 中的常見行為
-
自定義 QM 用戶界面(深色主題)
QM有什么特別之處?
QM的主要設(shè)計(jì)目標(biāo)是簡(jiǎn)單和最大限度地減少與工具斗爭(zhēng)的需要,下面描述的幾種方式實(shí)現(xiàn)了這一點(diǎn)。
簡(jiǎn)單
與當(dāng)今市場(chǎng)上的大多數(shù)其他高級(jí)建模工具相比,QM更簡(jiǎn)單、以代碼為中心且級(jí)別相對(duì)較低(不是貶義的)。
這意味著QM明確地將設(shè)計(jì)直接映射到C或C 代碼,狀態(tài)機(jī)執(zhí)行的所有動(dòng)作都直接用 C 或 C 輸入到模型中;沒有“平臺(tái)無關(guān)模型”(PIM)、“平臺(tái)特定模型”(PSM)、復(fù)雜的“模型轉(zhuǎn)換”或“動(dòng)作語(yǔ)言”。
內(nèi)置 QP 框架
與大多數(shù)其他能夠生成代碼的工具一樣,QM創(chuàng)建的模型基于事件驅(qū)動(dòng)的實(shí)時(shí)嵌入式框架,這樣的框架提供了明確定義的“框架擴(kuò)展點(diǎn)”,旨在將框架定制到應(yīng)用程序中,從而為生成代碼提供明確定義的規(guī)則。
然而,QM的大部分簡(jiǎn)單性在于:它帶有內(nèi)置的 QP 框架系列,而不是支持開放式的框架和編程語(yǔ)言,另一個(gè)簡(jiǎn)化方面是 QM 是一種嚴(yán)格的前向工程工具(不應(yīng)編輯生成的代碼),不嘗試支持往返工程。
捕捉物理設(shè)計(jì)
QM是市場(chǎng)上獨(dú)特的基于模型的設(shè)計(jì)工具,可以將代碼的物理設(shè)計(jì)作為模型的一個(gè)組成部分,即將代碼劃分為目錄和文件,例如頭文件 (.h) 和實(shí)現(xiàn)文件(.c 或 .cpp 文件)。
這種獨(dú)特的方法可以使我們靈活控制源代碼結(jié)構(gòu),減少了對(duì)生成的代碼進(jìn)行手動(dòng)更改,此外,QM提供了在模型和生成的代碼之間快速來回切換的機(jī)制,以便任何更改都可以方便地直接應(yīng)用于模型而不是代碼。
不再是“與工具作斗爭(zhēng)”
QM的主要設(shè)計(jì)目標(biāo)是盡可能地尊重設(shè)計(jì)決策,不僅在生成代碼的物理設(shè)計(jì)方面,而且在安排狀態(tài)和路由轉(zhuǎn)換的確切細(xì)節(jié)方面。
比如當(dāng)我們花了很多時(shí)間安排狀態(tài)和路由轉(zhuǎn)換之后,如果突然改變圖表排列的工具或者有新的變更需求,那么肯定會(huì)有很多麻煩的事情。
在QM中繪制分層狀態(tài)圖需要考慮很多,且具有創(chuàng)新性,例如,QM 不使用“偽狀態(tài)”,比如初始偽狀態(tài)或選擇點(diǎn);相反,QM 分別使用更高級(jí)別的初始轉(zhuǎn)換和選擇段原語(yǔ);這極大地簡(jiǎn)化了狀態(tài)圖,我們不需要單獨(dú)定位偽狀態(tài)然后連接它們。
此外,QM 為內(nèi)部轉(zhuǎn)換引入了新的表示法,它允許實(shí)際繪制內(nèi)部轉(zhuǎn)換(在標(biāo)準(zhǔn) UML 表示法中,內(nèi)部轉(zhuǎn)換只是狀態(tài)體中的文本)。這種表示法能夠?qū)?nèi)部轉(zhuǎn)換或者常規(guī)狀態(tài)轉(zhuǎn)換附加到單個(gè)選擇點(diǎn),彌補(bǔ)了標(biāo)準(zhǔn)UML的缺陷。
后記
自動(dòng)生成代碼工具很多,大家可以自行了解,當(dāng)然QP中QM的使用也就很關(guān)鍵了,本文先介紹一下其表,在下一篇中將回到深層次一點(diǎn)的問題,歡迎持續(xù)關(guān)注。
???????????????? END ????????????????
本文將討論常見的調(diào)試問題以及預(yù)防和檢查這些故障問題的一些方法。從歷史角度上來看,嵌入式應(yīng)用代碼的調(diào)試流程可以分為兩類。第一類調(diào)試流程是回答 “我的代碼現(xiàn)在執(zhí)
關(guān)鍵字: 嵌入式系統(tǒng) 調(diào)試 系統(tǒng)軟件 實(shí)時(shí)嵌入式摘要:為滿足對(duì)安全關(guān)鍵領(lǐng)域日益增長(zhǎng)的可靠性需求,提出一種基于松耦合多處理器體系結(jié)構(gòu)的雙機(jī)容錯(cuò)實(shí)時(shí)嵌入式系統(tǒng)設(shè)計(jì)方案。該方案無縫整合了計(jì)算機(jī)硬件級(jí)、操作系統(tǒng)級(jí)、應(yīng)
關(guān)鍵字: 嵌入式系統(tǒng) 系統(tǒng)設(shè)計(jì) 雙機(jī) 實(shí)時(shí)嵌入式摘要:介紹了實(shí)時(shí)操作系統(tǒng)μC/OS-II的特點(diǎn)和內(nèi)核結(jié)構(gòu),并首次實(shí)現(xiàn)了μC/OS-II在摩托羅拉處理器MPC555上的移植,介紹了移植后OS的應(yīng)用方法。 關(guān)鍵詞:μC/OS-I...
關(guān)鍵字: 移植 實(shí)時(shí)嵌入式 嵌入式操作系統(tǒng) μC/OS-II嵌入式實(shí)時(shí)操作系統(tǒng)在目前的嵌入式應(yīng)用中用得越來越廣泛,尤其在功能復(fù)雜、系統(tǒng)龐大的應(yīng)用中顯得愈來愈重要。人們要求實(shí)時(shí)嵌入式產(chǎn)品能夠提供更為強(qiáng)勁的計(jì)算能力,以滿足無
關(guān)鍵字: 實(shí)時(shí)系統(tǒng) 混合任務(wù) 動(dòng)態(tài)電壓調(diào)節(jié) 實(shí)時(shí)嵌入式摘要:介紹PB0技術(shù)及其特點(diǎn),這種技術(shù)支持軟件重用和動(dòng)態(tài)可重配置;分析其應(yīng)用于航空航天器等實(shí)時(shí)裝入式軟件開發(fā)過程中的優(yōu)勢(shì)與困難。關(guān)鍵詞:軟件重用 動(dòng)態(tài)可重配置 實(shí)時(shí)裝
關(guān)鍵字: 嵌入式軟件 軟件開發(fā) 實(shí)時(shí)嵌入式 實(shí)時(shí)系統(tǒng)21ic訊 為滿足日益挑剔的最終用戶的需求,消費(fèi)電子、工業(yè)級(jí)汽車信息娛樂市場(chǎng)迅猛發(fā)展,系統(tǒng)設(shè)計(jì)人員需要性能更高的處理器,此類處理器要運(yùn)行豐富的用戶界面,同時(shí)不影響實(shí)時(shí)
關(guān)鍵字: 顯示器 飛思卡爾 實(shí)時(shí)嵌入式 I.MX開放實(shí)時(shí)嵌入式軟件平臺(tái)TOPPERS的研究現(xiàn)狀
關(guān)鍵字: 嵌入式軟件 軟件平臺(tái) 實(shí)時(shí)嵌入式 TOP實(shí)時(shí)嵌入式系統(tǒng)軟件調(diào)試常見問題分析
關(guān)鍵字: 嵌入式系統(tǒng) 系統(tǒng)軟件 調(diào)試 實(shí)時(shí)嵌入式實(shí)時(shí)嵌入式系統(tǒng)軟件調(diào)試常見問題分析
關(guān)鍵字: 嵌入式系統(tǒng) 系統(tǒng)軟件 調(diào)試 實(shí)時(shí)嵌入式實(shí)時(shí)嵌入式系統(tǒng)模型校驗(yàn)技術(shù)
關(guān)鍵字: 嵌入式系統(tǒng) 系統(tǒng)模型 實(shí)時(shí)嵌入式 LEVEL