當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式分享
[導(dǎo)讀]一開始,開發(fā)人員從零開始創(chuàng)建所有的代碼,這是困難的,耗時(shí)的,痛苦的。開發(fā)人員努力工作,微控制器供應(yīng)商生成構(gòu)建環(huán)境和平臺(tái)來抽象低級(jí)別的啟動(dòng)代碼和構(gòu)建環(huán)境。開發(fā)人員很高興,現(xiàn)在能夠更快地編寫他們的應(yīng)用程序代碼。雖然提供預(yù)配置的構(gòu)建環(huán)境是有幫助的,但是有五個(gè)原因,開發(fā)團(tuán)隊(duì)?wèi)?yīng)該考慮構(gòu)建自己的C/C++環(huán)境,而不是使用他們的單片機(jī)供應(yīng)商提供的環(huán)境。

一開始,開發(fā)人員從零開始創(chuàng)建所有的代碼,這是困難的,耗時(shí)的,痛苦的。開發(fā)人員努力工作,微控制器供應(yīng)商生成構(gòu)建環(huán)境和平臺(tái)來抽象低級(jí)別的啟動(dòng)代碼和構(gòu)建環(huán)境。開發(fā)人員很高興,現(xiàn)在能夠更快地編寫他們的應(yīng)用程序代碼。雖然提供預(yù)配置的構(gòu)建環(huán)境是有幫助的,但是有五個(gè)原因,開發(fā)團(tuán)隊(duì)?wèi)?yīng)該考慮構(gòu)建自己的C/C++環(huán)境,而不是使用他們的單片機(jī)供應(yīng)商提供的環(huán)境。

理由1-了解你的應(yīng)用程序的基礎(chǔ)

許多單片機(jī)供應(yīng)商在創(chuàng)建開發(fā)平臺(tái)方面做了很多工作,他們的客戶可以使用這些平臺(tái)開發(fā)嵌入式產(chǎn)品。畢竟,如果客戶完成了所有通常在每個(gè)產(chǎn)品上完成的工作,比如編寫鏈接器腳本、啟動(dòng)代碼、鏈接標(biāo)準(zhǔn)庫(kù)和初始化微控制器,他們將從中受益。客戶可以忽略這個(gè)標(biāo)準(zhǔn)代碼,而專注于更快地編寫他們的應(yīng)用程序,這將使他們更快地進(jìn)入市場(chǎng),并且,一般來說,銷售更多的微控制器。

我看到的問題是,開發(fā)人員忽略了底層代碼,忽略了他們的構(gòu)建環(huán)境是如何工作的,甚至忽略了與項(xiàng)目相關(guān)的內(nèi)容!更糟糕的是,供應(yīng)商編寫的代碼是作為通用代碼開發(fā)出來的,是一個(gè)適合所有解決方案的"一刀切"。這可能不適合任何一個(gè)特定的應(yīng)用。

創(chuàng)建您的構(gòu)建環(huán)境,在這里您編寫鏈接器,啟動(dòng)代碼,設(shè)置C/C++運(yùn)行時(shí),并創(chuàng)建您的制作文件,確保您了解您的應(yīng)用程序和環(huán)境的基礎(chǔ)。你知道哪里有什么原因。您知道您使用什么程序集和C/C++標(biāo)記來構(gòu)建應(yīng)用程序以及原因。實(shí)際上,您甚至將了解C/C++運(yùn)行時(shí)環(huán)境,以及它如何影響代碼大小和執(zhí)行效率。如果你只使用你所提供的東西,或者回顧其中的東西,你就會(huì)錯(cuò)過一些重要的細(xì)節(jié)。

原因2-代碼優(yōu)化

默認(rèn)情況下,提供給開發(fā)人員的許多構(gòu)建環(huán)境可能被配置為嵌入式開發(fā),但它們通常被配置為通用解決方案。該解決方案旨在滿足一般開發(fā)商或公司的需求。不幸的是,結(jié)果往往是代碼膨脹,不需要庫(kù)函數(shù),甚至是復(fù)雜的讀取代碼。例如,看看很多供應(yīng)商提供的代碼。它們將包括來自C庫(kù)的標(biāo)準(zhǔn)系統(tǒng)調(diào)用,如打印機(jī)、退出、殺死、讀、寫等。使用這些系統(tǒng)調(diào)用的最小實(shí)現(xiàn)可以很容易地添加超過10千字節(jié)的代碼空間。也許這對(duì)許多團(tuán)隊(duì)來說并不是什么大問題,因?yàn)樗麄兪褂么笮?2位處理器,但是對(duì)于其他嵌入式產(chǎn)業(yè),這可能會(huì)制造或破壞一個(gè)應(yīng)用程序!(從閃爍著LED的平臺(tái)代碼創(chuàng)建一個(gè)基線項(xiàng)目并發(fā)現(xiàn)它編譯到超過60千字節(jié)的代碼,這種情況并不少見!)。

另一個(gè)優(yōu)化開發(fā)人員經(jīng)常忽略了默認(rèn)情況下不會(huì)進(jìn)入構(gòu)建系統(tǒng)的小性能技巧。例如,如果我使用具有特殊的無等待RAM的部件,我可能會(huì)設(shè)置我的啟動(dòng)代碼,將中斷向量放到無等待RAM中,以便從我的中斷中獲得更高效、確定性的運(yùn)行時(shí)行為。不幸的是,我經(jīng)常看到的由供應(yīng)商提供的代碼并沒有做到這一點(diǎn)。如果您不構(gòu)建或仔細(xì)檢查您的環(huán)境,您將浪費(fèi)時(shí)鐘周期,并可能增加系統(tǒng)的響應(yīng)時(shí)間。原因#3-更容易與快速和DevOps流程的集成

使用快速和開發(fā)是一個(gè)必要的過程,正在許多嵌入式團(tuán)隊(duì)中流行。在嵌入式社區(qū)中獲得動(dòng)力的快速方法包括測(cè)試驅(qū)動(dòng)開發(fā)(TDD)。開發(fā)人員開發(fā)計(jì)劃所包含的不僅僅是持續(xù)集成和持續(xù)部署(CI/CD),但這也是我遇到的大多數(shù)團(tuán)隊(duì)都專注的地方。

使用單片機(jī)供應(yīng)商提供的環(huán)境,利用TDD和CI/CD可能會(huì)更麻煩和復(fù)雜。這是因?yàn)樗麄儧]有考慮你需要遵循哪些流程來交付產(chǎn)品,只是你需要什么來讓他們的處理器啟動(dòng)和運(yùn)行。結(jié)果可能是一個(gè)構(gòu)建環(huán)境,不能很好地與你的其他過程和需求相匹配。我見過團(tuán)隊(duì)為了讓所有這些過程和工具都能很好地結(jié)合在一起而艱難地通過各種解決方案,有時(shí)甚至是雙重環(huán)境。

理由4-靈活性

有時(shí)候,我發(fā)現(xiàn)一個(gè)已經(jīng)為我建立的環(huán)境很難定制。有時(shí),整個(gè)構(gòu)建系統(tǒng)中有太多的小掛鉤,因此自定義它所需的時(shí)間是從頭開始所需時(shí)間的兩倍。例如,您可能希望禁用一個(gè)庫(kù),但卻發(fā)現(xiàn)這樣做會(huì)導(dǎo)致幾十個(gè)編譯錯(cuò)誤,迫使研究時(shí)間去解決。

我發(fā)現(xiàn)一個(gè)有幫助的靈活性方法是IDI靈活性。我經(jīng)常發(fā)現(xiàn)不同的開發(fā)人員對(duì)于他們想要使用的IDES和文本編輯器有不同的偏好。例如,一個(gè)人可能喜歡崇高的文本,另一個(gè)視覺工作室的代碼,或另一個(gè)供應(yīng)商提供的IDI。開發(fā)人員經(jīng)常爭(zhēng)論,試圖獲得他們喜歡的工具作為團(tuán)隊(duì)的選擇。如果您構(gòu)建您的環(huán)境,每個(gè)人都可以使用他們的首選工具,這有助于提高開發(fā)人員的效率。

理由5-構(gòu)建系統(tǒng)定制

我相信建立自己的C+C++環(huán)境的最大原因是能夠定制它。正如我提到的,沒有兩個(gè)項(xiàng)目是相同的。有些共同點(diǎn)是存在的,但是您可以通過定制構(gòu)建系統(tǒng)來顯著地提高代碼的大小和性能。有時(shí),在你從頭開始之前,你無法理解需要什么樣的定制。自定義您的C/C++環(huán)境和構(gòu)建系統(tǒng)的能力可以顯著影響您的項(xiàng)目的成功。

結(jié)論

為嵌入式應(yīng)用程序創(chuàng)建定制構(gòu)建系統(tǒng)有許多好處。今天我們探索了一些可能激起你興趣的東西。一開始,進(jìn)行這樣的努力可能看起來很復(fù)雜,并且充滿潛在的問題。幸運(yùn)的是,這個(gè)過程遠(yuǎn)沒有你想象的那么復(fù)雜。在不到一周的時(shí)間里,幾乎任何嵌入式處理器都可以研究和實(shí)現(xiàn)定制構(gòu)建系統(tǒng)。此外,該構(gòu)建系統(tǒng)是一個(gè)高度調(diào)整、優(yōu)化良好的系統(tǒng),可以幫助為您的應(yīng)用程序奠定基礎(chǔ),并構(gòu)建能夠支持您的產(chǎn)品數(shù)年的流程。


本站聲明: 本文章由作者或相關(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日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(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)閉