国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

多層模型在嵌入式軟件開(kāi)發(fā)中的應(yīng)用研究

2017-04-26 08:42張智慧
計(jì)算機(jī)時(shí)代 2017年4期
關(guān)鍵詞:嵌入式系統(tǒng)軟件開(kāi)發(fā)可靠性

張智慧

摘 要: 分層架構(gòu)已經(jīng)在軟件開(kāi)發(fā)中得到廣泛應(yīng)用,促進(jìn)了軟件開(kāi)發(fā)的工程化管理,提高了軟件的質(zhì)量和效率。文將多層軟件框架模型引入到嵌入式應(yīng)用開(kāi)發(fā),按照系統(tǒng)功能進(jìn)行分層隔離封裝,降低功能模塊間的耦合關(guān)系,設(shè)計(jì)出包含應(yīng)用管理層、算法協(xié)議層、功能拓展層和硬件驅(qū)動(dòng)層等四層架構(gòu)模型,明確各層間的接口和調(diào)用關(guān)系,較好地解決了軟件開(kāi)發(fā)的復(fù)用性和可靠性問(wèn)題。文章給出了應(yīng)用案例。

關(guān)鍵詞: 多層模型; 嵌入式系統(tǒng); 軟件開(kāi)發(fā); 可靠性

中圖分類(lèi)號(hào):G424 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1006-8228(2017)04-17-04

Abstract: The layered architecture has been widely used in software development, to facilitate the engineering management of software development, and improve the quality and efficiency of the software. In this paper, the multilayer software framework model is used in the development of embedded application software, and the functions of the system are separated and encapsulated to reduce the coupling between the modules. The four-layer architecture model is designed, which includes application management layer, algorithm protocol layer, function extension layer and hardware driver layer, the interface and calling method between different layers are defined, and the problems of reusability and reliability of embedded application software development are solved quite good, which are shown with a case study.

Key words: multilayer model; embedded system; software development; reliability

0 引言

隨著嵌入式應(yīng)用的快速發(fā)展,嵌入式軟件系統(tǒng)的規(guī)模和復(fù)雜度日益增長(zhǎng),對(duì)軟件開(kāi)發(fā)的質(zhì)量和效率提出更高要求。從軟件工程角度來(lái)看,嵌入式軟件開(kāi)發(fā)主要面臨兩類(lèi)問(wèn)題,一是如何盡可能地提高軟件的可復(fù)用性,二是如何適應(yīng)用戶(hù)需求、硬件環(huán)境變化快速調(diào)整。分層架構(gòu)已經(jīng)在軟件開(kāi)發(fā)中得到廣泛應(yīng)用,能夠有效降低功能模塊間的耦合關(guān)系,提高軟件開(kāi)發(fā)效率,如基于物理架構(gòu)劃分的C/S和B/S模式,基于邏輯架構(gòu)劃分的MVC、MVP、MVVM模式等。隨著處理器性能的提升、對(duì)外接口的豐富,傳統(tǒng)軟件開(kāi)發(fā)方法已經(jīng)遠(yuǎn)遠(yuǎn)不能滿(mǎn)足嵌入式應(yīng)用軟件的開(kāi)發(fā)要求。本文研究探討了多層模型在嵌入式軟件開(kāi)發(fā)中體系架構(gòu)設(shè)計(jì)方法,并給出了應(yīng)用案例。

1 多層軟件開(kāi)發(fā)模型

在軟件開(kāi)發(fā)中,合理確定軟件體系架構(gòu)的重要性已經(jīng)遠(yuǎn)遠(yuǎn)超過(guò)了特定算法和數(shù)據(jù)結(jié)構(gòu)的選擇。軟件體系架構(gòu)設(shè)計(jì)包含了從軟件框架、功能設(shè)計(jì)、程序開(kāi)發(fā)到應(yīng)用軟件部署的完整解決方案。通過(guò)分層技術(shù),很多復(fù)雜的問(wèn)題得以分割、簡(jiǎn)化,轉(zhuǎn)化成具體的程序?qū)崿F(xiàn)。分析嵌入式軟件開(kāi)發(fā)特點(diǎn),合理設(shè)計(jì)軟件體系架構(gòu)、劃分功能層次,有助于提高軟件開(kāi)發(fā)質(zhì)量。

1.1 軟件開(kāi)發(fā)中的分層技術(shù)

分層技術(shù)就是通過(guò)對(duì)用戶(hù)需求問(wèn)題進(jìn)行梳理,抽象出軟件結(jié)構(gòu)中不同功能領(lǐng)域,合理界定內(nèi)部各層次之間的依賴(lài)關(guān)系,簡(jiǎn)化功能模塊的開(kāi)發(fā)實(shí)現(xiàn),最終將系統(tǒng)問(wèn)題轉(zhuǎn)變?yōu)檐浖O(shè)計(jì),支持軟件系統(tǒng)需要完成的所有功能。在軟件開(kāi)發(fā)過(guò)程中,面向的應(yīng)用場(chǎng)景越復(fù)雜,解決問(wèn)題需要的層次劃分就越多,層次間的依賴(lài)關(guān)系、接口關(guān)系設(shè)計(jì)難度就越大。分層方法有多種,但并沒(méi)有具體的標(biāo)準(zhǔn),在保證軟件功能實(shí)現(xiàn)前提下,一是各層解決不同的問(wèn)題,簡(jiǎn)化軟件實(shí)現(xiàn),能夠?yàn)樯蠈討?yīng)用提供支撐;二是某一層的軟件設(shè)計(jì)出現(xiàn)問(wèn)題,只會(huì)影響到該層次的上下結(jié)構(gòu),不會(huì)影響軟件系統(tǒng)的整體;三是每層內(nèi)部再進(jìn)行縱向或橫向上的功能劃分,盡量實(shí)現(xiàn)軟件功能的高內(nèi)聚、低耦合。

1.2 嵌入式系統(tǒng)的分層結(jié)構(gòu)

通常將嵌入式應(yīng)用系統(tǒng)從技術(shù)結(jié)構(gòu)上分為四個(gè)層次,包括硬件平臺(tái)、BSP及設(shè)備驅(qū)動(dòng)層、調(diào)度系統(tǒng)層和應(yīng)用層,如圖1所示。

⑴ 硬件平臺(tái)層。核心微處理器包括嵌入式微處理器(如ARM系列),以及基于DSP或CPLD/FPGA的開(kāi)發(fā),微處理器一般具有豐富的對(duì)外接口,如UART、I2C等。外圍功能電路包括鍵盤(pán)、數(shù)碼管、液晶屏、控制電路、高頻電子、開(kāi)關(guān)電源等。

⑵ 設(shè)備驅(qū)動(dòng)層。實(shí)現(xiàn)處理器片內(nèi)硬件外設(shè)和片外硬件外設(shè)驅(qū)動(dòng)的API,同時(shí)提供底層算法API,包括GPIO、定時(shí)器、ADC/DAC、SPI、I2C、CAN等片內(nèi)外設(shè)的驅(qū)動(dòng)及API實(shí)現(xiàn),片外外設(shè)(水平儀、溫度傳感器、UART)的驅(qū)動(dòng)及API實(shí)現(xiàn)。設(shè)備驅(qū)動(dòng)層相對(duì)比較獨(dú)立,一般是基于操控底層硬件的低級(jí)語(yǔ)言建立硬件的抽象層,為上層應(yīng)用提供接口。

⑶ 調(diào)度系統(tǒng)層。采用嵌入式操作系統(tǒng)(如Linux、android等)或直接編寫(xiě)調(diào)度器。一般包括嵌入式操作系統(tǒng)和部分基礎(chǔ)應(yīng)用裁剪,或在現(xiàn)有調(diào)度器(如Protothread)基礎(chǔ)上編寫(xiě)內(nèi)存管理、電源管理等專(zhuān)用系統(tǒng)。

⑷ 應(yīng)用層。包括人機(jī)接口與GUI開(kāi)發(fā)、核心算法及業(yè)務(wù)應(yīng)用,很多應(yīng)用還包括數(shù)據(jù)庫(kù)、網(wǎng)絡(luò)通信、RFID、藍(lán)牙通信等應(yīng)用開(kāi)發(fā)。

1.3 嵌入式應(yīng)用軟件開(kāi)發(fā)的分層模型

嵌入式應(yīng)用軟件對(duì)功能、可靠性有著嚴(yán)格的要求。傳統(tǒng)結(jié)構(gòu)化的軟件開(kāi)發(fā)方式,主要是針對(duì)外設(shè)硬件電路功能,完成相應(yīng)的軟件功能模塊開(kāi)發(fā),當(dāng)硬件或應(yīng)用需求發(fā)生變化時(shí),很多模塊都需要重新開(kāi)發(fā),代碼重用性低,開(kāi)發(fā)調(diào)試難度大,軟件的適應(yīng)性和維護(hù)性也不好。隨著嵌入式應(yīng)用系統(tǒng)越來(lái)越復(fù)雜,這一矛盾變得日益突出。采用分層技術(shù),對(duì)嵌入式應(yīng)用軟件系統(tǒng)進(jìn)行邏輯上的合理設(shè)計(jì),成為提高軟件開(kāi)發(fā)效率、執(zhí)行效率和維護(hù)效率的關(guān)鍵。

按照“高內(nèi)聚,低耦合”的原則,對(duì)嵌入式應(yīng)用軟件系統(tǒng)輸入/輸出、應(yīng)用調(diào)度、設(shè)備驅(qū)動(dòng)、算法模型、接口訪(fǎng)問(wèn)、網(wǎng)絡(luò)通信和數(shù)據(jù)庫(kù)等功能進(jìn)行重新劃分,降低應(yīng)用邏輯和業(yè)務(wù)模型、軟件功能和硬件電路的耦合性和依賴(lài)關(guān)系,可以區(qū)分為應(yīng)用管理層、算法協(xié)議層、功能拓展層、硬件驅(qū)動(dòng)層等四個(gè)層次。四層結(jié)構(gòu)模型如圖2所示。

從圖2可以看出,經(jīng)過(guò)重新分層后,使得整個(gè)應(yīng)用程序的結(jié)構(gòu)變得更加清晰和靈活,一個(gè)成熟的模型算法能夠支持多個(gè)應(yīng)用邏輯,一個(gè)成熟的軟件功能模塊能夠適應(yīng)不同的硬件環(huán)境,最大限度地提高了軟件的可復(fù)用性。對(duì)于一個(gè)項(xiàng)目,采用上述分層模型后,其后期維護(hù)擴(kuò)展只需對(duì)應(yīng)用管理層進(jìn)行修改并根據(jù)需要完善功能拓展層;新上項(xiàng)目可以復(fù)用算法協(xié)議層和功能拓展層的相關(guān)功能模塊,大大簡(jiǎn)化項(xiàng)目開(kāi)發(fā),而且隨著模塊的不斷積累,成熟的功能模塊會(huì)越來(lái)越完善,軟件開(kāi)發(fā)質(zhì)量和效率能夠得到很大提升。由于在硬件驅(qū)動(dòng)層實(shí)現(xiàn)了硬件無(wú)關(guān),故只需完善硬件驅(qū)動(dòng)層就可以實(shí)現(xiàn)不同硬件之間的移植。

2 基于C語(yǔ)言的軟件框架設(shè)計(jì)

由于C語(yǔ)言具備良好的跨平臺(tái)特性,并提供了許多低級(jí)處理的功能,在嵌入式應(yīng)用開(kāi)發(fā)中得到了廣泛應(yīng)用。但C語(yǔ)言作為一種結(jié)構(gòu)化的程序設(shè)計(jì)語(yǔ)言,主要是依據(jù)功能進(jìn)行模塊劃分,在實(shí)現(xiàn)分層模型的過(guò)程中,需要制定相應(yīng)的開(kāi)發(fā)策略。

2.1 框架設(shè)計(jì)

按照分層模型,在軟件開(kāi)發(fā)文件規(guī)劃時(shí),要避免不同層次的功能模塊放在同一個(gè)實(shí)現(xiàn)文件中,影響代碼重用,同時(shí)由于C語(yǔ)言沒(méi)有面向?qū)ο蟮姆庋b特性,數(shù)據(jù)和功能函數(shù)相對(duì)分離,應(yīng)盡量將操作數(shù)據(jù)相同的函數(shù)放在一起。

⑴ 應(yīng)用管理層。主要包括用戶(hù)主程序main以及實(shí)現(xiàn)輸入交互、任務(wù)調(diào)度、時(shí)間管理等功能模塊,通過(guò)調(diào)度相應(yīng)的功能模塊,實(shí)現(xiàn)實(shí)際任務(wù)的運(yùn)行。一般包括以下幾部分:

初始化各類(lèi)硬件;

初始化各類(lèi)軟件參數(shù);

While(1) {

調(diào)用功能函數(shù)(算法協(xié)議層相關(guān)功能模塊);

響應(yīng)中斷;

按照業(yè)務(wù)邏輯修改狀態(tài)數(shù)據(jù);

等待; }

應(yīng)用管理層的各功能模塊可以放在一個(gè)main.c文件中,也可以放在不同的實(shí)現(xiàn)文件,在main.c中進(jìn)行引用。

⑵ 算法協(xié)議層。主要包括模型算法、協(xié)議解析、文件管理、數(shù)據(jù)庫(kù)管理等功能模塊,實(shí)現(xiàn)系統(tǒng)應(yīng)用所有功能。該層功能模塊從應(yīng)用管理層接收狀態(tài)參數(shù),按照業(yè)務(wù)處理邏輯進(jìn)行處理,并調(diào)用功能拓展層的功能模塊,完成系統(tǒng)運(yùn)行功能,并返回狀態(tài)和結(jié)果數(shù)據(jù)。

核心算法和業(yè)務(wù)應(yīng)用設(shè)計(jì)基本上都在該層完成,也包括已有的協(xié)議棧、軟件包、標(biāo)準(zhǔn)庫(kù)等功能模塊。

⑶ 功能拓展層。主要實(shí)現(xiàn)器件的無(wú)關(guān)性,提供各種拓展功能和器件的通用性處理、接口訪(fǎng)問(wèn)等功能模塊。該層功能模塊主要實(shí)現(xiàn)特定器件相關(guān)的通用功能,如LCD的線(xiàn)、圓、矩形等處理,一般不同的器件采用不同的實(shí)現(xiàn)文件,通過(guò)文件名進(jìn)行區(qū)分。

⑷ 硬件驅(qū)動(dòng)層。主要實(shí)現(xiàn)硬件的無(wú)關(guān)性,提供硬件的基本功能操作。如LCD的初始化、定位、寫(xiě)點(diǎn)、寫(xiě)字節(jié)等。為了保證代碼的通用性,針對(duì)不同硬件的相同功能的外部函數(shù)都盡量一致,一種特定硬件對(duì)應(yīng)一個(gè)實(shí)現(xiàn)文件,并通過(guò)文件名進(jìn)行區(qū)分。

2.2 模塊化設(shè)計(jì)

標(biāo)準(zhǔn)的C語(yǔ)言并不提供軟件框架管理,需要用戶(hù)自己來(lái)管理工程文件,實(shí)現(xiàn)對(duì)各類(lèi)功能模塊的分層管理。

⑴ 工程文件結(jié)構(gòu)。將系統(tǒng)功能模塊按照文件夾在工程項(xiàng)目?jī)?nèi)進(jìn)行組織,一般應(yīng)用管理層的功能模塊放在根目錄,其他三個(gè)層的功能模塊分別存放在ModelFuc、ComFuc、Hardrv文件夾,文件的命名遵循統(tǒng)一的規(guī)范。開(kāi)發(fā)過(guò)程中,可以充分利用分層模型的優(yōu)勢(shì),各層功能的開(kāi)發(fā)人員在不同的文件夾內(nèi)進(jìn)行并行工作,實(shí)現(xiàn)工程化管理。每層功能模塊的開(kāi)發(fā)調(diào)用下一層的功能模塊,盡量避免交叉調(diào)用或越級(jí)調(diào)用。

⑵ 模塊內(nèi)部設(shè)計(jì)。為了實(shí)現(xiàn)模塊化設(shè)計(jì)的高內(nèi)聚性,應(yīng)少用或不用全局變量,盡量通過(guò)函數(shù)參數(shù)來(lái)傳遞數(shù)據(jù)。在編程過(guò)程中,要采用一定的技術(shù)措施,提高代碼的可重用性,比如在頭文件中增加防止重復(fù)包含處理,在函數(shù)內(nèi)部增加錯(cuò)誤處理機(jī)制等。

3 應(yīng)用案例

本案例是利用角速度傳感器制作一個(gè)電子羅盤(pán),在LCD顯示屏上實(shí)時(shí)顯示手持設(shè)備的方位。由于已經(jīng)開(kāi)發(fā)過(guò)類(lèi)似的應(yīng)用,硬件也沿用了原來(lái)的硬件設(shè)計(jì),算法協(xié)議層、功能拓展層、硬件驅(qū)動(dòng)層的功能模塊直接復(fù)用原來(lái)的代碼,通過(guò)在應(yīng)用管理層實(shí)現(xiàn)羅盤(pán)顯示位置、大小和延時(shí)設(shè)定,增加顯示X、Y、Z軸數(shù)值,就完成了項(xiàng)目開(kāi)發(fā),而且運(yùn)行穩(wěn)定可靠。

整個(gè)工程文件結(jié)構(gòu)如圖3所示。Hardrv文件夾存放LCD、角速度傳感器,以及電源設(shè)備的硬件驅(qū)動(dòng)模塊。ComFuc文件夾存放LCD畫(huà)圖、字體顯示、羅盤(pán)數(shù)值轉(zhuǎn)換等功能模塊。ModelFuc存放羅盤(pán)顯示功能模塊,在進(jìn)行模塊設(shè)計(jì)時(shí)已經(jīng)考慮到復(fù)用,可以通過(guò)參數(shù)設(shè)定羅盤(pán)顯示大小比例、指針顯示位置。在compass.c模塊中,讀取傳感器的X、Y、Z軸數(shù)值,調(diào)用羅盤(pán)顯示功能模塊,并調(diào)用字體顯示功能進(jìn)行各個(gè)方向軸的數(shù)值顯示,實(shí)現(xiàn)電子羅盤(pán)應(yīng)用功能。LCD顯示功能在各層分部的示例代碼如下:

應(yīng)用管理層→uint Show_Compass( uint x, uint y, uint

z,uint pcolor); //顯示當(dāng)前x、y、z軸數(shù)值對(duì)應(yīng)的羅盤(pán),顯示區(qū)域大小設(shè)為全局變量,完成顯示邏輯轉(zhuǎn)換后調(diào)用畫(huà)羅盤(pán)指針函數(shù)。

算法模型層→uint Draw_Compass(uint cx, uint cy, uint

len, uint angle, uint pcolor); //畫(huà)羅盤(pán)指針,cx、cy為中心位置,轉(zhuǎn)換成直角坐標(biāo)后調(diào)用畫(huà)線(xiàn)函數(shù)。

功能拓展層→uint Lcd_Line(uint x1, uint y1, uint x2,

uint y2, uint pcolor);//畫(huà)線(xiàn),調(diào)用畫(huà)點(diǎn)函數(shù)。

硬件驅(qū)動(dòng)層→uint Lcd_Pixel(uint x, uint y, uint pcolor);

//驅(qū)動(dòng)LCD進(jìn)行畫(huà)點(diǎn)。

從該案例可以看出,硬件驅(qū)動(dòng)層實(shí)現(xiàn)對(duì)硬件功能的封裝,功能拓展層實(shí)現(xiàn)軟件功能的通用化,對(duì)硬件功能和數(shù)據(jù)的進(jìn)一步封裝,提供簡(jiǎn)單有效的訪(fǎng)問(wèn)手段,能夠供不同的業(yè)務(wù)處理使用。算法協(xié)議層對(duì)業(yè)務(wù)邏輯進(jìn)行封裝,能夠成為可直接解決應(yīng)用問(wèn)題的功能模塊。應(yīng)用管理層負(fù)責(zé)整個(gè)應(yīng)用系統(tǒng)的調(diào)度、控制和管理。層與層之間耦合性大大降低,提高了軟件功能模塊的開(kāi)發(fā)效率和可復(fù)用性。

4 結(jié)束語(yǔ)

多層模型提供了嵌入式應(yīng)用軟件開(kāi)發(fā)良好的架構(gòu),功能模塊劃分更加合理、規(guī)范,軟件可復(fù)用性大大提高。本文給出的軟件框架設(shè)計(jì),能夠有效解決使用C語(yǔ)言進(jìn)行復(fù)雜系統(tǒng)編程時(shí)框架結(jié)構(gòu)分散問(wèn)題,使得開(kāi)發(fā)人員的思路更加清晰,便于工程化管理。在嵌入式應(yīng)用軟件開(kāi)發(fā)過(guò)程中采取多層模型,具有較高的可擴(kuò)展性,能夠不斷積累成熟軟件功能模塊,降低軟件后期維護(hù)難度,提高項(xiàng)目開(kāi)發(fā)的質(zhì)量和效率。

參考文獻(xiàn)(References):

[1] 李小遐,劉惠梅.C語(yǔ)言程序設(shè)計(jì)能力教程[M].北京理工大學(xué)出版社,2011.

[2] 程欣宇,張麗,王忠德.數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)的三層模型[J].計(jì)算機(jī)教育,2014.12:65-67

[3] 陳偉.基于MVC模式的安卓系統(tǒng)工程結(jié)構(gòu)設(shè)計(jì)[J].中國(guó)科技信息,2016.19:47-48

[4] 楊柯.分層技術(shù)在計(jì)算機(jī)軟件開(kāi)發(fā)中的應(yīng)用效果分析[J].軟件,2013.10:47-48

[5] 林越,王翠珍.淺談面向?qū)ο箝_(kāi)發(fā)思想與軟件設(shè)計(jì)架構(gòu)分析[J].信息通信,2016.3:152-154

猜你喜歡
嵌入式系統(tǒng)軟件開(kāi)發(fā)可靠性
可靠性管理體系創(chuàng)建與實(shí)踐
電子制作(2017年2期)2017-05-17
信息安全環(huán)境下的計(jì)算機(jī)軟件開(kāi)發(fā)研究
基于物聯(lián)網(wǎng)項(xiàng)目驅(qū)動(dòng)的嵌入式系統(tǒng)教學(xué)改革的研究與實(shí)踐
嵌入式系統(tǒng)課程“中斷、異常與事件”教學(xué)實(shí)踐及啟示
面向?qū)嵺`創(chuàng)新人才培養(yǎng)的嵌入式系統(tǒng)教學(xué)研究
核電廠定期試驗(yàn)管理軟件開(kāi)發(fā)
FPGA軟件開(kāi)發(fā)過(guò)程中編碼規(guī)范的作用
基于可靠性跟蹤的薄弱環(huán)節(jié)辨識(shí)方法在省級(jí)電網(wǎng)可靠性改善中的應(yīng)用研究
可靠性比一次采購(gòu)成本更重要