劉林芳
(長沙華中涉外職業(yè)高中 湖南省長沙市 410000)
嵌入式系統(tǒng)是一種可以獨(dú)立、自主運(yùn)行的計算機(jī)器件,其特點(diǎn)在于其中的軟硬件可裁剪。嵌入式系統(tǒng)主要由軟件及硬件兩部分組成,C 語言是其軟件功能開發(fā)過程中應(yīng)用最為廣泛的一種計算機(jī)語言[1-2]。
C 語言計算的靈活性較高,且管理與維護(hù)較為容易,可在很大程度上提高嵌入式系統(tǒng)編程軟件的拓展性和高效性。為此,設(shè)計嵌入式系統(tǒng)中C 語言編程軟件的重要性不言而喻[3]。
目前,常用的編程軟件主要有文獻(xiàn)[4]中提出的基于ZYNQ-7000 的遠(yuǎn)距無線時間同步系統(tǒng)的C 語言編程軟件設(shè)計方法和文獻(xiàn)[5]中提出的基于C 語言技術(shù)的計算機(jī)軟件編程設(shè)計方法。但在實際的應(yīng)用中發(fā)現(xiàn),上述傳統(tǒng)方法存在編程過程耗時長、軟件空間資源占用率高、運(yùn)行準(zhǔn)確率低的問題,使得其可靠性大大降低。
為有效解決傳統(tǒng)方法存在的不足,本研究設(shè)計了一種嵌入式系統(tǒng)中C 語言編程軟件設(shè)計方法,以期為嵌入式系統(tǒng)的發(fā)展提供可靠、有效的技術(shù)支持。
伴隨著現(xiàn)代計算機(jī)技術(shù)的飛躍式發(fā)展,嵌入式系統(tǒng)的功能性也越來越強(qiáng)大,與此同時,其技術(shù)性也逐漸變得愈加復(fù)雜[6-8]。因此,為有效提高嵌入式系統(tǒng)軟件部分的開發(fā)以及運(yùn)行效果,本研究提出對其展開層次架構(gòu)設(shè)計。
本研究以層次化劃分為理念,將嵌入式系統(tǒng)中編程軟件部分規(guī)劃為不同的層次架構(gòu),每個架構(gòu)對應(yīng)不同的軟件模塊,與此同時確定模塊與模塊間的關(guān)聯(lián)性。層次架構(gòu)的設(shè)計思路如下:
(1)本研究將嵌入式系統(tǒng)的層次架構(gòu)劃分為數(shù)據(jù)整理層、分析處理層以及功能展示層三個主要的部分,各層次架構(gòu)之間的功能呈現(xiàn)出漸進(jìn)的關(guān)系。應(yīng)用過程中,注重嵌入式系統(tǒng)各個功能模塊的協(xié)調(diào)性和層次性,針對相同的問題,對不同的層次架構(gòu)均可提供有效的處理方案,上一層次架構(gòu)的運(yùn)行需依靠下一層次架構(gòu)的支撐;
(2)保障嵌入式系統(tǒng)軟件模塊功能的高內(nèi)聚與低耦合,在劃分其層次架構(gòu)的過程中,按照任務(wù)分析、功能選擇、重用程度的順利實現(xiàn);
(3)盡可能地降低層次架構(gòu)與層次架構(gòu)間的相關(guān)性,以此來避免因某一層次架構(gòu)發(fā)生故障而對整個嵌入式系統(tǒng)軟件模塊產(chǎn)生影響。
本研究設(shè)計的嵌入式系統(tǒng)軟件模塊層次架構(gòu)設(shè)計方法的步驟如下:
步驟一:按照遞進(jìn)式的方式對嵌入式系統(tǒng)的功能需求展開分析,并將其抽象化,從而確定嵌入式系統(tǒng)的概念層次,再將概念層次變化為軟件層次。上述步驟是一個明確功能需求并將其變化為開發(fā)設(shè)計需求的過程[9-10];
步驟二:按照反向遞進(jìn)式的方式對嵌入式系統(tǒng)硬件部分的功能需求展開分析,并將其抽象化,從而細(xì)化出必要的嵌入式系統(tǒng)硬件環(huán)境操作原語。針對嵌入式系統(tǒng)來說,規(guī)模龐大的開發(fā)過程是通過軟件編程設(shè)計來實現(xiàn)系統(tǒng)硬件的各項功能的過程。封裝硬件功能能夠有效降低嵌入式系統(tǒng)開發(fā)過程的繁雜性,同時也可以提高嵌入式系統(tǒng)軟件編程代碼的復(fù)用性[11-12];
步驟三:按照遞進(jìn)式和反向遞進(jìn)式相融合的方式,逐級檢查相鄰的兩個層次架構(gòu)間的調(diào)用關(guān)系,在此基礎(chǔ)上,保障二者間數(shù)據(jù)交流的暢通性,從而保障每一個層次架構(gòu)上的調(diào)用都有效;
步驟四:對嵌入式系統(tǒng)軟件模塊的每一個層次架構(gòu)的功能實施整合處理,優(yōu)化其各項功能,以此來達(dá)到軟件模塊最優(yōu)化,這一過程也是對軟件編程代碼重用的最優(yōu)選擇過程。
在上述設(shè)計嵌入式系統(tǒng)層次架構(gòu)的基礎(chǔ)上,利用C 語言技術(shù)對其中的編程軟件展開設(shè)計。
盡管標(biāo)準(zhǔn)的C 語言開發(fā)過程缺少軟件框架管理,但結(jié)合上述設(shè)計的嵌入式系統(tǒng)層次架構(gòu),可建立嵌入式系統(tǒng)的管理原則,從而提高對編程代碼的組織管理和調(diào)控開發(fā)能力。
3.1.1 代碼管理
首先按照層次劃分的原理對代碼目錄實施組織管理,主程序代碼以及頭文 件置于根目錄中,其余文件置于其余文件夾中,文件名的格式要統(tǒng)一。在此基礎(chǔ)上,在嵌入式系統(tǒng)C 語言開發(fā)的過程中,就能夠充分利用不同層次架構(gòu)的優(yōu)勢,使得操作人員能夠在不同的文件夾中同時完成不同種類的工作。
3.1.2 模塊管理
為了實現(xiàn)嵌入式系統(tǒng)軟件模塊的高內(nèi)聚性功能,本研究盡量避免使用全局變量來完成對系統(tǒng)模塊的管理,而是利用函數(shù)參數(shù)來實現(xiàn)信息的交互與處理。相同種類的系統(tǒng)任務(wù)盡量儲存于同一文件夾內(nèi)。上一層次架構(gòu)在開發(fā)時能夠調(diào)用下一層次架構(gòu),但要注意下層次架構(gòu)盡可能避免交叉和越級調(diào)用。
在任務(wù)循環(huán)設(shè)計時,盡量讓循環(huán)變量接近于零,以此來減少因循環(huán)終止而造成的不必要嵌入式系統(tǒng)開銷。一般情況下,for( )循環(huán)的格式應(yīng)表示為如下形式:
for(x=0,x<10,x++){…}
這一過程中,x 從 0 增加到 9。若將上述代碼改寫為如下形式,則x 從 9 減少到 0,循環(huán)執(zhí)行速度將會大大提高。
for(x=10,x--){…}
C 語言編程中包括很多含有參數(shù)和函數(shù)的表達(dá)式,因此,設(shè)計函數(shù)表達(dá)并研究函數(shù)的變化至關(guān)重要。本研究對main 函數(shù)實施編輯處理,將其中的參數(shù)利用agent 來表示,在這一過程中,需通過分析來獲得main 函數(shù)相關(guān)的即時數(shù)組信息。
嵌入式系統(tǒng)軟件模塊的函數(shù)變化會對函數(shù)的配置啟動產(chǎn)生直接影響,因此,本研究首先對main 函數(shù)實施歸零處理,從而使C 語言編程程序進(jìn)入高效運(yùn)行狀態(tài),且main 函數(shù)可以對嵌入式系統(tǒng)模式實施智能調(diào)控,通過交叉比對結(jié)果刪除無用數(shù)據(jù),避免C 語言程序混亂,然后重新定義新的main 函數(shù)表達(dá)式,以此來保障函數(shù)間的有效串接,從而使嵌入式系統(tǒng)編程程序更好地適應(yīng)不同的語言環(huán)境。
為驗證上述研究的嵌入式系統(tǒng)中C 語言編程軟件設(shè)計方法的可行性與有效性,設(shè)計如下實驗加以證明。實驗在MATLAB 仿真平臺上完成。為有效避免實驗結(jié)果過于單一、提高其說明性,將文獻(xiàn)[4]中的基于ZYNQ-7000 的遠(yuǎn)距無線時間同步系統(tǒng)的C 語言編程軟件設(shè)計方法和文獻(xiàn)[5]中的基于C 語言技術(shù)的計算機(jī)軟件編程設(shè)計方法作為對照,與本文方法共同完成性能對比驗證。對比指標(biāo)如下:
(1)編程過程耗時。該指標(biāo)可直接反映不同方法的編程效率。編程過程耗時越短,說明編程效率越高。
(2)軟件空間資源占用率。該指標(biāo)可直接反映不同方法的空間資源占用差異。
(3)運(yùn)行準(zhǔn)確率。該指標(biāo)可體現(xiàn)不同方法編程結(jié)果的可靠性。運(yùn)行準(zhǔn)確率越高,說明方法編程結(jié)果的可靠性越高。
在實驗次數(shù)不斷增加的情況下,統(tǒng)計不同方法的編程過程耗時,結(jié)果如表1所示。
表1:不同方法的編程過程耗時統(tǒng)計結(jié)果
表2:不同方法的軟件空間資源占用率對比結(jié)果
表3:不同方法的運(yùn)行準(zhǔn)確率對比結(jié)果
分析表1可知,文獻(xiàn)[4]方法的編程過程耗時在8.10s-8.90s 之間,文獻(xiàn)[5]方法的編程過程耗時在8.80s ~10.00s 之間,而本文方法的最大編程過程耗時僅為6.60s,明顯少于兩種傳統(tǒng)方法。根據(jù)上述結(jié)果可知,應(yīng)用本文方法能夠使得編程過程耗時大大縮短。
在此基礎(chǔ)上,為進(jìn)一步驗證嵌入式系統(tǒng)中C 語言編程軟件設(shè)計方法的可行性與有效性,測試不同方法的軟件空間資源占用率,對比結(jié)果如表2所示。
分析表2中的實驗數(shù)據(jù)可知,由于3 種方法采用的編程處理方式不同,隨著試驗次數(shù)的增加,其軟件空間資源占用率也會隨之發(fā)生變化。2 種傳統(tǒng)方法的軟件空間資源占用率均在30.0%以上。而本文方法的軟件空間資源占用率最低為16.0%,最高也僅為18.0%,說明本文方法占用的軟件空間資源量最少。
最后,在實驗次數(shù)不斷增加的情況下,統(tǒng)計不同方法的運(yùn)行準(zhǔn)確率,結(jié)果如表3所示。
分析表3中的實驗數(shù)據(jù)可知,由于3 種方法采用的編程處理方式不同,隨著試驗次數(shù)的增加,其運(yùn)行準(zhǔn)確率也會不斷變化。2 種傳統(tǒng)方法的軟件空間資源占用率均在85.0%以下。而本文方法的軟件空間資源占用率最低為95.0%,最高也僅為98.0%,說明本文方法編程結(jié)果的可靠性更高。
綜上所述可知,本文提出的嵌入式系統(tǒng)中C 語言編程軟件設(shè)計方法具有編程過程耗時少、軟件空間資源占用率低、運(yùn)行準(zhǔn)確率高的應(yīng)用優(yōu)勢。
本研究提出了一種嵌入式系統(tǒng)中C 語言編程軟件設(shè)計方法,并通過仿真實驗,證明了該方法具有編程過程耗時少、軟件空間資源占用率低、運(yùn)行準(zhǔn)確率高的應(yīng)用優(yōu)勢,可有效為嵌入式系統(tǒng)的發(fā)展提供技術(shù)支持。