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