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