嵌入式Linux應(yīng)用軟件開(kāi)發(fā)流程_第1頁(yè)
嵌入式Linux應(yīng)用軟件開(kāi)發(fā)流程_第2頁(yè)
嵌入式Linux應(yīng)用軟件開(kāi)發(fā)流程_第3頁(yè)
嵌入式Linux應(yīng)用軟件開(kāi)發(fā)流程_第4頁(yè)
嵌入式Linux應(yīng)用軟件開(kāi)發(fā)流程_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、從軟件工程的角度來(lái)說(shuō),嵌入式應(yīng)用軟件也有一定的生命周期,如要進(jìn)行需求分析、系統(tǒng)設(shè)計(jì)、代碼編寫(xiě)、調(diào)試和維護(hù)等工作,軟件工程的許多理論對(duì)它也是適用的。但和其他通用軟件相比,它的開(kāi)發(fā)有許多獨(dú)特之處: 在需求分析時(shí),必須考慮硬件性能的影響,具體功能必須考慮由何種硬件實(shí)現(xiàn)。在系統(tǒng)設(shè)計(jì)階段,重點(diǎn)考慮的是任務(wù)的劃分及其接口,而不是模塊的劃分。模塊劃分則放在了任務(wù)的設(shè)計(jì)階段。 在調(diào)試時(shí)采用交叉調(diào)試方式。 軟件調(diào)試完畢固化到嵌入式系統(tǒng)中后,它的后期維護(hù)工作較少。下面主要介紹分析和設(shè)計(jì)階段的步驟與原則:1、需求分析對(duì)需求加以分析產(chǎn)生需求說(shuō)明,需求說(shuō)明過(guò)程給出系統(tǒng)功能需求,它包括: 系統(tǒng)所有實(shí)現(xiàn)的功能,系統(tǒng)的輸入、

2、輸出 系統(tǒng)的外部接口需求(如用戶(hù)界面) 它的性能以及諸如文件/數(shù)據(jù)庫(kù)安全等其他要求在實(shí)時(shí)系統(tǒng)中,常用狀態(tài)變遷圖來(lái)描述系統(tǒng)。在設(shè)計(jì)狀態(tài)圖時(shí),應(yīng)對(duì)系統(tǒng)運(yùn)行過(guò)程進(jìn)行詳細(xì)考慮,盡量在狀態(tài)圖中列出所有系統(tǒng)狀態(tài),包括許多用戶(hù)無(wú)需知道的內(nèi)部狀態(tài),對(duì)許多異常也應(yīng)有相應(yīng)處理。止匕外,應(yīng)清楚地說(shuō)明人機(jī)接口,即操作員與系統(tǒng)間地相互作用。對(duì)于比較復(fù)雜地系統(tǒng),形成一本操作手冊(cè)是必要的,為用戶(hù)提供使用該系統(tǒng)的操作步驟。為使系統(tǒng)說(shuō)明更清楚,可以將狀態(tài)變遷圖與操作手冊(cè)腳本結(jié)合起來(lái)。在對(duì)需求進(jìn)行分析,了解系統(tǒng)所要實(shí)現(xiàn)的功能的基礎(chǔ)上,系統(tǒng)開(kāi)發(fā)選用何種硬件、軟件平臺(tái)就可以確定了。對(duì)于硬件平臺(tái),要考慮的是微處理器的處理速度、內(nèi)存空間

3、的大小、外部擴(kuò)展設(shè)備是否滿(mǎn)足功能要求等。如微處理器對(duì)外部事件的響應(yīng)速度是否滿(mǎn)足系統(tǒng)的實(shí)時(shí)性要求,它的穩(wěn)定性如何,內(nèi)存空間是否滿(mǎn)足操作系統(tǒng)及應(yīng)用軟件的運(yùn)行要求,對(duì)于要求網(wǎng)絡(luò)功能的系統(tǒng),是否擴(kuò)展有以太網(wǎng)接口等。對(duì)于軟件平臺(tái)而言,操作系統(tǒng)是否支持實(shí)時(shí)性及支持的程度、對(duì)多任務(wù)的管理能力是否支持前面選中的微處理器、網(wǎng)絡(luò)功能是否滿(mǎn)足系統(tǒng)要求以及開(kāi)發(fā)環(huán)境是否完善等都是必須考慮的。當(dāng)然,不管選用何種軟硬件平臺(tái),成本因素都是要考慮的,嵌入式Linux正是在這方面具有突出的優(yōu)勢(shì)。2、任務(wù)和模塊劃分在進(jìn)行需求分析和明確系統(tǒng)功能后,就可以對(duì)系統(tǒng)進(jìn)行任務(wù)劃分。任務(wù)是代碼運(yùn)行的一個(gè)映象,是無(wú)限循環(huán)的一段代碼。從系統(tǒng)的角度

4、來(lái)看,任務(wù)是嵌入式系統(tǒng)中競(jìng)爭(zhēng)系統(tǒng)資源的最小運(yùn)行單元,任務(wù)可以使用或等待CPU、I/O設(shè)備和內(nèi)存空間等系統(tǒng)資源。在設(shè)計(jì)一個(gè)較為復(fù)雜的多任務(wù)應(yīng)用系統(tǒng)時(shí),進(jìn)行合理的任務(wù)劃分對(duì)系統(tǒng)的運(yùn)行效率、實(shí)時(shí)性和吞吐量影響都極大。任務(wù)分解過(guò)細(xì)會(huì)不斷地在各任務(wù)之間切換,而任務(wù)之間的通信量也會(huì)很大,這樣將會(huì)大大地增加系統(tǒng)的開(kāi)銷(xiāo),影響系統(tǒng)的效率。而任務(wù)分解過(guò)粗、不夠徹底又會(huì)造成原本可以并行的操作只能按順序串行執(zhí)行,從而影響系統(tǒng)的吞吐量。為了達(dá)到系統(tǒng)效率和吞吐量之間的平衡折中,在劃分任務(wù)時(shí)應(yīng)在數(shù)據(jù)流圖的基礎(chǔ)上,遵循下列步驟和原則:進(jìn)行數(shù)據(jù)流分析在系統(tǒng)需求分析的基礎(chǔ)上,以數(shù)據(jù)流圖作為分析工具。首先,從系統(tǒng)的功能需求開(kāi)始分析

5、系統(tǒng)中的數(shù)據(jù)流,分析數(shù)據(jù)在各狀態(tài)轉(zhuǎn)換之間的作用。然后,擴(kuò)展數(shù)據(jù)流圖,并分解到足夠的深度,識(shí)別出主要的子系統(tǒng)和每個(gè)子系統(tǒng)的主要成分。,劃分任務(wù)識(shí)別出系統(tǒng)的所有功能和它們之間的數(shù)據(jù)流后,下一步是要判斷哪些操作是并行,哪些是串行,以劃分任務(wù)。在將一個(gè)軟件系統(tǒng)分解為并行任務(wù)時(shí),主要考慮的是系統(tǒng)內(nèi)功能的異步性。這需要分析數(shù)據(jù)流圖中的各功能變換,確定哪些變換可以并行,而哪些在本質(zhì)上又是順序的。一般并行的功能變換應(yīng)屬于不同的任務(wù),而串行的可以屬于同一任務(wù)。任務(wù)的劃分包括確定哪些變換屬于哪個(gè)任務(wù),及確定各任務(wù)的優(yōu)先級(jí)。它們的劃分原則如下:1)I/O依賴(lài)性I/O如果功能變換依賴(lài)I/O,那么它的運(yùn)行速度常常受限于

6、它的互操作的設(shè)備的速度。在這種條件下,功能變換應(yīng)單獨(dú)成為一個(gè)任務(wù)。2)功能的時(shí)間關(guān)鍵性具有時(shí)間關(guān)鍵性的功能需求以高優(yōu)先級(jí)運(yùn)行,因此不能把它加到其他任務(wù)中運(yùn)行,應(yīng)成為一個(gè)獨(dú)立的高優(yōu)先級(jí)任務(wù)。3)計(jì)算需求需要進(jìn)行大量計(jì)算但又不具有時(shí)間緊迫性的功能或功能集合,可以作為較低優(yōu)先級(jí)的任務(wù)運(yùn)行,以消耗CPU的剩余時(shí)間。4)功能內(nèi)聚完成功能緊密相關(guān)的變換可以組成一個(gè)任務(wù),因?yàn)檫@些功能間的數(shù)據(jù)通信較多,把它們作為一個(gè)個(gè)獨(dú)立的任務(wù)反而會(huì)增加系統(tǒng)開(kāi)銷(xiāo)。反之,把每個(gè)變換作為同一任務(wù)中的一個(gè)獨(dú)立模塊,不僅保證了模塊級(jí)的功能內(nèi)聚,而且保證了任務(wù)的功能內(nèi)聚。5)周期執(zhí)行一個(gè)需要周期執(zhí)行的變換可以作為一個(gè)獨(dú)立的任務(wù),按一定

7、的時(shí)間間隔被激活。定義任務(wù)接口在劃分好任務(wù)之后,要確定任務(wù)間的接口。在數(shù)據(jù)流圖中,接口是以數(shù)據(jù)流或數(shù)據(jù)存儲(chǔ)的形式存在,在這里要把它們具體化下來(lái),確定采用何種格式的接口。通常由兩種任務(wù)接口模塊來(lái)處理接口問(wèn)題,即任務(wù)間通信模塊和任務(wù)同步互斥模塊,這些模塊對(duì)調(diào)用它的任務(wù)來(lái)說(shuō)一般是操作系統(tǒng)級(jí)的任務(wù)調(diào)用。任務(wù)通信模塊處理任務(wù)間的所有通信情況。一般它會(huì)定義一個(gè)數(shù)據(jù)結(jié)構(gòu),并定義對(duì)該數(shù)據(jù)結(jié)構(gòu)的訪(fǎng)問(wèn)過(guò)程,如對(duì)消息隊(duì)列、管道等結(jié)構(gòu)的訪(fǎng)問(wèn)。任務(wù)通信模塊總是運(yùn)行在調(diào)用它的任務(wù)中,因而,它有可能在兩個(gè)任務(wù)中并發(fā)執(zhí)行,所有在訪(fǎng)問(wèn)過(guò)程中必須提供必要的同步和互斥條件來(lái)確保數(shù)據(jù)的一致性和正確性。任務(wù)同步互斥模塊是當(dāng)任務(wù)之間不需

8、要傳送真正的信息時(shí)使用的,它用事件來(lái)實(shí)現(xiàn)同步目的。目標(biāo)任務(wù)等待一個(gè)或幾個(gè)事件的發(fā)生,源任務(wù)發(fā)送事件信號(hào)激活目標(biāo)任務(wù)。上述的劃分原則僅能作為一個(gè)初步參考,真正的設(shè)計(jì)還需要詳細(xì)分析,才能使系統(tǒng)達(dá)到預(yù)定的效率和吞吐率軟件開(kāi)發(fā)流程軟件開(kāi)發(fā)流程分為:需求確認(rèn)一一概要設(shè)計(jì)一一詳細(xì)設(shè)計(jì)一一編碼一一單元測(cè)試集成測(cè)試一一系統(tǒng)測(cè)試一一維護(hù)需求確認(rèn):需求規(guī)格說(shuō)明書(shū)概要設(shè)計(jì):系統(tǒng)用例圖,用例場(chǎng)景詳細(xì)設(shè)計(jì):系統(tǒng)設(shè)計(jì)報(bào)告,數(shù)據(jù)庫(kù)設(shè)計(jì)報(bào)告測(cè)試:測(cè)試用例報(bào)告詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì)的主要任務(wù)是設(shè)計(jì)每個(gè)模塊的實(shí)現(xiàn)算法、所需的局部數(shù)據(jù)結(jié)構(gòu)。詳細(xì)設(shè)計(jì)的目標(biāo)有兩個(gè):實(shí)現(xiàn)模塊功能的算法要邏輯上正確和算法描述要簡(jiǎn)明易懂。傳統(tǒng)軟件開(kāi)發(fā)方法的詳細(xì)設(shè)

9、計(jì)主要是用結(jié)構(gòu)化程序設(shè)計(jì)法。詳細(xì)設(shè)計(jì)的表示工具有圖形工具和語(yǔ)言工具。圖形工具有程序流程圖、PAD(ProblemAnalysisDiagram)圖、NS(由Nassi和Shneidermen開(kāi)發(fā),簡(jiǎn)稱(chēng)NS)圖。語(yǔ)言工具有偽碼和PDL(ProgramDesignLanguage)等。主要任務(wù)1 .為每個(gè)模塊確定采用的算法,選擇某種適當(dāng)?shù)墓ぞ弑磉_(dá)算法的過(guò)程,寫(xiě)出模塊的詳細(xì)過(guò)程性描述;2 .確定每一模塊使用的數(shù)據(jù)結(jié)構(gòu);3 .確定模塊接口的細(xì)節(jié),包括對(duì)系統(tǒng)外部的接口和用戶(hù)界面,對(duì)系統(tǒng)內(nèi)部其它模塊的接口,以及模塊輸入數(shù)據(jù)、輸出數(shù)據(jù)及局部數(shù)據(jù)的全部細(xì)節(jié)。在詳細(xì)設(shè)計(jì)結(jié)束時(shí),應(yīng)該把上述結(jié)果寫(xiě)入詳細(xì)設(shè)計(jì)說(shuō)明書(shū),

10、并且通過(guò)復(fù)審形成正式文檔。交付給下一階段(編碼階段)的工作依據(jù)。4 .要為每一個(gè)模塊設(shè)計(jì)出一組測(cè)試用例,以便在編碼階段對(duì)模塊代碼(即程序)進(jìn)行預(yù)定的測(cè)試,模塊的測(cè)試用例是軟件測(cè)試計(jì)劃的重要組成部分,通常應(yīng)包括輸入數(shù)據(jù),期望輸出等內(nèi)容。詳細(xì)設(shè)計(jì)的工具1 .圖形工具利用圖形工具可以把過(guò)程的細(xì)節(jié)用圖形描述出來(lái)。2 .表格工具可以用一張表來(lái)描述過(guò)程的細(xì)節(jié),在這張表中列出了各種可能的操作和相應(yīng)的條件3 .語(yǔ)言工具用某種高級(jí)語(yǔ)言(稱(chēng)之為偽碼)來(lái)描述過(guò)程的細(xì)節(jié)嵌入式開(kāi)發(fā)學(xué)習(xí)步驟1、Linux基礎(chǔ)安裝Linux操作系統(tǒng)Linux文件系統(tǒng)Linux常用命令Linux啟動(dòng)過(guò)程詳解熟悉Linux服務(wù)能夠獨(dú)立安裝Li

11、nux噪作系統(tǒng)能夠熟練使用Linux系統(tǒng)的基本命令認(rèn)識(shí)Linux系統(tǒng)的常用服務(wù)安裝Linux操作系統(tǒng)Linux基本命令實(shí)踐設(shè)置Linux環(huán)境變量定制Linux的服務(wù)Shell編程基礎(chǔ)使用vi編輯文件使用Emacs編輯文件使用其他編輯器2、Shell編程基礎(chǔ)Shell簡(jiǎn)介認(rèn)識(shí)后臺(tái)程序Bash編程熟悉Linux系統(tǒng)下的編輯環(huán)境熟悉Linux下的各種Shell熟練進(jìn)行shell編程熟悉vi基本操作熟悉Emacs的基本操作比較不同shell的區(qū)別編寫(xiě)一個(gè)測(cè)試服務(wù)器是否連通的shell腳本程序編寫(xiě)一個(gè)查看進(jìn)程是否存在的shell腳本程序編寫(xiě)一個(gè)帶有循環(huán)語(yǔ)句的shell腳本程序3、Linux下的C編程基礎(chǔ)

12、inuxC語(yǔ)言環(huán)境概述Gcc使用方法Gdb調(diào)試技術(shù)AutoconfAutomakeMakefile代碼優(yōu)化熟悉Linux系統(tǒng)下的開(kāi)發(fā)環(huán)境熟悉Gcc編譯器熟悉Makefile規(guī)則編寫(xiě)Hello,World程序使用make命令編譯程序編寫(xiě)帶有一個(gè)循環(huán)的程序調(diào)試一個(gè)有問(wèn)題的程序4、嵌入式系統(tǒng)開(kāi)發(fā)基礎(chǔ)嵌入式系統(tǒng)概述交叉編譯配置TFTP服務(wù)配置NFS服務(wù)下載Bootloader和內(nèi)核嵌入式Linux應(yīng)用軟件開(kāi)發(fā)流程熟悉嵌入式系統(tǒng)概念以及開(kāi)發(fā)流程建立嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境制作cross_gcc工具鏈編譯并下載U-boot編譯并下載Linux內(nèi)核編譯并下載Linux應(yīng)用程序4、嵌入式系統(tǒng)移植Linux內(nèi)核代碼平

13、臺(tái)相關(guān)代碼分析ARM平臺(tái)介紹平臺(tái)移植的關(guān)鍵技術(shù)移植Linux內(nèi)核到ARM平臺(tái)了解移植的概念能夠移植Linux內(nèi)核移植Linux2.6內(nèi)核到ARM9開(kāi)發(fā)板5、嵌入式Linux下串口通信串行I/O的基本概念嵌入式Linux應(yīng)用軟件開(kāi)發(fā)流程Linux系統(tǒng)的文件和設(shè)備與文件相關(guān)的系統(tǒng)調(diào)用配置超級(jí)終端和MiniCOM能夠熟悉進(jìn)行串口通信熟悉文件I/O編寫(xiě)串口通信程序編寫(xiě)多串口通信程序6、嵌入式系統(tǒng)中多進(jìn)程程序設(shè)計(jì)Linux系統(tǒng)進(jìn)程概述嵌入式系統(tǒng)的進(jìn)程特點(diǎn)進(jìn)程操作守護(hù)進(jìn)程相關(guān)的系統(tǒng)調(diào)用了解Linux系統(tǒng)中進(jìn)程的概念能夠編寫(xiě)多進(jìn)程程序編寫(xiě)多進(jìn)程程序編寫(xiě)一個(gè)守護(hù)進(jìn)程程序sleep系統(tǒng)調(diào)用任務(wù)管理、同步與通信L

14、inux任務(wù)概述任務(wù)調(diào)度管道信號(hào)共享內(nèi)存任務(wù)管理API了解Linux系統(tǒng)任務(wù)管理機(jī)制熟悉進(jìn)程間通信的幾種方式熟悉嵌入式Linux中的任務(wù)間同步與通信編寫(xiě)一個(gè)簡(jiǎn)單的管道程序?qū)崿F(xiàn)文件傳輸編寫(xiě)一個(gè)使用共享內(nèi)存的程序7、嵌入式系統(tǒng)中多線(xiàn)程程序設(shè)計(jì)線(xiàn)程的基礎(chǔ)知識(shí)多線(xiàn)程編程方法線(xiàn)程應(yīng)用中的同步問(wèn)題了解線(xiàn)程的概念能夠編寫(xiě)簡(jiǎn)單的多線(xiàn)程程序編寫(xiě)一個(gè)多線(xiàn)程程序8、嵌入式Linux網(wǎng)絡(luò)編程網(wǎng)絡(luò)基礎(chǔ)知識(shí)嵌入式Linux中TCP/IP網(wǎng)絡(luò)結(jié)構(gòu)socket編程常用API函數(shù)分析Ping命令的實(shí)現(xiàn)基本UDP套接口編程許可證管理PPP協(xié)議GPRS了解嵌入式Linux網(wǎng)絡(luò)體系結(jié)構(gòu)能夠進(jìn)行嵌入式Linux環(huán)境下的socket編程

15、熟悉UDP協(xié)議、PPP協(xié)議熟悉GPRS使用socket編寫(xiě)代理服務(wù)器使用socket編寫(xiě)路由器編寫(xiě)許可證服務(wù)器指出TCP和UDP的優(yōu)缺點(diǎn)編寫(xiě)一個(gè)web服務(wù)器編寫(xiě)一個(gè)運(yùn)行在ARM平臺(tái)的網(wǎng)絡(luò)播放器9、GUI程序開(kāi)發(fā)GUI基礎(chǔ)嵌入式系統(tǒng)GUI類(lèi)型編譯QT進(jìn)彳fQT開(kāi)發(fā)熟悉嵌入式系統(tǒng)常用的GUI能夠進(jìn)行QT編程使用QT編寫(xiě)“Hello,World”程序調(diào)試一個(gè)加入信號(hào)/槽的實(shí)例通過(guò)重載QWidget類(lèi)方法處理事件10、Linux字符設(shè)備驅(qū)動(dòng)程序設(shè)備驅(qū)動(dòng)程序基礎(chǔ)知識(shí)Linux系統(tǒng)的模塊字符設(shè)備驅(qū)動(dòng)分析fs_operation結(jié)構(gòu)加載驅(qū)動(dòng)程序了解設(shè)備驅(qū)動(dòng)程序的概念了解Linux字符設(shè)備驅(qū)動(dòng)程序結(jié)構(gòu)能夠編寫(xiě)字符設(shè)備驅(qū)動(dòng)程序編寫(xiě)Skull驅(qū)動(dòng)編寫(xiě)鍵盤(pán)驅(qū)動(dòng)編寫(xiě)I/O驅(qū)動(dòng)分析一個(gè)看門(mén)狗驅(qū)動(dòng)程序?qū)Ρ萀inux2.6內(nèi)核與2.4內(nèi)核中字符設(shè)備驅(qū)動(dòng)的不同Linux塊設(shè)備驅(qū)動(dòng)程序塊設(shè)備驅(qū)動(dòng)程序工作原理典型的塊設(shè)備驅(qū)動(dòng)程序分析塊設(shè)備的讀寫(xiě)請(qǐng)求隊(duì)列了解Linux塊設(shè)備驅(qū)動(dòng)程序結(jié)構(gòu)能夠編寫(xiě)簡(jiǎn)單的塊設(shè)備驅(qū)動(dòng)程序比較字符設(shè)備與塊

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論