www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

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

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

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

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

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

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

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

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

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

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

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

理由4-靈活性

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

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

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

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

結(jié)論

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


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

鏈表作為一種基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu),在程序設(shè)計中扮演著重要角色。掌握鏈表的高效操作技巧,特別是逆序、合并和循環(huán)檢測,對于提升算法性能和解決復雜問題至關(guān)重要。本文將詳細介紹這些操作的C語言實現(xiàn),并分析其時間復雜度。

關(guān)鍵字: 鏈表 C語言

在C/C++多文件編程中,靜態(tài)變量(static)與全局變量的作用域規(guī)則看似簡單,實則暗藏諸多陷阱。開發(fā)者若未能準確理解其鏈接屬性與生命周期,極易引發(fā)難以調(diào)試的內(nèi)存錯誤、競態(tài)條件以及維護災(zāi)難。本文將深入剖析這兩類變量的作...

關(guān)鍵字: 靜態(tài)變量 全局變量 C語言

在嵌入式系統(tǒng)和服務(wù)器開發(fā)中,日志系統(tǒng)是故障排查和運行監(jiān)控的核心組件。本文基于Linux環(huán)境實現(xiàn)一個輕量級C語言日志庫,支持DEBUG/INFO/WARN/ERROR四級日志分級,并實現(xiàn)按大小滾動的文件輪轉(zhuǎn)機制。該設(shè)計在某...

關(guān)鍵字: C語言 嵌入式系統(tǒng)

在嵌入式系統(tǒng)和底層驅(qū)動開發(fā)中,C語言因其高效性和可控性成為主流選擇,但缺乏原生單元測試支持成為開發(fā)痛點。本文提出一種基于宏定義和測試用例管理的輕量級單元測試框架方案,通過自定義斷言宏和測試注冊機制,實現(xiàn)無需外部依賴的嵌入...

關(guān)鍵字: C語言 嵌入式系統(tǒng) 驅(qū)動開發(fā)

在嵌入式系統(tǒng)開發(fā)中,實時操作系統(tǒng)(RTOS)的任務(wù)調(diào)度算法直接影響系統(tǒng)的響應(yīng)速度和資源利用率。時間片輪轉(zhuǎn)(Round-Robin, RR)作為一種經(jīng)典的公平調(diào)度算法,通過為每個任務(wù)分配固定時間片實現(xiàn)多任務(wù)并發(fā)執(zhí)行。本文將...

關(guān)鍵字: 實時操作系統(tǒng) RTOS C語言

在Linux設(shè)備驅(qū)動開發(fā)中,等待隊列(Wait Queue)是實現(xiàn)進程睡眠與喚醒的核心機制,它允許進程在資源不可用時主動放棄CPU,進入可中斷睡眠狀態(tài),待資源就緒后再被喚醒。本文通過C語言模型解析等待隊列的實現(xiàn)原理,結(jié)合...

關(guān)鍵字: 驅(qū)動開發(fā) C語言 Linux

在嵌入式系統(tǒng)開發(fā)中,C語言與匯編的混合編程是優(yōu)化性能、訪問特殊指令或硬件寄存器的關(guān)鍵技術(shù)。然而,內(nèi)聯(lián)匯編的語法差異和寄存器使用規(guī)則常導致難以調(diào)試的問題。本文以ARM Cortex-M和x86架構(gòu)為例,系統(tǒng)梳理內(nèi)聯(lián)匯編的核...

關(guān)鍵字: C語言 匯編混合編程

在計算機安全領(lǐng)域,緩沖區(qū)溢出攻擊長期占據(jù)漏洞利用榜首。這種攻擊通過向程序緩沖區(qū)寫入超出其容量的數(shù)據(jù),覆蓋相鄰內(nèi)存區(qū)域(如返回地址),進而實現(xiàn)任意代碼執(zhí)行。本文將深入探討棧保護機制與安全函數(shù)(如snprintf)的集成防御...

關(guān)鍵字: 棧保護 安全函數(shù) C語言

在嵌入式系統(tǒng)和大規(guī)模數(shù)值計算等性能敏感場景中,程序優(yōu)化是提升效率的關(guān)鍵環(huán)節(jié)。gprof作為GNU工具鏈中的性能分析工具,能夠精準定位CPU時間消耗熱點。本文通過實際案例演示gprof的三個核心使用步驟,幫助開發(fā)者快速識別...

關(guān)鍵字: C語言 gprof 熱點函數(shù)

哈希表作為高效數(shù)據(jù)檢索的核心結(jié)構(gòu),其性能高度依賴沖突解決策略。本文通過C語言實現(xiàn)對比鏈地址法與開放尋址法,揭示兩種方法在內(nèi)存占用、查詢效率及實現(xiàn)復雜度上的差異,為工程實踐提供量化參考。

關(guān)鍵字: 哈希表 鏈地址法 開放尋址法 C語言
關(guān)閉