目標硬件的瓶頸
目標硬件
產(chǎn)品代碼最終運行的硬件載體
目標硬件的瓶頸
軟件只能在目標硬件上運行灭抑,將面臨一些瓶頸:
- 硬件就緒后于軟件開發(fā)玲献,推遲了軟件測試;
- 目標硬件本身需要調(diào)試驗證,疊加軟件的調(diào)試驗證很泊,調(diào)試驗證困難度增加努咐;
- 系統(tǒng)的構(gòu)建和上傳普遍漫長
那如何解決硬件瓶頸問題呢苦蒿?
- 傳統(tǒng)手段:開發(fā)板
可以解決項目早期硬件未到位及部分調(diào)試驗證問題,但未解決系統(tǒng)構(gòu)建上傳漫長等問題渗稍; - 更為有效的手段:雙目標開發(fā)
雙目標開發(fā)
- 雙目標:目標硬件佩迟、開發(fā)系統(tǒng)
- 代碼從第一天就設(shè)計成至少在兩個平臺上運行
雙目標好處:
- 硬件就緒之前就能測試代碼
- 避免硬件和軟件同時調(diào)試
- 幫助設(shè)計
- 更關(guān)注軟硬件的邊界,軟硬件解耦
- 快速移植到新硬件竿屹,自動化單元測試驗證
雙目標測試的風(fēng)險:
- 編譯特性报强、語言特性不同
- 基本數(shù)據(jù)類型可能不同
- 字節(jié)序及數(shù)據(jù)結(jié)構(gòu)對齊可能不同
如何降低雙目標測試風(fēng)險?
開發(fā)系統(tǒng)盡量選用與目標硬件相同的編譯拱燃、語言秉溉、數(shù)據(jù)類型、字節(jié)序及對齊等
嵌入式的TDD循環(huán)
-
平臺1: TDD微循環(huán)
- 寫通用軟件
- 隔離硬件和軟件
- 頻繁運行
-
平臺2: 目標編譯器兼容性檢查
- 每次采用新的語言特性時編譯
- 這可以提醒你一些移植性問題,比如有些頭文件沒有召嘶、不兼容的或者缺失的語言特性父晶。
-
平臺3: 評估板上運行單元測試
- 一直保持在評估板上運行的能力
- 前期可用于評估在目標硬件上的效果
- 后期可用于排除目標硬件可疑行為
-
平臺4:在目標硬件上運行單元測試
- 若內(nèi)存不能一次性裝入所有測試,可以分割成多組測試套件弄跌,分批裝入測試
-
平臺5: 在目標硬件上運行驗收測試
- 手工測試不能完全被自動化的依賴于硬件的代碼
雙目標的不兼容性
如何處理與平臺相關(guān)的不兼容性甲喝?
- 共用接口、獨立實現(xiàn)(共用頭文件铛只、分平臺獨立目錄及源文件)
- 每個平臺有一個目錄保存與平臺相關(guān)的代碼
- 利用編譯器和鏈接器
和硬件一起測試
和硬件一起的測試應(yīng)該自動化
3種可能的硬件測試:
- 自動化硬件測試
- 部分自動化硬件測試
- 有效地最小化依賴于硬件的代碼埠胖,并手工測試
- 利用外部設(shè)備的自動化硬件測試
外部設(shè)備對目標系統(tǒng)進行一些輸入,測試目標硬件的輸出是否符合預(yù)期淳玩。
比如LED硬件亮滅可能需要人工的半自動化測試押袍,若有外部工具可以對其LED控制,并有相應(yīng)LED效果的捕獲手段即可完成全自動化的測試凯肋。