|
學嵌入式開發(fā)需要什么基礎_嵌入式軟件系統(tǒng)必須具有良好的可裁剪性,
公司在研發(fā)嵌入式產(chǎn)品過程中,產(chǎn)品的功能會不斷的添加和更新,產(chǎn)品的型號也會越來越多。這時產(chǎn)品的軟件研發(fā)團隊就需要考慮是在原有的軟件版本上修改還是全新開發(fā)。從研發(fā)成本上考慮會考慮基于原有軟件上修改。原有軟件上功能會越來越多,但一款產(chǎn)品可能只需要其中部分功能,這就要求嵌入式軟件系統(tǒng)具有良好可裁剪性。嵌入式系統(tǒng)提供良好的裁剪性,有利于產(chǎn)品開發(fā)團隊做出更多差異化的產(chǎn)品和低成本的產(chǎn)品(裁剪后的軟件系統(tǒng)通常也降低了對硬件的要求)。
嵌入式系統(tǒng)的可裁減性,必須在嵌入式系統(tǒng)設計中引入子系統(tǒng)和塊的概念,只有在頂層設計時明確了子系統(tǒng)和模塊?刹脺p性才能夠落地。分層設計做到位,子系統(tǒng)及模塊間的依賴關系越明確,耦合越少則裁減實施起來越簡單。
靜態(tài)編譯時主要是通過條件編譯宏來控制。為每個特性定義一個編譯宏,當一款產(chǎn)品的特性確定后,在編譯時只打開特定特性的編譯開關,這樣無關的特性代碼就不會參與編譯,有效的減少靜態(tài)編譯出來的軟件包體積。此方法的缺陷是必須重新編譯代碼,同時降低了代碼可維護性。
動態(tài)庫將各個功能模型分別編譯成動態(tài)庫,由主進程根據(jù)產(chǎn)品的功能需要加載需要的動態(tài)庫。這種方法需要主進程從產(chǎn)品的規(guī)格文件獲取需要加載的動態(tài)庫,并按動態(tài)庫要求的順序依次打開。此方法的優(yōu)點是不用重新編譯,缺陷是實現(xiàn)起來復雜。
控制函數(shù)流程,實現(xiàn)功能控制類似靜態(tài)編譯,只不過是將靜態(tài)編譯時的編譯宏改成全局變量判斷。這些全局變量應該在主進程啟動時從規(guī)格文件獲取特性并加載在全局變量中,通過這些特性全局變量控制函數(shù)(業(yè)務)流程,達到功能裁減的目的。此方法是前面兩種方法的折中,實現(xiàn)簡單也不需要重新編譯代碼。但軟件包體積沒有減小。
通常在一個項目中不會只使用其中一種方法,而是會根據(jù)不同場景在不同的層次上同時使用上述方法。
fqj |
|