當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式分享
[導(dǎo)讀]將新的嵌入式產(chǎn)品快速部署到市場(chǎng)中的一個(gè)策略是利用平臺(tái)。你或你的公司可能有一個(gè)產(chǎn)品路線圖來(lái)確定未來(lái)幾年將要發(fā)布的產(chǎn)品。由于客戶需要稍有不同的特性、配置和定制,開發(fā)一個(gè)OT產(chǎn)品是不實(shí)際的。相反,如果您創(chuàng)建了一個(gè)具有通用核心軟件的產(chǎn)品平臺(tái),可以擴(kuò)展和配置,那么您就可以大大降低成本和開發(fā)時(shí)間。讓我們來(lái)探索編寫可配置固件的五個(gè)技巧,我認(rèn)為這將極大地改進(jìn)您的軟件。

將新的嵌入式產(chǎn)品快速部署到市場(chǎng)中的一個(gè)策略是利用平臺(tái)。你或你的公司可能有一個(gè)產(chǎn)品路線圖來(lái)確定未來(lái)幾年將要發(fā)布的產(chǎn)品。由于客戶需要稍有不同的特性、配置和定制,開發(fā)一個(gè)OT產(chǎn)品是不實(shí)際的。相反,如果您創(chuàng)建了一個(gè)具有通用核心軟件的產(chǎn)品平臺(tái),可以擴(kuò)展和配置,那么您就可以大大降低成本和開發(fā)時(shí)間。讓我們來(lái)探索編寫可配置固件的五個(gè)技巧,我認(rèn)為這將極大地改進(jìn)您的軟件。

技巧1-從自上而下的方法入手

嵌入式軟件團(tuán)隊(duì)通常很難編寫可配置的軟件,因?yàn)樗麄兛紤]的是自下而上的方法。從硬件上接近軟件,將硬件放在設(shè)計(jì)中心,而不是應(yīng)用程序或用戶。結(jié)果通常是緊密耦合的代碼,并且?guī)缀鯖]有內(nèi)置的配置。這正是我們不希望看到的。

改變方法,從上到下思考嵌入式軟件可以改變一切。開發(fā)者將不得不考慮他們的客戶將如何使用這些產(chǎn)品。很多時(shí)候,通過不同客戶的眼光來(lái)觀察一個(gè)產(chǎn)品,就會(huì)立即確定需要配置的地方。一個(gè)客戶可能需要電動(dòng)機(jī)轉(zhuǎn)速設(shè)置A,而另一個(gè)需要電動(dòng)機(jī)設(shè)置B.在電動(dòng)機(jī)故障故障中,一個(gè)客戶可能希望LED為常亮上,而另一個(gè)客戶則希望它在5赫茲閃爍。

從頂部開始,與客戶一起工作,到硬件將提高軟件的可配置性。

技巧#2-利用配置文件

如果你從固件和微控制器行業(yè)的外部看,你會(huì)發(fā)現(xiàn)從事應(yīng)用程序的軟件開發(fā)人員使用配置文件來(lái)調(diào)整他們的軟件。配置文件可以幫助開發(fā)人員決定他們希望應(yīng)用程序在不同配置設(shè)置下的行為。顯然,配置文件為軟件提供了一定程度的定制,可以提高重用性,并可能降低總體成本。

固件開發(fā)人員可能在非易失性內(nèi)存中包含一些配置參數(shù),以允許自定義;然而,這些自定義只影響系統(tǒng)的運(yùn)行時(shí)行為。完全改變核心代碼行為的配置如何?

我經(jīng)常用來(lái)改進(jìn)嵌入式軟件的可配置性的一個(gè)有趣的技術(shù)是使用自動(dòng)生成代碼的配置文件。例如,我編寫了一個(gè)比頓工具包,它將在一個(gè)具有線程配置信息的YMAL文件中讀取,并生成被編譯到我的應(yīng)用程序中的C/C++代碼。如果客戶需要自定義特性,可以將新線程添加到配置中并自動(dòng)納入構(gòu)建中。這個(gè)想法可以超越線程應(yīng)用于產(chǎn)品的特定信息,如電機(jī)的數(shù)量,繼電器,存在或不存在的硬件等等。

入到生成器中,生成基于配置設(shè)置的源代碼。

技巧3-在代碼中創(chuàng)建配置表

在我的職業(yè)生涯的大部分時(shí)間里,我使用的一種編寫可配置代碼的技術(shù)是創(chuàng)建和使用配置表。配置表通常被定義為結(jié)構(gòu)的數(shù)組.例如,如果我想為數(shù)字輸入/輸出外圍創(chuàng)建一個(gè)配置表,我可能會(huì)根據(jù)所支持的特性定義一個(gè)類似于下列代碼的結(jié)構(gòu):

typedef struct

{

DioChannel_t Channel;

uint8_t Resistor;

uint8_t DriveStrength;

uint8_t PassiveFilter;

uint8_t Direction;

uint8_t State;

uint8_t Function;

}DioConfig_t;

上面的結(jié)構(gòu)定義了通常用于初始化DIA銷的特性。然后,我們可以創(chuàng)建一個(gè)結(jié)構(gòu)的數(shù)組,其中包含每個(gè)DOS銷的配置信息,比如:

static Dio_Config_t const Dio_Config[] =

{

// Name, Resister, Drive, Filer, Dir, State, Function

{PORTA_1, DISABLED, HIGH, DISABLED, OUTPUT, HIGH, FCN_GPIO},

{PORTA_2, DISABLED, HIGH, DISABLED, OUTPUT, HIGH, FCN_GPIO},

{SWD_DIO, PULLUP, LOW, DISABLED, OUTPUT, HIGH, FCN_MUX7},

{PORTA_4, DISABLED, HIGH, DISABLED, OUTPUT, HIGH, FCN_GPIO},

{PORTA_5, DISABLED, HIGH, DISABLED, INPUT, HIGH, FCN_GPIO},

{PORTA_6, DISABLED, HIGH, DISABLED, OUTPUT, HIGH, FCN_GPIO},

{PORTA_7, DISABLED, HIGH, DISABLED, OUTPUT, HIGH, FCN_GPIO},

{PORTA_8, DISABLED, HIGH, DISABLED, OUTPUT, HIGH, FCN_GPIO},

};

您會(huì)喜歡這些配置表,原因有幾個(gè):

· 它們是人類可讀的,對(duì)代碼評(píng)審很有幫助

· 它們可以通過讀取YMAL、JSON等文件的腳本生成

· 如果需要,可以由人手工編輯

· 通過在數(shù)組上循環(huán)簡(jiǎn)化初始化代碼

· 它是可移植、可重用和可伸縮的

· 它們可以用于硬件和軟件配置

技巧4-使用抽象層

對(duì)于許多固件,您可能注意到的一個(gè)問題是它與硬件緊密耦合。固件開發(fā)人員經(jīng)常將他們的應(yīng)用程序代碼直接綁定到硬件上,這使得固件的移植和重用變得困難。正如您在芯片短缺期間可能學(xué)到的,如果您需要重新配置應(yīng)用程序以使用一個(gè)新的芯片,那么回去重做所有這些代碼將是一場(chǎng)噩夢(mèng)。您需要能夠很容易地配置您的應(yīng)用程序來(lái)使用任何硬件。

一種解決方案是使用抽象層。抽象層為訪問驅(qū)動(dòng)程序必須堅(jiān)持的硬件創(chuàng)建一個(gè)接口。應(yīng)用程序代碼調(diào)用抽象。這個(gè)概念被稱為依賴倒置原理,它是面向?qū)ο笤O(shè)計(jì)的堅(jiān)實(shí)原理的一部分。通過使用硬件和應(yīng)用程序代碼之間的接口,您可以顛倒依賴關(guān)系來(lái)打破硬件/應(yīng)用程序依賴關(guān)系,并使軟件和硬件更易于配置。

技巧5-多態(tài)性

如果您是一個(gè)C程序員,您可能會(huì)認(rèn)為多態(tài)性是一個(gè)壞詞或在C中不存在的東西。在這兩種情況下,你都是錯(cuò)誤的。多態(tài)性是一種強(qiáng)大的技術(shù),允許我們?cè)诰幾g時(shí)(靜態(tài)多態(tài)性)或運(yùn)行時(shí)(動(dòng)態(tài)多態(tài)性)配置我們的應(yīng)用程序行為。多態(tài)性允許單個(gè)接口表示不同類型的對(duì)象。

例如,假設(shè)你的產(chǎn)品閃爍著LED。LED可以通過DOC端口連接到硬件,可以連接到PBM通道,也可以連接到SPI或I2C上的外部I/O擴(kuò)展器,等等。根據(jù)硬件版本或客戶需求,可能會(huì)改變LED的連接方式。雖然這似乎是一個(gè)令人討厭的配置問題,但是開發(fā)人員可以使用多態(tài)性來(lái)編寫不在乎LED如何連接的應(yīng)用程序代碼。多態(tài)性可以提高可配置性,以及可重用性和靈活性。

結(jié)論

今天的嵌入式產(chǎn)品不再是未來(lái)幾年制造的一次性產(chǎn)品。技術(shù)的創(chuàng)新和變化是指數(shù)級(jí)的,團(tuán)隊(duì)需要開發(fā)可重用的平臺(tái)代碼,以便在未來(lái)幾年推出許多產(chǎn)品。為了滿足這一需求,您必須在固件中采用可配置性。在某些情況下,可配置固件將增加復(fù)雜性和啟動(dòng)成本,從內(nèi)存和性能的角度來(lái)看,可能甚至效率更低。然而,可配置性將給予企業(yè)開發(fā)嵌入式產(chǎn)品的靈活性和可伸縮性,以應(yīng)對(duì)未來(lái)客戶的挑戰(zhàn)。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉