如果沒有一個(gè)清晰的構(gòu)建系統(tǒng)的愿景,你可能會(huì)發(fā)現(xiàn)嵌入式開發(fā)團(tuán)隊(duì)沒有他們應(yīng)有的生產(chǎn)力。他們將錯(cuò)過驅(qū)動(dòng)更快和更可靠的軟件開發(fā)的基本特性和概念。在本帖中,我們將討論嵌入式軟件構(gòu)建系統(tǒng)的理想愿景、它們的輸入和輸出,以及如何開始開發(fā)理想的構(gòu)建系統(tǒng)。
構(gòu)建系統(tǒng)由什么組成?
構(gòu)建系統(tǒng)應(yīng)被視為包含以下部分:
存儲(chǔ)庫——從構(gòu)建中提取源代碼的地方。(可能一個(gè)或多個(gè))。
源代碼——這些是系統(tǒng)的輸入,包括平臺(tái)配置源、生成的和手寫的代碼。
測(cè)試——這些是用于驗(yàn)證代碼行為的單元、集成和系統(tǒng)測(cè)試。
構(gòu)建配置——這些定義了構(gòu)建輸出是什么。
構(gòu)建工具——該工具收集所有輸入并生成所需的輸出。
在你的構(gòu)建系統(tǒng)中,有兩個(gè)方面需要特別注意;構(gòu)建配置和源代碼。
定義理想的構(gòu)建配置
嵌入式開發(fā)人員應(yīng)該使用的五種構(gòu)建配置:
l分析–對(duì)代碼庫執(zhí)行度量分析
l模擬–構(gòu)建在主機(jī)環(huán)境中執(zhí)行的代碼,而不是在目標(biāo)環(huán)境中執(zhí)行
l測(cè)試——構(gòu)建并運(yùn)行單元、集成和回歸測(cè)試
l發(fā)布–在客戶硬件上構(gòu)建發(fā)布代碼
l調(diào)試–在實(shí)驗(yàn)室中構(gòu)建在目標(biāo)上執(zhí)行的代碼
每個(gè)現(xiàn)代嵌入式軟件構(gòu)建系統(tǒng)都應(yīng)該包括這五種配置。然而,如果你沒有討論和定義你需要你的構(gòu)建系統(tǒng)做什么,你可能只有一個(gè)調(diào)試配置。
定義理想的軟件堆棧
你可能認(rèn)為你的軟件堆棧與構(gòu)建系統(tǒng)無關(guān);但是,你選擇的內(nèi)部版本配置可能會(huì)決定軟件的組織方式。畢竟,模擬應(yīng)用程序代碼的構(gòu)建不應(yīng)該包括低級(jí)目標(biāo)驅(qū)動(dòng)程序。事實(shí)上,你可能會(huì)發(fā)現(xiàn),即使你使用的中間件也完全不同!定義理想的構(gòu)建配置可能會(huì)影響軟件堆棧,反之亦然。
現(xiàn)代嵌入式軟件堆棧將包括通過HAL和API粘合在一起的多個(gè)獨(dú)立軟件層。嵌入式開發(fā)人員的軟件堆??赡馨韵聝?nèi)容:
l平臺(tái)配置–由目標(biāo)工具生成的軟件,如低級(jí)驅(qū)動(dòng)程序、操作系統(tǒng)(如RTOS)和中間件。
l模型生成的應(yīng)用程序代碼–由建模工具生成的軟件。軟件可以是狀態(tài)機(jī)、DSP算法等等。
l配置管理代碼–由你的系統(tǒng)代碼生成和管理的軟件。例如,應(yīng)用程序中包含的加熱器或閥門的數(shù)量。它實(shí)際上是基于YAML或其他配置格式文件的配置代碼。
l手寫應(yīng)用程序代碼–由你的團(tuán)隊(duì)在沒有其他工具幫助的情況下編寫的軟件。
l測(cè)試配置–成功運(yùn)行單元、集成、系統(tǒng)和模擬測(cè)試的各種測(cè)試配置和代碼。
當(dāng)你仔細(xì)定義你的軟件堆棧,并說明代碼在堆棧中的位置以及它是如何生成的,你會(huì)發(fā)現(xiàn)很多好處。例如,我們討論的軟件堆棧將在多個(gè)應(yīng)用程序中創(chuàng)建易于配置、可移植和重用的軟件。雖然你可能認(rèn)為這是不必要的,但我看到了一種趨勢(shì),即公司希望創(chuàng)建內(nèi)部平臺(tái),允許他們基于核心代碼庫推出大量產(chǎn)品。要成功地做到這一點(diǎn),你需要一個(gè)靈活的軟件堆棧和支持它們的構(gòu)建配置。
結(jié)論
在嵌入式開發(fā)中,一旦你有了理想的構(gòu)建系統(tǒng),看看你的構(gòu)建系統(tǒng)現(xiàn)在在哪里。隨著你慢慢建立它,你會(huì)發(fā)現(xiàn)你對(duì)軟件的工作方式有了新的能力和見解,它將變得更加強(qiáng)大和可靠。