前言:想要寫出一篇引人入勝的文章?我們特意為您整理了嵌入式系統(tǒng)下C語言編程軟件設(shè)計架構(gòu)范文,希望能給你帶來靈感和參考,敬請閱讀。
摘要:傳統(tǒng)編程過程中,不僅需要消耗大量時間,同時還會出現(xiàn)軟件資源空間占用率高等問題,為了切實解決這些問題,本研究指出了一種基于嵌入式系統(tǒng)的C語言編程軟件設(shè)計架構(gòu)方法,具體闡述了模塊劃分原則以及重點注意事項,并從分層方向與分層架構(gòu)設(shè)計方法兩個方面分析了分層架構(gòu),依托于中斷服務(wù)程序,完成系統(tǒng)軟件開發(fā)與設(shè)計。
關(guān)鍵詞:嵌入式系統(tǒng);C語言;編程軟件
0引言
C語言在嵌入式軟件開發(fā)中有著非常廣泛的應(yīng)用,這是因為C語言能夠很好的匹配高級與低級語言,同時簡潔高效、靈活便捷,可以實現(xiàn)對硬件的直接操作,然而由于C語言具有較強的靈活性,也導(dǎo)致了代碼管理與維護問題較為繁瑣復(fù)雜[1]。和傳統(tǒng)形式的軟件編程相比較,嵌入式系統(tǒng)編程是以某個相應(yīng)的硬件平臺為載體的,服務(wù)的是一種專用的計算機系統(tǒng),不單單有對硬件操作的復(fù)雜性,同時還表現(xiàn)出應(yīng)用層次的通用性。所以,在實際開展軟件開發(fā)時,選取適宜的軟件框架以及優(yōu)異的設(shè)計方法,加強對項目的工程化管理,可以有效地指導(dǎo)軟件開發(fā)的層次劃分以及功能模塊規(guī)劃設(shè)計。一方面可以很好的提升高級軟件系統(tǒng)開發(fā)速度與質(zhì)量,提高后期執(zhí)行與維護的便捷性,另一方面也可以有效地提升程序代碼的重用性、延伸性以及穩(wěn)定性。為了進一步提高嵌入式系統(tǒng)視域下C語言編程軟件設(shè)計效率與品質(zhì),本文建立在現(xiàn)階段已有的主流軟件工程思想之上,將面向?qū)ο笤O(shè)計技術(shù)、分層技術(shù)等與C語言嵌入式編程結(jié)合起來,深入探討基于嵌入式系統(tǒng)的C語言編程軟件設(shè)計方法、分層架構(gòu)等,為不斷提高編程質(zhì)量與效率提供幫助。
1模塊劃分
模塊劃分主要表示為將某個龐大的、復(fù)雜程度較高的程序依照需要實現(xiàn)的不同功能,將其分割成若干個小段,并確保每一個小段都能夠完成一個相應(yīng)的功能[2]。軟件需要最大程度降低和外部模塊的接觸,進一步改善程序的可移植性能,同時明確其能夠達到的既定功能。通常來說,嵌入式系統(tǒng)涵蓋了兩個方面的模塊,分別是硬件驅(qū)動模塊以及軟件功能模塊[3]。其中一個硬件驅(qū)動模塊往往只與某個特定的硬件相匹配,而在進行軟件功能模塊劃分過程中,應(yīng)當要最大程度符合低耦合、高內(nèi)聚的基礎(chǔ)需求[4]。在進行模塊設(shè)計與開發(fā)以達到不同功能時,需要嚴格遵守兩個關(guān)鍵性原則。(1)模塊的獨立性原則,每一個模塊均是獨立存在的,避免不同功能模塊之間出現(xiàn)信息交互的現(xiàn)象,既不會產(chǎn)生相互之間的影響,同時也不會產(chǎn)生相互之間的依存,任何一個模塊中的函數(shù)指令均不會與其他模塊變量建立聯(lián)系,不同功能模塊之間的連接是建立在函數(shù)接口基礎(chǔ)之上的。(2)正交性原則,所有的功能模塊都是唯一且確定的,而這中間的變量和其要達成的功能是相同的。在實際進行模塊劃分過程中,應(yīng)當要特別重視以下四點注意事項:(1)當一個功能模塊在為其他關(guān)聯(lián)功能模塊提供相關(guān)數(shù)據(jù)以及外部函數(shù)時,應(yīng)當要在頭文件(.h)中特別注明extern字樣進行聲明。(2)某一個功能模塊內(nèi)包含的全局變量以及函數(shù)信息,應(yīng)當要在頭文件(.c)中特別注明static字樣來聲明。(3)當出現(xiàn)某一個功能模塊同時涵蓋有.h文件以及.c文件時,需要在該功能模塊的接口文件中基于(.h)進行聲明。(4)需要特別注意的是,(.h)頭文件中不可以對任何定量進行定義,這是由于定義變量屬于匯編方面的內(nèi)容,會根據(jù)實際要求匹配相應(yīng)的內(nèi)存[5]。
2分層架構(gòu)
2.1分層方向
現(xiàn)階段技術(shù)分層主要涵蓋了兩個大方向,(1)自頂往下的方法,這種方法在當下嵌入式系統(tǒng)應(yīng)用層設(shè)計中有著十分廣泛的應(yīng)用,不僅僅是一種從抽象向具體的開發(fā)模式,同時也是一種基于邏輯總體描述規(guī)范或最上層的程序為出發(fā)點逐步往下拓展的操作模塊。(2)自底層往上的方法,是一種實際功能發(fā)展為抽象概念,這種模式在硬件驅(qū)動開發(fā)與設(shè)計中有著較為普遍的應(yīng)用。先進行功能模塊的探究,確保其能夠?qū)δ繕藨?yīng)用對象產(chǎn)生一定的作用,同時研究普遍使用的操作方式。不管是自頂往下方法,還是自底往上方法,兩者方法都有著各自的優(yōu)勢與劣勢,為了確保能夠獲得理想的效果,在實際進行系統(tǒng)軟件設(shè)計與開發(fā)時,應(yīng)當要在明確軟件實際功能需求的基礎(chǔ)之上,科學合理地使用某一種方法或兩者混合使用。例如在邏輯分析應(yīng)用過程中,應(yīng)當要選取自頂往下的方法,進一步明確功能模塊的邏輯性,降低不同功能模塊的開發(fā)時間,該是模塊執(zhí)行與移植的速度。在進行硬件操作過程中,則需要選用自底往上的方法,充分明確硬件操作規(guī)范,將各個操作從中獨立出來,從而為上層應(yīng)用的模塊移植提供良好的支持。
2.2分層架構(gòu)設(shè)計方法
之所以對架構(gòu)進行分層設(shè)計與開發(fā),其重要目的是為了有效滿足編程過程中不同功能的具體需求,將需要實現(xiàn)的總體功能劃分為若干個獨立子功能,在確保各個子功能可以實現(xiàn)對應(yīng)功能后,再對其進行整合。所以,必須要依照功能需求的不同將代碼轉(zhuǎn)化為各種概念層次的模型,指出不同模塊之間的關(guān)聯(lián)性,之后再進行科學連接,從而確保總體的復(fù)雜功能得到全面實現(xiàn)。在實際進行分層過程中,也需要嚴格依照以下原則進行。(1)在開展分層過程中應(yīng)當要最大程度降低層與層之間的聯(lián)系,既可以避免出現(xiàn)相互影響的問題,也能夠防止層與層之間相互制約,減小模塊的可移植性[6]。當某一個功能層出現(xiàn)故障或者問題時,并不會對整體功能產(chǎn)生較大影響,僅僅會導(dǎo)致具備功能運行不正常。相關(guān)技術(shù)人員在進行故障排查與解決時,也只需要對問題層進行調(diào)整與改進,不會妨礙其他功能層的正常運行。(2)所有功能層都需要為其上一層提供相應(yīng)的支持,同時確保所有層都可以獨自有效解決一個問題,比如頻率收集功能,能夠依照其實現(xiàn)的功能將其劃分為數(shù)據(jù)收集、數(shù)據(jù)分析以及數(shù)據(jù)顯示三個層,每個層之間存在特定的關(guān)聯(lián)性,共同實現(xiàn)模塊功能。(3)最大程度提高各個功能層之間的內(nèi)聚性,同時還需要維持各自之間的低耦合性,對各個模塊內(nèi)部進行規(guī)劃,獲得理想形態(tài)下的模塊,進一步改善模塊的可移植性能。當將模塊功能劃分得十分詳細時,能夠有效降低各個功能模塊實現(xiàn)的難度,然而當劃分出較多數(shù)量的功能模塊時,又會導(dǎo)致復(fù)雜程度越來越高,因此要做到科學規(guī)劃層次與功能模塊,加強對其的調(diào)整與改進,使其達到理想狀態(tài)。嵌入式系統(tǒng)必須要開展面向?qū)ο蟆⑷ブ行幕O(shè)計,在實際進行設(shè)計過程中需要將系統(tǒng)邏輯架構(gòu)劃分為四個層次,分別是應(yīng)用管理層、算法協(xié)議層、功能延伸層以及硬件驅(qū)動層,每個層都有著各自的功能。(1)應(yīng)用管理層主要是進行應(yīng)用功能調(diào)度、顯示界面關(guān)聯(lián)等;(2)算法協(xié)議層的主要功能是數(shù)據(jù)庫訪問、協(xié)議管理和分析、資源整理等;(3)功能延伸層的主要功能是確保不同器件的功能可移植性、接口連接訪問以及器件保持較低耦合性等;(4)硬件驅(qū)動層主要是提供硬件操作源語言,同時確保各個硬件功能的相互獨立性。上述分層方法與原則,合理運用了可達到相似功能的功能模塊,一方面實現(xiàn)了代碼應(yīng)用、算法以及硬件功能間保持較低關(guān)聯(lián)性,另一方面也有效減小了不同功能開發(fā)與達成時的耦合性,防止出現(xiàn)交叉混亂的現(xiàn)象,進一步提高了嵌入式系統(tǒng)程序代碼的簡潔性,表現(xiàn)出更高的應(yīng)用價值。良好的算法必須要能夠支持多個不同的應(yīng)用邏輯模型算法,相應(yīng)的優(yōu)秀的功能模塊也能夠滿足不同應(yīng)用與執(zhí)行環(huán)境的使用需求,從而改善嵌入式系統(tǒng)軟件功能模塊設(shè)計、實施與移植的速度。
3中斷服務(wù)程序
在某些特定情況下,程序往往需要具備立即終止當下正在運行的程序,轉(zhuǎn)而處理其他情況程序的功能,在這種情況下就需要使用到中斷服務(wù)程序,可以在其他情況程序處理結(jié)束之后,再次返回到之前被終止的程序,并確保其從暫停點出發(fā)繼續(xù)運行。在嵌入式系統(tǒng)中中斷服務(wù)程序發(fā)揮了至關(guān)重要的作用,是系統(tǒng)中不可缺失的一部分,由于中斷系統(tǒng)能夠方便、快速地在系統(tǒng)運行中完成中斷操作,轉(zhuǎn)而切換到中斷服務(wù)程序中,同時能夠在第一時間切換回斷點并繼續(xù)保持主程序運行,以此來改善系統(tǒng)的運行速度。此外,中斷服務(wù)程序在不執(zhí)行中斷任務(wù)的情況下,并不會占用系統(tǒng)的運行內(nèi)存,從而有效避免了系統(tǒng)內(nèi)存的浪費,提高系統(tǒng)內(nèi)存的應(yīng)用率。當下已經(jīng)產(chǎn)生了較多的依托于標準C語言的延伸中斷服務(wù)程序,同時產(chǎn)生了一些全新的代表中斷函數(shù)的中心詞語,比如說_interrupt以及#programinterrupt等。在實際開展中斷服務(wù)程序函數(shù)開發(fā)過程中,中斷現(xiàn)場入棧代碼程序以及出棧代碼程序均能夠通過編碼器獲得,同時確保開發(fā)完成的中斷服務(wù)程序滿足以下三項標準要求,分別是中斷服務(wù)程序不可以設(shè)置返回值;不可以為中斷服務(wù)程序提供參數(shù);應(yīng)當最大程度提高中斷服務(wù)程序的簡潔性。
4系統(tǒng)軟件開發(fā)與設(shè)計
4.1基于C語言的面向?qū)ο蠡?/p>
種類的概念一般存在于面向?qū)ο蟮恼Z言中[7]。類是針對特定類數(shù)據(jù)的指定操作的合集。類主要涵蓋了兩個方面,分別是數(shù)據(jù)以及操作[8]。通常情況下面向?qū)ο蠛w了三種特性,分別是封裝、繼承以及多態(tài)。封裝表示為將數(shù)據(jù)與函數(shù)結(jié)合起來形成一個共同體,在實際調(diào)用過程中能夠?qū)崿F(xiàn)兩者的共同調(diào)用。繼承表示為依托于結(jié)構(gòu)嵌套能夠達到對對象屬性繼承的目的。多態(tài)表示在實際進行函數(shù)調(diào)用過程中,可以忽視數(shù)據(jù)調(diào)用途徑。然而在大多數(shù)情況下,為了保障軟件代碼架構(gòu)簡單、操作便捷,往往只進行數(shù)據(jù)和函數(shù)的封裝。此外,在一定情況下還會出現(xiàn)C語言編程過程中,數(shù)據(jù)和函數(shù)之間關(guān)聯(lián)性不強以及結(jié)構(gòu)不合理等問題,C語言模擬面向?qū)ο蟮淖罱K目的便是解決該問題。
4.2模塊重用設(shè)計
通常情況下為了促進C語言代碼的重用,主要運用模塊化的方式來實現(xiàn),一般涵蓋了頭文件以及函數(shù)實現(xiàn)文件,換言之既.h文件以及與之相匹配的.c文件。正常來說有兩種模式進行函數(shù)定義,分別是宏定義以及函數(shù)。首先,宏定義的主要優(yōu)勢體現(xiàn)在可以有效節(jié)省內(nèi)存空間,同時和參數(shù)類型并沒有直接聯(lián)系,但是其也有著自身的缺陷,表現(xiàn)為部分功能難以依托于宏來實現(xiàn)。其次,函數(shù)往往能夠?qū)崿F(xiàn)多種多樣的功能,不僅能夠重復(fù)多次使用,同時也能夠有效接受第三方函數(shù)的數(shù)據(jù),甚至還能夠?qū)⒆罱K運算結(jié)果當成是返回值輸入。
5結(jié)語
綜上所述,嵌入式系統(tǒng)應(yīng)用不斷延伸、更新速度加快,依托于優(yōu)異的軟件設(shè)計架構(gòu),合理的軟件開發(fā)流程,達到產(chǎn)品設(shè)計的重要,降低重復(fù)設(shè)計與探究,可以顯著改善項目開發(fā)速度與品質(zhì)。結(jié)合C語言靈活性特征,開發(fā)適宜的軟件設(shè)計架構(gòu),可以有效強化程序設(shè)計開發(fā)、執(zhí)行以及移植效率,表現(xiàn)出較高的應(yīng)用價值。
作者:孫自立 單位:湖北國土資源職業(yè)學院