1. gzyueqian
      18078865874

      嵌入式開發(fā):嵌入式軟件配置管理的3個技巧

      更新時間: 2022-05-27 09:22:57來源: 粵嵌教育瀏覽量:8825

        嵌入式軟件配置管理可能是一項棘手的工作。今天的系統(tǒng)通常設(shè)計為在多種產(chǎn)品中為不同的客戶在很長一段時間內(nèi)工作,這些系統(tǒng)需要能夠輕松配置,以便代碼不會成為噩夢,并最大限度地減少配置不當(dāng)?shù)臋C(jī)會。在這篇文章中,我們將探討嵌入式軟件配置管理的三個技巧,這些技巧可以幫助嵌入式開發(fā)人員簡化配置并最大限度地減少產(chǎn)品生命周期內(nèi)的技術(shù)債務(wù)。

        技巧1 – 使用單獨(dú)的回購

        在開發(fā)嵌入式產(chǎn)品時,將產(chǎn)品的所有代碼放入單個版本控制存儲庫中可能很誘人。畢竟是一個產(chǎn)品,不應(yīng)該把產(chǎn)品的所有東西都放在一個地方嗎?不!將應(yīng)用程序分成多個存儲庫可以顯著改善代碼庫配置管理。

        在許多情況下,一個產(chǎn)品代碼將用于多個產(chǎn)品SKU,并且在十年或更長時間內(nèi),可能會找到不同的配置來滿足客戶的要求。因此,團(tuán)隊可以仔細(xì)檢查他們的產(chǎn)品設(shè)計并將所有配置代碼放入單獨(dú)的存儲庫中。至少,這會創(chuàng)建核心產(chǎn)品代碼和幾個配置存儲庫,用于管理核心應(yīng)用程序的行為方式。這樣做的好處是,如果SKU 或特定客戶需要更改配置,它不會強(qiáng)制更改可能意外傳播到其他系統(tǒng)的應(yīng)用程序。

        配置不是唯一可以從放置在單獨(dú)的存儲庫中受益的組件,將應(yīng)用程序的每一層放入不同的存儲庫也有好處。例如,將驅(qū)動程序、中間件和應(yīng)用程序分離到單獨(dú)的存儲庫中可以迫使嵌入式開發(fā)人員更多地考慮代碼的接口和抽象,這將有助于最大限度地減少層之間的耦合。例如,在芯片短缺期間,許多團(tuán)隊一直在努力更換微控制器,因?yàn)樗麄儗?yīng)用程序與硬件緊密耦合。

        


        技巧2 – 利用 YAML、JSON 和 XML 文件

        在許多嵌入式產(chǎn)品中,開發(fā)人員將使用條件編譯語句來管理他們的系統(tǒng)配置。 例如,如果我有兩個不同的系統(tǒng),一個有兩個可以控制的繼電器,另一個有四個,開發(fā)人員將編寫如下C代碼:

        #if SKU == PRODUCT_1

        // Custom configuration for two relays.

        #elif SKU == PRODUCT_2

        // Custom configuration for four relays.

        #else

        #error “The Product SKU has not been defined!”

        #endif

        如果產(chǎn)品很簡單,那么在代碼中散布一些條件編譯并不是什么大問題,然而,今天的系統(tǒng)非常復(fù)雜,可能有數(shù)千條這樣的語句分散在各處。可以想象,這將成為維護(hù)和配置的噩夢。

        開發(fā)人員可以利用配置文件,而不是使用條件編譯。有兩種方式可以利用配置文件。首先,嵌入式開發(fā)人員可以只創(chuàng)建包含產(chǎn)品配置信息的C模塊配置,這些配置值被傳遞到各種應(yīng)用程序、中間件和驅(qū)動程序初始化函數(shù)中。其次,基于C的配置文件易于設(shè)置和維護(hù)。

        一種更現(xiàn)代的方法是利用 YAML、JSON 和/或 XML格式的配置文件。例如,回顧條件編譯示例,我們可以為兩個中繼配置編寫一個如下所示的YAML文件:

        —

        Hardware:

        Relays:

        0x01:GPIO01

        0x02:GPIO15

        四中繼配置 YAML 文件可能如下所示:

        —

        Hardware:

        Relays:

        0x01:GPIO01

        0x02:GPIO15

        0x03:GPIO22

        0x04:GPIO23

        使用YAML、JSON 和 XML文件有一個有趣的轉(zhuǎn)折,如何使用這些文件來配置 C/C++ 應(yīng)用程序?有幾種方法,比如編寫一個腳本,讀取YAML文件,然后生成等效的C代碼。例如,該過程可能如下所示:

        


        有些人在C之外使用配置文件并依賴腳本來構(gòu)建配置感覺很復(fù)雜。但是,如果操作正確,這種技術(shù)可以成為管理系統(tǒng)配置的一種有價值且有益的方式。

        技巧3 – 使用C/C++包管理器

        嵌入式開發(fā)人員可以利用的另一個選項來幫助管理他們的產(chǎn)品配置是使用包管理器。包管理器允許開發(fā)人員管理他們的軟件依賴項。此外,包管理器可以集成到構(gòu)建系統(tǒng)中,使開發(fā)人員能夠輕松地管理他們的構(gòu)建,包括他們的配置管理。

        有幾個包管理器可供使用C/C++的開發(fā)人員使用。例如,Microsoft C/C++ 團(tuán)隊維護(hù)了一個免費(fèi)可用的工具,稱為vcpkg,vcpkg 工具可用于集成第三方庫、框架和開源代碼或添加私有代碼。或者,conan是一個開源包管理器,也被廣泛使用。每種工具都有其優(yōu)點(diǎn)和缺點(diǎn),但無論你選擇哪一種,它們都可以非常有效地幫助管理軟件配置。

        結(jié)論

        很久以前,嵌入式軟件已經(jīng)從簡單的小控制應(yīng)用程序升級為通常需要復(fù)雜配置管理的復(fù)雜系統(tǒng)。條件編譯等舊技術(shù)在小型項目中可能會有所幫助,但隨著復(fù)雜性和規(guī)模的增長,嵌入式開發(fā)人員需要尋找更現(xiàn)代的工具。例如,包管理器和自動生成的配置文件可以極大地幫助改進(jìn)系統(tǒng)的配置管理。但是,當(dāng)然,成功使用這些工具依賴于紀(jì)律嚴(yán)明的團(tuán)隊,畢竟,誰想追逐生成配置的腳本中的錯誤?

      免費(fèi)預(yù)約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 在线看r级电影一区二区 | 婷婷国产天堂久久综合五月 | 色综合视频一区中文字幕 | 色午夜日本高清 | 亚洲综合中文字幕在线观看 | 又大又粗又爽的少妇免费视频 |