嵌入式軟件開發(fā)
1、嵌入式平臺選型
嵌入式設計分三個階段:分析、設計和實現(xiàn)。
分析階段:是確定要解決的問題及需要完成的目標,也稱需求階段;
設計階段:主要是解決如何在給定的約束條件下完成用戶的需求;
實現(xiàn)階段:主要是解決如何在所選擇的硬件和軟件的基礎上進行整個軟硬件系統(tǒng)的協(xié)調和實現(xiàn)。
硬件的選擇包括:處理器、硬件部件
軟件的選擇包括:操作系統(tǒng)、編程語言、軟件開發(fā)工具、硬件調試工具和軟件組件。
2、軟件設計
⑴、軟件設計任務:準備一個工作計劃;確定軟件的結構;設計評審;維護工作計劃;與硬件部門密切合作、相互協(xié)調;控制工作的結果、把工作記錄存檔。
⑵、模塊結構設計
模塊結構設計的任務:將系統(tǒng)劃分為模塊,確定軟件的結構,模塊的功能和模塊間的接口,以及全局數(shù)據結構設。
模塊:是組成系統(tǒng)的基本單位,它的特點是可以組合、分解和更換。
模塊的四要素:輸入和輸出;處理功能;內部數(shù)據;程序代碼。
模塊結構設計應遵守的原則:所劃分的模塊其內部凝聚性要強,模塊之間的聯(lián)系要少,即要有很強的獨立性;模塊之間的連接只能存在上下級之間的調用關系,不能有同級之間的橫向關系;整個結構呈樹狀結構,不允許網狀結構或交叉調用關系;所有模塊必須嚴格地分類編碼并建立歸檔文件。
⑶、結構化設計的方法
結構化設計的方法是一種面向數(shù)據流的設計方法,基本思想是將系統(tǒng)設計成由相對獨立、功能單一的模塊組成的結構。
信息流的類型:變換流和事務流。
結構化設計方法的步驟:復查并精化數(shù)據流圖;確定DFD的信息流類型(變換型或事務型);根據流類型分別實施變換分析或事務分析;根據系統(tǒng)設計的原則,對程序結構圖進行優(yōu)化。
3、嵌入式程序設計
⑴、bootloader的設計
步驟;stage1和stage2兩大部
Stage1步驟:硬件設備初始化;為加載bootloader的stage1準備內存空間;復制bootloader的stage1到內存;設置好堆棧;跳轉到stage1的C入口點。
Stage2步驟:初始化本階段要使用的硬件設備;檢測系統(tǒng)內存映射;將內核映像和根文件系統(tǒng)映像到flash上讀入到內存中;為內核設置啟動參數(shù),并調用內核。
⑵、設備驅動程序設計
⑶、網絡應用程序設計
4、編碼
四個步驟:確定源程序的標準格式、制定編程規(guī)范;準備編程環(huán)境;編寫代碼;進行代碼審查,提高編碼質量。
5、測試
⑴、概述
軟件測試:是從經濟和效率的角度出發(fā),對軟件代碼進行質量和正確性保證的一個過程。
系統(tǒng)測試的目的:是為了發(fā)現(xiàn)至今尚未發(fā)現(xiàn)的錯誤。
規(guī)范化的測試過程:擬定測試計劃;編制測試大綱;根據測試大綱設計和生產測試用例;實施測試;生成測試報告。
⑵、測試方法
分類:人工測試和機器測試
人工測試的三種方法:個人復查、抽查、會審
機器測試分成:黑盒測試和白盒測試
黑盒測試:也稱功能測試,將軟件看成黑盒子,在完成不考慮軟件內部結構和特性的情況下,測試軟件的外部特性。包括:極限情況測試;邊界測試;異常測試;隨機測試;性能測試。
白盒測試:也稱結構測試,將軟件看成透明的的盒,根據程序的內部結構和邏輯來設計測試用例。原則:程序模塊中的所有獨立路徑至少執(zhí)行一次;在所有的邏輯判斷中,取“真”“假”的兩種情況至少都要執(zhí)行一次;每個循環(huán)都應在邊界條件和一般條件下各執(zhí)行一次;測試程序內部的數(shù)據結構的有效性。
⑶、測試步驟:
①、系統(tǒng)平臺測試:包括硬件電路測試、操作系統(tǒng)及底層驅動程序測試;
②、單元測試:也稱模塊測試。一般采用白盒測試法。主要測試模擬塊接口、局部數(shù)據結構、重要的執(zhí)行路徑、出錯處理、邊界條件。
測試時需要開的模塊包括:驅動模塊(相當于一個程序,負責接收測試用例的數(shù)據,將這些數(shù)據送到測試模塊,并輸出結果)和樁模塊(也稱為存根模塊,用來代替測試模塊中所調用的子模塊,其內可進行少量的數(shù)據處理,目的是為了檢驗入口,并輸出調用和返回的信息)
③、集成測試:也稱組裝測,就是把各個模塊按照系統(tǒng)設計說明書的要求組合起來進行測試。
兩種方法:一種是分別測試各個模塊,再把這些模塊組合起來進行整體測試,即非增量式集成;另一種是把下一個要測試的模塊組合到已測試好的模塊中,測試完成再將下一個模塊組合進來,進行測試,這樣逐步把所有的模塊組合在一起,并完成測試,即增量式集成。
④、系統(tǒng)測試:將嵌入式軟件、硬件,外設和網絡等各種因素結全在一起,進行整個系統(tǒng)的組裝測試和確認測試。一般采用黑盒測試法。
主要測試內容:恢復測試、強度測試、性能測試、可靠性測試。
⑤、測試結果分析
對測試結果分析和比較幫助錯誤的定位,指導程序員修改代碼。
⑷、覆蓋測試:是一種白盒測試法,測試人員必須擁有程序的規(guī)格說明書和程序清單。其基本思路是以程序的內部結構為基礎來設計測試用例,以覆蓋盡可能多的程序內部邏輯結構,發(fā)現(xiàn)其中的錯誤和問題,一般用在單元測試階段。
主要策略:語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋。
1、嵌入式平臺選型
嵌入式設計分三個階段:分析、設計和實現(xiàn)。
分析階段:是確定要解決的問題及需要完成的目標,也稱需求階段;
設計階段:主要是解決如何在給定的約束條件下完成用戶的需求;
實現(xiàn)階段:主要是解決如何在所選擇的硬件和軟件的基礎上進行整個軟硬件系統(tǒng)的協(xié)調和實現(xiàn)。
硬件的選擇包括:處理器、硬件部件
軟件的選擇包括:操作系統(tǒng)、編程語言、軟件開發(fā)工具、硬件調試工具和軟件組件。
2、軟件設計
⑴、軟件設計任務:準備一個工作計劃;確定軟件的結構;設計評審;維護工作計劃;與硬件部門密切合作、相互協(xié)調;控制工作的結果、把工作記錄存檔。
⑵、模塊結構設計
模塊結構設計的任務:將系統(tǒng)劃分為模塊,確定軟件的結構,模塊的功能和模塊間的接口,以及全局數(shù)據結構設。
模塊:是組成系統(tǒng)的基本單位,它的特點是可以組合、分解和更換。
模塊的四要素:輸入和輸出;處理功能;內部數(shù)據;程序代碼。
模塊結構設計應遵守的原則:所劃分的模塊其內部凝聚性要強,模塊之間的聯(lián)系要少,即要有很強的獨立性;模塊之間的連接只能存在上下級之間的調用關系,不能有同級之間的橫向關系;整個結構呈樹狀結構,不允許網狀結構或交叉調用關系;所有模塊必須嚴格地分類編碼并建立歸檔文件。
⑶、結構化設計的方法
結構化設計的方法是一種面向數(shù)據流的設計方法,基本思想是將系統(tǒng)設計成由相對獨立、功能單一的模塊組成的結構。
信息流的類型:變換流和事務流。
結構化設計方法的步驟:復查并精化數(shù)據流圖;確定DFD的信息流類型(變換型或事務型);根據流類型分別實施變換分析或事務分析;根據系統(tǒng)設計的原則,對程序結構圖進行優(yōu)化。
3、嵌入式程序設計
⑴、bootloader的設計
步驟;stage1和stage2兩大部
Stage1步驟:硬件設備初始化;為加載bootloader的stage1準備內存空間;復制bootloader的stage1到內存;設置好堆棧;跳轉到stage1的C入口點。
Stage2步驟:初始化本階段要使用的硬件設備;檢測系統(tǒng)內存映射;將內核映像和根文件系統(tǒng)映像到flash上讀入到內存中;為內核設置啟動參數(shù),并調用內核。
⑵、設備驅動程序設計
⑶、網絡應用程序設計
4、編碼
四個步驟:確定源程序的標準格式、制定編程規(guī)范;準備編程環(huán)境;編寫代碼;進行代碼審查,提高編碼質量。
5、測試
⑴、概述
軟件測試:是從經濟和效率的角度出發(fā),對軟件代碼進行質量和正確性保證的一個過程。
系統(tǒng)測試的目的:是為了發(fā)現(xiàn)至今尚未發(fā)現(xiàn)的錯誤。
規(guī)范化的測試過程:擬定測試計劃;編制測試大綱;根據測試大綱設計和生產測試用例;實施測試;生成測試報告。
⑵、測試方法
分類:人工測試和機器測試
人工測試的三種方法:個人復查、抽查、會審
機器測試分成:黑盒測試和白盒測試
黑盒測試:也稱功能測試,將軟件看成黑盒子,在完成不考慮軟件內部結構和特性的情況下,測試軟件的外部特性。包括:極限情況測試;邊界測試;異常測試;隨機測試;性能測試。
白盒測試:也稱結構測試,將軟件看成透明的的盒,根據程序的內部結構和邏輯來設計測試用例。原則:程序模塊中的所有獨立路徑至少執(zhí)行一次;在所有的邏輯判斷中,取“真”“假”的兩種情況至少都要執(zhí)行一次;每個循環(huán)都應在邊界條件和一般條件下各執(zhí)行一次;測試程序內部的數(shù)據結構的有效性。
⑶、測試步驟:
①、系統(tǒng)平臺測試:包括硬件電路測試、操作系統(tǒng)及底層驅動程序測試;
②、單元測試:也稱模塊測試。一般采用白盒測試法。主要測試模擬塊接口、局部數(shù)據結構、重要的執(zhí)行路徑、出錯處理、邊界條件。
測試時需要開的模塊包括:驅動模塊(相當于一個程序,負責接收測試用例的數(shù)據,將這些數(shù)據送到測試模塊,并輸出結果)和樁模塊(也稱為存根模塊,用來代替測試模塊中所調用的子模塊,其內可進行少量的數(shù)據處理,目的是為了檢驗入口,并輸出調用和返回的信息)
③、集成測試:也稱組裝測,就是把各個模塊按照系統(tǒng)設計說明書的要求組合起來進行測試。
兩種方法:一種是分別測試各個模塊,再把這些模塊組合起來進行整體測試,即非增量式集成;另一種是把下一個要測試的模塊組合到已測試好的模塊中,測試完成再將下一個模塊組合進來,進行測試,這樣逐步把所有的模塊組合在一起,并完成測試,即增量式集成。
④、系統(tǒng)測試:將嵌入式軟件、硬件,外設和網絡等各種因素結全在一起,進行整個系統(tǒng)的組裝測試和確認測試。一般采用黑盒測試法。
主要測試內容:恢復測試、強度測試、性能測試、可靠性測試。
⑤、測試結果分析
對測試結果分析和比較幫助錯誤的定位,指導程序員修改代碼。
⑷、覆蓋測試:是一種白盒測試法,測試人員必須擁有程序的規(guī)格說明書和程序清單。其基本思路是以程序的內部結構為基礎來設計測試用例,以覆蓋盡可能多的程序內部邏輯結構,發(fā)現(xiàn)其中的錯誤和問題,一般用在單元測試階段。
主要策略:語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋。

