專利名稱:一種嵌入式設(shè)備運行方法
技術(shù)領(lǐng)域:
本發(fā)明涉及嵌入式系統(tǒng)領(lǐng)域,特別是涉及一種嵌入式設(shè)備運行方法。
背景技術(shù):
嵌入式系統(tǒng)中 一般都通過語言編碼進行應(yīng)用設(shè)計,這需要設(shè)計者非常熟 悉語言使用規(guī)范和目標(biāo)平臺特性,相對門坎較高, 一旦在調(diào)試中遇到問題, 往往需要在上千行編碼中尋找錯誤的出處,更需要設(shè)計者的耐心和出色的調(diào) 試能力,并花費較長的開發(fā)周期。組態(tài)軟件雖然提供了很好的易用性能,但 靈活性很差,其僅能提供組態(tài)范圍內(nèi)的功能,目標(biāo)系統(tǒng)稍有變化,往往需要 全新設(shè)計,甚至對之無能為力。而嵌入式系統(tǒng)應(yīng)用相對封閉,不同平臺間程 序的移植顯得異常繁瑣。設(shè)計者需要熟悉兩個平臺間的差異并掌握各自對應(yīng) 的語言編碼,而僅僅熟悉不同的平臺和語言編碼使用往往就需要幾個月的時 間,使得開發(fā)時間過長。
部程序的自動生成(通過庫函數(shù)或固化的模塊功能),設(shè)計者往往還需要將生 成的程序與自己開發(fā)的部分連接起來,這一部分工作也為開發(fā)帶來了一定的
負擔(dān)。因此需要研究一種方法可以在投入較小精力的基礎(chǔ)上就能實現(xiàn)不同平
臺設(shè)計間的轉(zhuǎn)換。
發(fā)明內(nèi)容
本發(fā)明的目的為解決上述現(xiàn)有技術(shù)中嵌入式設(shè)備調(diào)試復(fù)雜,在不同平臺 間移植性差的問題,提供一種靈活性高,可以在投入較小精力的基礎(chǔ)上就能
為了實現(xiàn)上述發(fā)明目的,本發(fā)明提供了一種嵌入式設(shè)備運行方法,該嵌
入式設(shè)備包括輸入設(shè)備、狀態(tài)機以及輸出設(shè)備,該方法包括以下步驟a.將 該嵌入式設(shè)備的動作過程繪制成流程圖;b.將流程圖中狀態(tài)機涉及的狀態(tài)繪 制成狀態(tài)圖;c.將每一狀態(tài)圖所表示的狀態(tài)機各部件所處的狀態(tài)及動作繪制 成過程圖;d.將流程圖、狀態(tài)圖、過程圖中的所有圖標(biāo)依次轉(zhuǎn)化成相應(yīng)代碼; e.在該嵌入式設(shè)備上編譯運行所述的代碼。
其中,流程圖主要包括定義輸入設(shè)備和輸出設(shè)備,它們的配置,以及輸 入設(shè)備至狀態(tài)機至輸出設(shè)備的主循環(huán)。狀態(tài)圖描述了在嵌入式設(shè)備運行過程 中狀態(tài)機的狀態(tài)變換過程中的每一個狀態(tài)。狀態(tài)圖中各狀態(tài)間用帶箭頭的連 線表示它們之間的轉(zhuǎn)換,連線上一般會標(biāo)明某種事件表示由該事件引起的狀 態(tài)轉(zhuǎn)換。所述的過程圖定義了所述的嵌入式設(shè)備在這一狀態(tài)內(nèi)的行為。行為 包括輸入設(shè)備和輸出設(shè)備的映射關(guān)系和內(nèi)部任務(wù)的邏輯關(guān)系。
所述的轉(zhuǎn)化過程是依照流程圖層次、狀態(tài)圖層次、過程圖層次依次分層 次進行轉(zhuǎn)化的。流程圖層次的轉(zhuǎn)化過程的初始化部分根據(jù)設(shè)計者選擇的IC類 型、目標(biāo)應(yīng)用類型、系統(tǒng)初始化以及設(shè)計者自定義的初始化生成代碼;輸入 設(shè)備部分根據(jù)設(shè)計者選擇的設(shè)備及其對它的配置生成相應(yīng)的代碼;狀態(tài)機部 分的代碼放在下一層次的代碼生成中;輸出設(shè)備部分根據(jù)設(shè)計者選擇的設(shè)備 及其對它的配置生成相應(yīng)的代碼。狀態(tài)圖層次的轉(zhuǎn)化根據(jù)狀態(tài)機過程生成代 碼,并將生成的代碼插入到主循環(huán)的輸入輸出設(shè)備之間。生成的代碼分兩部
分其一為狀態(tài)轉(zhuǎn)換的代碼,通過各狀態(tài)以及它們之間轉(zhuǎn)換條件的關(guān)系生成 代碼;其二為每一狀態(tài)跳轉(zhuǎn)到對應(yīng)的下一層次代碼的代碼。過程圖層次的轉(zhuǎn) 化過程中逐個過程圖的生成代碼,過程圖主要由各類型模塊和模塊間的連線 組成,連線連接在各模塊各個功能接口之間,傳達了過程圖中數(shù)據(jù)/控制流的
關(guān)系,過程圖轉(zhuǎn)化過程如下1.收集所有模塊的輸入輸出點的相互連接關(guān)系 并保存;2.將所有的模塊按生成順序排序,排序的依據(jù)是輸入輸出的依賴關(guān) 系,如果模塊只有輸出,那么與該輸出點連接的所有輸入點都設(shè)為已解決狀 態(tài),并將該模塊順序加入到已排序的序列中,同時在原來的序列中移除;如 果模塊的所有輸入點都被設(shè)為已解決狀態(tài),則將它所有的輸出點設(shè)為已解決 狀態(tài),將所有與該模塊的輸出相連的輸入點設(shè)為已解決狀態(tài),并順序加入到 已排序的序列中;否則查下一個模塊繼續(xù),直到所有的模塊都從原先的序列 中轉(zhuǎn)移到新的序列中;3.按順序生成各自的代碼整個過程圖的代碼都由按 前述排序好的模塊生成的代碼順序組成,代碼組成的程序從上自下的執(zhí)行, 總體上按照排序的模塊順序執(zhí)行;4.模塊間的連線和接口由調(diào)用/返回代碼實 現(xiàn)。
所述的流程圖下一層次還引入與狀態(tài)圖處于同一層次的前面板圖,該前 面板圖可供用戶編輯和配置輸入輸出設(shè)備,同時也提供設(shè)計者進行邏輯驗證 的平臺。
本發(fā)明結(jié)合了語言編程的靈活性和組態(tài)設(shè)計的直觀易用性,設(shè)計者進行 開發(fā)時較少涉及到具體應(yīng)用平臺的特性,不同平臺間的設(shè)計應(yīng)用帶來的差異 對于流程圖狀態(tài)圖這些設(shè)計要素來說相關(guān)性很小,只需在設(shè)備庫或代碼庫中 加以切換就能夠在投入較小精力的基礎(chǔ)上實現(xiàn)不同平臺設(shè)計間的轉(zhuǎn)換。
圖l是本發(fā)明的流程圖2是本發(fā)明的狀態(tài)圖3是本發(fā)明的過程圖4是本發(fā)明的前面板圖。
具體實施例方式
下面結(jié)合附圖和具體實施方案,對本發(fā)明作進一步的說明。 本發(fā)明提供一種嵌入式設(shè)備運行方法,這種方法基于一個全新的圖形化 開發(fā)環(huán)境,它專門用于幫助工程師進行嵌入式設(shè)備應(yīng)用程序的設(shè)計,利用直 觀的貼近程序流程圖的開發(fā)環(huán)境,結(jié)合了語言編程的靈活性和組態(tài)軟件的易 用性縮短開發(fā)時間。由底層提供的各模塊固化了特定的程序功能(組態(tài)特性), 而程序的邏輯關(guān)系(程序流)則由用戶在圖形開發(fā)界面上指定(編程特性),程 序流的關(guān)系決定了所開發(fā)的程序的執(zhí)行過程。最后在該嵌入式設(shè)備上編譯運 4亍該程序。
首先將目標(biāo)應(yīng)用劃分為若干層次來逐一描述,由整體特性到局部細節(jié), 并提取嵌入式設(shè)備運用的特點,給出從流程圖入手,以狀態(tài)圖描述為核心, 并在過程圖中完成細節(jié)功能的定義。在完成所有圖示的定義后,自動代碼生 成方法逐一讀取/分析流程圖,狀態(tài)圖,及各個過程圖的定義,開始整個應(yīng)用 程序的代碼自動生成,請參閱圖1,圖l是本發(fā)明的流程圖。在嵌入式設(shè)備中,流程圖一般反映 了目標(biāo)應(yīng)用最上層次的行為,同時也是執(zhí)行代碼的主循環(huán),本發(fā)明利用流程 圖為導(dǎo)向接受用戶的應(yīng)用描述,用戶在這一層次上規(guī)定目標(biāo)運用最基本的表
象行為,主要包括定義輸入輸出設(shè)備以及完成對它們的配置/屬性。應(yīng)用程序 遵循流程圖完成從輸入設(shè)備^狀態(tài)機/內(nèi)部過程—輸出設(shè)備的主循環(huán)。
圖2是本發(fā)明的狀態(tài)圖。狀態(tài)圖描述為本發(fā)明的核心,這與一般嵌入式 設(shè)備中(尤其是控制類應(yīng)用系統(tǒng)中)狀態(tài)機是其系統(tǒng)的核心是一致的。狀態(tài) 圖進一步描述了應(yīng)用程序的細節(jié),它描述了在目標(biāo)應(yīng)用中輸入輸出設(shè)備間內(nèi) 部的狀態(tài)變換過程(也可能維持前一狀態(tài))。狀態(tài)圖中包含初始狀態(tài)和各其它 狀態(tài),各狀態(tài)間的帶箭頭的連線表示它們之間的轉(zhuǎn)換,連線上一般會表明某 種事件(例如由于某輸入設(shè)備的一個動作引起了該事件)表示由該事件引起的 狀態(tài)轉(zhuǎn)換。應(yīng)用程序的每次主循環(huán)都在輸入設(shè)備掃描完成后進行一次狀態(tài)判 斷,由前一狀態(tài)及當(dāng)前事件在狀態(tài)圖中確定下一狀態(tài)。當(dāng)下一狀態(tài)確定后, 該狀態(tài)確定為當(dāng)前狀態(tài),并進入相對應(yīng)的內(nèi)部過程。內(nèi)部過程結(jié)束后,進行 本次主循環(huán)的輸出設(shè)備動作。隨后周而復(fù)始的重復(fù)該主循環(huán)。
圖3是本發(fā)明的過程圖。過程圖進一步詳細描述了應(yīng)用程序處于各狀態(tài) 時的行為細節(jié)。在狀態(tài)圖中的每個狀態(tài)都對應(yīng)一個過程圖,該過程圖定義了 應(yīng)用程序在這一狀態(tài)內(nèi)的行為/動作。這其中包括先前定義的輸入設(shè)備和輸出 設(shè)備的映射關(guān)系和一些內(nèi)部任務(wù)的邏輯關(guān)系。為了表達這些內(nèi)部關(guān)系,本發(fā) 明引入一些基本模塊類似于語言編程中的基本語句, 一些高級模塊類似于組 態(tài)設(shè)計中的可配置的功能塊,以及映像自輸入輸出設(shè)備的設(shè)備模塊,再結(jié)合 表示數(shù)據(jù)流/控制流關(guān)系的連線,讓用戶能夠快速直觀的描述該過程內(nèi)應(yīng)用程 序的功能。
除了上面所述的幾種圖示外,本發(fā)明還引入前面板圖,前面板圖處于流 程圖下一層次,前面板圖可供用戶編輯和配置輸入輸出設(shè)備,同時也提供設(shè)
計者進行邏輯驗證的平臺。如圖4所示。用戶在其中編輯和配置輸入輸出設(shè)備,同時前面板圖也是提供設(shè)計者進行邏輯驗證的平臺。
在完成所有圖示的定義后,自動代碼生成方法逐一讀取/分析流程圖,狀
態(tài)圖,及各個過程圖的定義,開始整個應(yīng)用程序的代碼自動生成,方法如下 流程圖層次的代碼生成根據(jù)圖1提供的流程圖過程,生成代碼。初始 化部分較簡單,只需根據(jù)設(shè)計者選擇的IC類型,目標(biāo)應(yīng)用類型,系統(tǒng)初始化 以及設(shè)計者自定義的初始化筒單的生成代碼;輸入設(shè)備部分根據(jù)設(shè)計者選擇 的設(shè)備及其對它的配置生成特定的代碼(例如,對于鍵盤設(shè)備則生成鍵盤掃 描程序的代碼),這部分代碼生成的組態(tài)性更強,開放給設(shè)計者的配置選項都 能在代碼庫中有所反映,只需從代碼庫中'搬,出對應(yīng)的代碼即可;接下來得狀 態(tài)機部分的代碼放在下一層次的代碼生成中;輸出設(shè)備部分代碼生成與輸入 部分類似。整體來看自動生成代碼的順序以一種自然的順序生成。
狀態(tài)圖層次的代碼生成根據(jù)圖2提供的狀態(tài)機過程,生成代碼,并將 生成的代碼插入到主循環(huán)的輸入輸出設(shè)備之間。此部分代碼主要分兩部分 其一為狀態(tài)轉(zhuǎn)換的代碼,通過各狀態(tài)以及它們之間轉(zhuǎn)換條件的關(guān)系可以相對 容易的生成代碼,例如根據(jù)前一狀態(tài)和當(dāng)前的事件生成分支結(jié)構(gòu)的代碼來確 定下一狀態(tài);其二就是狀態(tài)確定后設(shè)之為當(dāng)前狀態(tài),可以同樣利用分支結(jié)構(gòu) 的代碼跳轉(zhuǎn)到對應(yīng)的過程圖代碼中。
過程圖層次的代碼生成根據(jù)圖3提供的過程圖,逐個流程圖的生成代 碼。流程圖主要由各類型模塊和模塊間的連線組成,連線連接在各模塊各個 功能接口之間,傳達了過程圖中數(shù)據(jù)/控制流的關(guān)系??梢岳靡恍┧惴óa(chǎn)生 過程圖代碼。如下提供一實例算法作舉例說明
1、 收集連接信息并保存(所有模塊的輸入輸出點的相互連接關(guān)系)
2、 將所有的模塊按生成順序排序,排序的依據(jù)是輸入輸出的依賴關(guān)系。
如果模塊只有輸出,那么與該輸出點連接的所有輸入點都設(shè)為已解決狀態(tài)
(resolved),并將該模塊順序加入到已排序的序列中。同時在原來的序列中移除。
如果模塊的所有輸入點都被設(shè)為resolved,則將它所有的輸出點設(shè)為 resolved/將所有與該模塊的輸出相連的輸入點設(shè)為resolved,并順序加入到已 排序的序列中。否則查下一個模塊繼續(xù)。直到所有的模塊都從原先的序列中 轉(zhuǎn)移到新的序列中。
3、 按順序生成各自的代碼整個過程圖的代碼都由按前述排序好的模塊 生成的代碼順序組成,程序從上自下的執(zhí)行,總體上按照排序的模塊順序執(zhí) 行。
4、 模塊間的連線和接口由調(diào)用/返回代碼實現(xiàn)。
在各個層次的代碼生成后,在該嵌入式設(shè)備上編譯運行所述的代碼實現(xiàn) 該嵌入式設(shè)備的功能。
以上介紹的僅僅是基于本發(fā)明的較佳實施例,并不能以此來限定本發(fā)明 的范圍。任何對本發(fā)明的方法作本技術(shù)領(lǐng)域內(nèi)熟知的部件的替換、組合、分 立,以及對本發(fā)明實施步驟作本技術(shù)領(lǐng)域內(nèi)熟知的等同改變或替換均不超出 本發(fā)明的揭露以及保護范圍。
權(quán)利要求
1、一種嵌入式設(shè)備運行方法,所述的嵌入式設(shè)備包括輸入設(shè)備、狀態(tài)機以及輸出設(shè)備,其特征在于該方法包括以下步驟a.將該嵌入式設(shè)備的動作過程繪制成流程圖;b.將流程圖中狀態(tài)機涉及的狀態(tài)繪制成狀態(tài)圖;c.將每一狀態(tài)圖所表示的狀態(tài)機各部件所處的狀態(tài)及動作繪制成過程圖;d.將流程圖、狀態(tài)圖、過程圖中的所有圖標(biāo)依次轉(zhuǎn)化成相應(yīng)代碼;e.在該嵌入式設(shè)備上編譯運行所述的代碼。
2、 如權(quán)利要求1所述的一種嵌入式設(shè)備運行方法,其特征在于所述的流程圖 主要包括定義輸入設(shè)備和輸出設(shè)備,它們的配置,以及輸入設(shè)備至狀態(tài)機至 輸出設(shè)備的主循環(huán)。
3、 如權(quán)利要求1所述的一種嵌入式設(shè)備運行方法,其特征在于所述的狀態(tài)圖
4、 如權(quán)利要求1所述的一種嵌入式設(shè)備運行方法,其特征在于所述的狀態(tài)圖 中各狀態(tài)間用帶箭頭的連線表示它們之間的轉(zhuǎn)換,連線上一般會標(biāo)明某種事 件表示由該事件引起的狀態(tài)轉(zhuǎn)換。
5、 如權(quán)利要求1所述的一種嵌入式設(shè)備運行方法,其特征在于所述的過程圖 定義了所述的嵌入式設(shè)備在這一狀態(tài)內(nèi)的行為。
6、 如權(quán)利要求5所述的一種嵌入式設(shè)備運行方法,其特征在于所述的行為包 括輸入設(shè)備和輸出設(shè)備的映射關(guān)系和內(nèi)部任務(wù)的邏輯關(guān)系。
7、 如權(quán)利要求1所述的一種嵌入式設(shè)備運行方法,其特征在于步驟d所述的轉(zhuǎn)化過程是依照流程圖層次、狀態(tài)圖層次、過程圖層次依次分層次進行轉(zhuǎn)化 的。
8、 如權(quán)利要求7所述的一種嵌入式設(shè)備運行方法,其特征在于流程圖層次的 轉(zhuǎn)化過程的初始化部分根據(jù)設(shè)計者選擇的IC類型、目標(biāo)應(yīng)用類型、系統(tǒng)初始化以及設(shè)計者自定義的初始化生成代碼;輸入設(shè)備部分根據(jù)設(shè)計者選擇的設(shè) 備及其對它的配置生成相應(yīng)的代碼;狀態(tài)機部分的代碼放在下一層次的代碼 生成中;輸出設(shè)備部分根據(jù)設(shè)計者選擇的設(shè)備及其對它的配置生成相應(yīng)的代碼。
9、 如權(quán)利要求7所述的一種嵌入式設(shè)備運行方法,其特征在于狀態(tài)圖層次的 轉(zhuǎn)化根據(jù)狀態(tài)機過程生成代碼,并將生成的代碼插入到主循環(huán)的輸入輸出設(shè) 備之間。
10、 如權(quán)利要求9所述的一種嵌入式設(shè)備運行方法,其特征在于所述的生成 的代碼分兩部分其一為狀態(tài)轉(zhuǎn)換的代碼,通過各狀態(tài)以及它們之間轉(zhuǎn)換條 件的關(guān)系生成代碼;其二為每一狀態(tài)跳轉(zhuǎn)到對應(yīng)的下一層次代碼的代碼。
11、 如權(quán)利要求7所述的一種嵌入式設(shè)備運行方法,其特征在于過程圖層次 的轉(zhuǎn)化過程中逐個過程圖的生成代碼,過程圖主要由各類型模塊和模塊間的 連線組成,連線連接在各模塊各個功能接口之間,傳達了過程圖中數(shù)據(jù)/控制 流的關(guān)系,過程圖轉(zhuǎn)化過程如下(1、 收集所有^f莫塊的輸入輸出點的相互連接關(guān)系并保存;(2、 將所有的模塊按生成順序排序,排序的依據(jù)是輸入輸出的依賴關(guān)系, 如果模塊只有輸出,那么與該輸出點連接的所有輸入點都設(shè)為已解決狀態(tài),并將該模塊順序加入到已排序的序列中,同時在原來的序列中移除;如果模塊的所有輸入點都被設(shè)為已解決狀態(tài),則將它所有的輸出點設(shè)為已解決狀態(tài),將所有與該模塊的輸出相連的輸入點設(shè)為已解決狀態(tài),并順序 加入到已排序的序列中;否則查下一個模塊繼續(xù),直到所有的模塊都從原先的序列中轉(zhuǎn)移到新的序列中; (3. 按順序生成各自的代碼整個過程圖的代碼都由按前述排序好的模塊 生成的代碼順序組成,代碼組成的程序從上自下的執(zhí)行,總體上按照排序的 模塊順序執(zhí)行; (4. 模塊間的連線和接口由調(diào)用/返回代碼實現(xiàn)。
12、如權(quán)利要求1所述的一種嵌入式設(shè)備運行方法,其特征在于所述的流程 圖下一層次還引入與狀態(tài)圖處于同一層次的前面板圖,該前面板圖可供用戶 編輯和配置輸入輸出設(shè)備,同時也提供設(shè)計者進行邏輯驗證的平臺。
全文摘要
一種嵌入式設(shè)備運行方法,所述的嵌入式設(shè)備包括輸入設(shè)備、狀態(tài)機以及輸出設(shè)備,其特征在于該方法包括以下步驟a.將該嵌入式設(shè)備的動作過程繪制成流程圖;b.將流程圖中狀態(tài)機涉及的狀態(tài)繪制成狀態(tài)圖;c.將每一狀態(tài)圖所表示的狀態(tài)機各部件所處的狀態(tài)及動作繪制成過程圖;d.將流程圖、狀態(tài)圖、過程圖中的所有圖標(biāo)依次轉(zhuǎn)化成相應(yīng)代碼;e.在該嵌入式設(shè)備上編譯運行所述的代碼。該方法不僅縮短了開發(fā)周期,易于在不同平臺間移植。
文檔編號G06F9/44GK101196810SQ20061011935
公開日2008年6月11日 申請日期2006年12月8日 優(yōu)先權(quán)日2006年12月8日
發(fā)明者勵 嚴(yán) 申請人:中穎電子(上海)有限公司