97超级碰碰碰久久久_精品成年人在线观看_精品国内女人视频免费观_福利一区二区久久

C語言嵌入式系統(tǒng)編程軟件設(shè)計研究論文

時間:2022-12-13 08:32:35 設(shè)計 我要投稿
  • 相關(guān)推薦

C語言嵌入式系統(tǒng)編程軟件設(shè)計研究論文

  摘要:近年來,C語言編程在嵌入式系統(tǒng)越來越受到廣大技術(shù)人員的青睞。介紹了C語言系統(tǒng)軟件的編程思路,闡述了嵌入式系統(tǒng)編程軟件架構(gòu)的基本知識,包括模塊劃分、分層架構(gòu)、中斷服務(wù)程序編寫、系統(tǒng)軟件設(shè)計要領(lǐng)等,并給出了在編寫嵌入式系統(tǒng)C語言時基本架構(gòu)所包含的主要內(nèi)容。

C語言嵌入式系統(tǒng)編程軟件設(shè)計研究論文

  關(guān)鍵詞:C語言;嵌入式系統(tǒng);程序框架

  1概述

  C語言的廣泛應(yīng)用主要是因其具有出色的移植性,能夠在多種不同體系結(jié)構(gòu)的軟件或硬件平臺上運行;語法機制結(jié)構(gòu)緊湊、使用靈活并能直接訪問硬件;并具有很高的運行效率。與一般形式的軟件編程相比,嵌入式系統(tǒng)有其特殊性,其面向的是一種專用的計算機系統(tǒng),既有應(yīng)用層次上的通用性,也有硬件操作的復(fù)雜性。因此,運用高效合理的編程構(gòu)架和設(shè)計流程,規(guī)范管理編程的過程,對于提高程序的安全性可靠性是十分有利的,同時可以提高軟件的開發(fā)、執(zhí)行、維護效率。在常規(guī)軟件編程基礎(chǔ)上,把分層思想、模塊化思想、面向?qū)ο蠹夹g(shù)應(yīng)用到嵌入式C語言編程系統(tǒng)中,對嵌入式編程中的模塊劃分、分層架構(gòu)、中斷服務(wù)程序編寫、系統(tǒng)軟件設(shè)計思路進行討論。嵌入式系統(tǒng)的高速發(fā)展使得對其編程的效率與質(zhì)量有了更高的要求和標準,更需要一種更加普遍并高效的編程框架與基本標準,以供廣大技術(shù)人員參考與使用。

  2模塊劃分

  模塊劃分是指把一個復(fù)雜的、綜合性的程序根據(jù)可實現(xiàn)的不同功能分成小段,每一小段可實現(xiàn)一個特定的功能。軟件應(yīng)盡量減少與外部模塊的聯(lián)系,提高程序的可移植性,并且明確其可實現(xiàn)的功能。一般情況下,嵌入式系統(tǒng)包含硬件驅(qū)動模塊與軟件功能模塊。一個硬件驅(qū)動模塊對應(yīng)一種特定的硬件,劃分軟件功能模塊時應(yīng)盡量滿足低偶合、高內(nèi)聚的基本要求。設(shè)計實現(xiàn)不同功能的模塊時,有兩個重要原則,(1)模塊的獨立性,各個功能模塊之間不會有信息交叉混淆,不會互相影響互相依存,一個模塊中函數(shù)指令不需要其他模塊的變量,模塊之間的連接通過函數(shù)接口來實現(xiàn)。(2)正交性,各個功能模塊是唯一確定的,其中的變量與其實現(xiàn)的功能是無歧義的。在劃分模塊時有下列注意事項:(1)某一個模塊提供給其他功能模塊所需調(diào)用的數(shù)據(jù)和外部函數(shù)需在頭文件(.h)中以extern關(guān)鍵字來聲明。(2)某功能模塊內(nèi)的全局變量與函數(shù)信息需在.c文件的開頭以static關(guān)鍵字進行聲明。(3)一個模塊由一個.h文件和一個.c文件結(jié)合而成,此模塊的接口在頭文件(.h)中聲明。(4)頭文件(.h文件)中不能定義任何變量。定義變量是匯編階段的概念,會依據(jù)要求分配內(nèi)存。

  3分層架構(gòu)

  3.1分層方向

  分層技術(shù)有兩個方向,目前嵌入式系統(tǒng)應(yīng)用層開發(fā)常用的方法是自頂向下,即從抽象到具體,從邏輯整體描述規(guī)范或者最頂層的程序為起點向下延伸到具體的操作模塊。自底向上是另一個思路,即從具體功能到抽象實現(xiàn),是在硬件驅(qū)動開發(fā)中常用的方法。先分析功能模塊,使其作用在某個應(yīng)用對象上,分析常用操作的方式。這兩個方法各有優(yōu)勢,為了達到較好的效果,在系統(tǒng)軟件設(shè)計過程中,可按照具體需求把這兩種方法混合使用。在邏輯分析應(yīng)用時采用自頂向下的方式,規(guī)范功能模塊的邏輯表達,提高各個模塊的開發(fā)、執(zhí)行、移植效率。使用自底向上的方式規(guī)范硬件操作,把單位操作從中抽象出來,以便進行上層應(yīng)用的模塊移植。

  3.2分層架構(gòu)設(shè)計方法

  分層是為了更好地滿足編程時各功能需要,把一個總體功能分解成一個個小功能,分層進行實現(xiàn),再整合。這樣就需要把代碼分解成不同概念層次的模塊,確定各個模塊的聯(lián)系,進行合理連接,最終實現(xiàn)復(fù)雜的總體功能。分層時有固定的需要遵循的原則:(1)分層時盡量減小層間關(guān)聯(lián)性,不要互相影響互相制約,降低模塊的可移植性。若某一層出現(xiàn)了錯誤或問題,也可以不影響整個程序,只影響部分功能的實現(xiàn)。則技術(shù)人員可有針對性地對這一層進行修改完善,不對其他層產(chǎn)生影響。(2)每層需要為該層的上一層提供支撐,每層可以獨立地解決一個特定的問題,如頻率采樣功能,可以分為數(shù)據(jù)采集層、數(shù)據(jù)處理層、數(shù)據(jù)顯示層等,層與層之間相互聯(lián)系,實現(xiàn)功能。(3)盡量實現(xiàn)層與層之間的高度內(nèi)聚、相互之間又低耦合,每層內(nèi)部對模塊進行劃分,實現(xiàn)最優(yōu)模塊化,可移植性也最強。如果把功能分解得越簡單清晰,實現(xiàn)起來也就越容易,但若把功能目標太過細化,又會引起調(diào)用次數(shù)增多,復(fù)雜程度增大的問題,所以合理劃分層次和模塊,是需要不斷嘗試和修改的。以自底向上、自頂向下與模塊化的方法進行分層架構(gòu)。首先,對嵌入式系統(tǒng)應(yīng)用需求進行梳理,為把各種不同的模塊功能抽象出來,先采取自頂向下的方向,再由軟件層次轉(zhuǎn)化到概念層次。這是一個必經(jīng)的過程,把目標需求抽象出來,轉(zhuǎn)化為開發(fā)軟件的功能。比如,采集信號頻率,需要信號的數(shù)據(jù),輸入嵌入式系統(tǒng),經(jīng)算法和程序,在LCD屏上顯示頻率,這涉及到了硬件驅(qū)動、數(shù)據(jù)采集與處理、數(shù)據(jù)顯示等層次。接下來是對硬件所需實現(xiàn)的功能進行抽象,采用自底向上的方式,硬件操作原語是在抽象硬件所需實現(xiàn)功能時必須細化出來的。在嵌入式編程系統(tǒng)中,由軟件編程驅(qū)動硬件來實現(xiàn)相應(yīng)的功能是很普遍的,為減少硬件功能的相互耦合與相互影響,對硬件功能進行封裝,這不但有利于實現(xiàn)不同功能間的低耦合,還可以使當前系統(tǒng)更加簡單易行,便于程序的執(zhí)行與應(yīng)用,提高程序的可移植性,F(xiàn)在更多地傾向于采用自頂向下與自底向上兩種方法相結(jié)合的思想,為確保每層的上一層調(diào)用都能得到滿足,需要逐層檢查相鄰層間是否有信息交叉,調(diào)用關(guān)系是否合理。最后,優(yōu)化模塊的功能設(shè)計,整合各個功能層的功能,并進行分類,盡可能實現(xiàn)模塊的最優(yōu)化。嵌入式系統(tǒng)需要進行面向?qū)ο、去中心化設(shè)計,設(shè)計時可以將系統(tǒng)邏輯架構(gòu)區(qū)分為以下4個不同的層次:(1)應(yīng)用管理層。實現(xiàn)功能調(diào)度、邏輯轉(zhuǎn)化、顯示界面關(guān)聯(lián)等功能。(2)算法協(xié)議層。實現(xiàn)的功能為數(shù)據(jù)庫訪問、協(xié)議管理與解析、算法實現(xiàn)、文件整理等。(3)功能拓展層。實現(xiàn)各個器件的功能可移植性、接口連接訪問等功能,并實現(xiàn)器件的低耦合性。④硬件驅(qū)動層。硬件操作原語由硬件驅(qū)動層提供,并實現(xiàn)硬件功能的獨立性。以上的分層方式與原則,整合了可實現(xiàn)相似功能或同類的功能模塊,使代碼應(yīng)用、算法與硬件功能之間的相互聯(lián)系大大減少,降低了各個功能在設(shè)計和實現(xiàn)時的耦合性,避免交叉混淆,使嵌入式系統(tǒng)的程序代碼結(jié)構(gòu)更加明晰,可用性更高?梢灾С侄鄠應(yīng)用邏輯的模型算法才是一個成熟的算法,可以在不同硬件環(huán)境中順利執(zhí)行與應(yīng)用的軟件功能模塊才是一個成熟的功能模塊,這樣可提高嵌入式系統(tǒng)軟件功能模塊的開發(fā)、執(zhí)行、移植效率。

  4中斷服務(wù)程序

  程序有時需要實現(xiàn)自動停止正在運行的程序并轉(zhuǎn)入處理新的情況的程序的功能,這就需要中斷服務(wù)程序處理新情況后再返回原被暫停的原程序斷點繼續(xù)運行。中斷服務(wù)程序是嵌入式系統(tǒng)中的重要部分,因中斷系統(tǒng)可便捷地在系統(tǒng)的運行過程中實現(xiàn)中斷,執(zhí)行中斷服務(wù)程序,并快速返回斷點繼續(xù)主程序,從而提高系統(tǒng)的運行效率,并且在不產(chǎn)生中斷時不占用內(nèi)存,節(jié)約系統(tǒng)內(nèi)存。現(xiàn)在已經(jīng)出現(xiàn)許多在標準C語言上對中斷服務(wù)程序的拓展,出現(xiàn)了新的用于表示中斷函數(shù)的關(guān)鍵字,如_interrupt、#programinterrupt等。當編寫中斷服務(wù)程序的函數(shù)時,中斷現(xiàn)場入棧和出棧代碼會由編譯器會自動為該函數(shù)提供。中斷服務(wù)程序需要滿足下列要求:(1)中斷服務(wù)程序不能有返回值。(2)不能給中斷服務(wù)程序傳遞參數(shù)。(3)中斷服務(wù)程序應(yīng)盡量簡單精煉。

  5系統(tǒng)軟件設(shè)計

  5.1C語言的面向?qū)ο蠡?/p>

  中類的概念出現(xiàn)于在面向?qū)ο蟮恼Z言中。對某一類數(shù)據(jù)的特定操作的集合稱為類。類包含了兩個范疇:數(shù)據(jù)和操作。面向?qū)ο笥?個特性:封裝、繼承和多態(tài)。繼承是指通過結(jié)構(gòu)嵌套可實現(xiàn)對象屬性的繼承。封裝是指把數(shù)據(jù)和函數(shù)捆綁,調(diào)用時可把函數(shù)與數(shù)據(jù)一起調(diào)用。多態(tài)是指不需考慮函數(shù)的數(shù)據(jù)調(diào)用方式,調(diào)用函數(shù)時可有多種不同方式。但更多時候,為使軟件代碼結(jié)構(gòu)清晰易操作,只需將數(shù)據(jù)與函數(shù)進行封裝即可。有時C語言編程時,會出現(xiàn)數(shù)據(jù)與函數(shù)聯(lián)系不緊密,結(jié)構(gòu)混亂等問題,C語言模擬面向?qū)ο笫菫榱私鉀Q這些問題,意義并不在于模擬這個行為本身。

  5.2模塊重用設(shè)計

  一般通過模塊化來實現(xiàn)C語言代碼重用,其中包含頭文件和函數(shù)實現(xiàn)文件,即.h文件和對應(yīng)的.c文件。一般有兩種方式定義函數(shù):(1)宏定義,宏定義的優(yōu)點在于不會占用額外內(nèi)存,與函數(shù)的參數(shù)類型無關(guān),缺點在于一些功能是無法通過宏來實現(xiàn)的;(2)函數(shù),函數(shù)可實現(xiàn)的功能較多,并且可重復(fù)利用,可以接受其他函數(shù)的數(shù)據(jù),也可把運算結(jié)果作為返回值輸出。

  6結(jié)語

  闡述了C語言嵌入式系統(tǒng)編程的所包含的基本元素與基本框架,合理的軟件設(shè)計架構(gòu)可大大提高程序的開發(fā)、執(zhí)行、移植效率,在實際應(yīng)用中有重要價值。

  參考文獻

  [1]肖宛昂,曾為民.如何用C語言開發(fā)DSP嵌入式系統(tǒng)[J].單片機與嵌入式系統(tǒng)應(yīng)用,2003,(01):81-84.

  [2]孫育紅.數(shù)字多媒體數(shù)據(jù)采編系統(tǒng)設(shè)計與實現(xiàn)[J].現(xiàn)代電子技術(shù),2017,40(15):122-125.

  [3]黃亞克.嵌入式系統(tǒng)C語言編程方法研究[J].科技信息(學(xué)術(shù)研究),2007,(16):166-167.