對嵌入式系統(tǒng)進行版本控制的五個技巧
在這篇文章中,我們將研究對嵌入式系統(tǒng)進行版本控制的五個技巧。
技巧1 – 使用 GPIO 對 PCB 版本進行硬編碼
并非所有系統(tǒng)都有兩個或三個可用的空閑 GPIO 線。相反,開發(fā)人員還可以利用免費的模數(shù) (ADC) 通道并使用模擬電壓來表示版本號。在這種情況下,單個 ADC 通道可以連接到電阻橋的中點,其中一個電阻連接到 VCC,另一個連接到地。在這種情況下,將調(diào)整電阻值以提供與版本號相關聯(lián)的特定電壓。對于低功率應用,開發(fā)人員希望選擇足夠大的電阻值,以防止任何大的寄生電流通過電路。
技巧2 – 使用 Major.Minor.Patch 語義
開發(fā)人員可以使用多種不同的方法對他們的嵌入式軟件進行版本控制。不過,應該采用并適合大多數(shù)軟件開發(fā)團隊使用的系統(tǒng)是 MAJOR.MINOR.PATCH 語義。毫無疑問,你已經(jīng)看到具有這些版本號的軟件,例如 1.0.0、1.1.2、2.4.2 等。
由于語義定義,通用版本控制方案和對更改影響的理解一目了然。例如,MAJOR 編號僅在軟件發(fā)布時 API 更改不兼容時才會增加。這意味著我們僅在代碼發(fā)生不向后兼容的更改時才增加 MAJOR。僅當進行與現(xiàn)有 API 向后兼容的改進時,MINOR 編號才會增加。PATCH 僅在將錯誤修復應用于軟件時才會增加。
使用這種語義模式進行版本控制將使任何軟件嵌入式開發(fā)人員都能理解版本控制。
技巧3 – 創(chuàng)建一個 version.h 模塊
創(chuàng)建一個包含 Major.Minor.Patch 語義以及版本日志的 version.h 模塊是最有效的軟件版本控制方法。可以使用宏定義輕松設置軟件的版本號,例如:
- #define VERSION_MAJOR (1)
- #define VERSION_MINOR (0)
- #define VERSION_PATCH (0)
開發(fā)人員甚至可以設置允許運行軟件的最低硬件版本:
#define HARDWARE_VERSION_MIN (4)
version.h 模塊的一個重要部分不僅是對軟件進行版本控制,而且還包括版本日志。這可以使用注釋來完成,并且應該包括以下信息:
- 軟件版本
- 模塊已更改
- 對模塊的更改
技巧4 – 盡可能避免模塊和函數(shù)版本控制
嵌入式應用程序的版本控制方式完全取決于嵌入式開發(fā)團隊,但建議盡可能避免模塊和功能級別的版本控制,意思是不將版本號分配給單個 C 模塊或其中的函數(shù)。這樣做的原因是它為版本控制增加不必要的開銷,這也提高了版本控制信息出錯的可能性。
例如,如果對一個 Dio_Write 函數(shù)進行了更改,不增加該函數(shù)的版本號。更新 Dio_Write 所在組件的版本號,這可能是 Dio.c,也可能是驅(qū)動程序組件,它是特定微控制器驅(qū)動程序的集合。如果對功能進行版本化,還必須對模塊、組件和軟件進行版本化,可能會忘記在某個地方更新它,然后這些更改就會丟失。最好避免在如此低的級別進行版本控制。
技巧5 – 將 VCS 與你的 IDE 集成
版本控制軟件的一個重要方面是該軟件如何集成到版本控制系統(tǒng) (VCS) 中。目前最流行的 VCS 是 git,但一些開發(fā)團隊仍在使用 svn 和 mecurial。在對軟件進行版本控制時,確保將 VCS 功能集成到開發(fā)環(huán)境中以使提交更改變得簡單和容易,這一點至關重要。例如,許多 VCS 插件將允許開發(fā)人員單擊一個按鈕,他們將添加任何新的更改到推送。他們還會彈出一個對話框,讓開發(fā)人員有機會評論他們所做的更改,這是復制在 version.h 中記錄的更改并將它們粘貼到 VCS 日志中的絕佳機會,這樣軟件和 VCS 之間的所有版本信息都匹配!
結(jié)論
對嵌入式系統(tǒng)進行版本控制并不一定很復雜。事實上,你對系統(tǒng)進行版本控制越簡單,使用錯誤版本的硬件或軟件而出現(xiàn)混淆或問題的可能性就越小。嵌入式開發(fā)人員可以利用多種技巧來簡化版本控制,例如使用集成版本日志和基于硬件的版本控制。無論采用什么系統(tǒng),成功的唯一方法是相關開發(fā)人員采用嚴格的版本控制方法,并且在提交軟件時不要偷工減料。