99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

資深的嵌入式工程師如何看待全局變量形式

電子設(shè)計 ? 來源:mcu中文技術(shù)社區(qū) ? 作者:mcu中文技術(shù)社區(qū) ? 2021-01-15 14:47 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

全局變量簡直就是嵌入式系統(tǒng)的戈蘭高地。沖突最激烈的雙方是:

1. 做控制的工程師;
2. 做非嵌入式的軟件工程師。

做控制的工程師特點

他們普遍的理解就是“變量都寫成全局該有多方便”。我之前面試過一個非常有名的做控制實驗室里出來的PhD/Master,前前后后陸續(xù)有快十個人。面試問題是用C寫PID。到后面的幾位面試的時候我都覺得沒有看的意義了,因為全都寫的是同一個風格。大概就是這樣的:

float SetSpeed;
float err;
float err_last;
float Kp,Ki,Kd;
float integral;
float result;

float PID(float speed)
{
    err=SetSpeed-speed;
    integral+=err;
    result=Kp*err+Ki*integral+Kd*(err-err_last);
    err_last=err;
    return result;
}

代碼的特點就是所有的變量一定定義在函數(shù)外面。問他們?yōu)槭裁?,回答是“全局變量方便調(diào)試”。

事實上在學校里做搞自動控制的人最重要的根本就是控制的結(jié)果,而不是代碼本身。代碼只要能工作就行。變量名污染,低耦合之類的和他們就不在同一個世界。進了公司有些人代碼質(zhì)量會變好,但有的還是會延續(xù)之前的習慣。前公司代碼庫里面凡是看不懂的代碼一律都是那一兩個Control Engineer寫的,寫完了還會用自己的名字給函數(shù)命名的那種。

要成為一個資深的嵌入式工程師相當難,一方面要有非常扎實的理論知識,同時也要有相當?shù)哪欠N大型的、高頻CPU、多層PCB板的設(shè)計經(jīng)驗。嵌入式硬件工程師要學的課程主要有模擬電路設(shè)計、數(shù)字電路設(shè)計、電磁波理論等。熟悉常用的放大電路、濾波電路、電源電路設(shè)計和分析。

做非嵌入式的軟件工程師特點

代碼的特點就是所有的靜態(tài)變量都不可以定義在.h文件里,必須寫在.c文件里以確保別的文件沒法訪問它們。

別的文件真要訪問怎么辦?那就給每一個變量寫get/set函數(shù)??!問題是靜態(tài)變量寫在.c文件里編譯器是沒法優(yōu)化get/set的。結(jié)果就大面積的變量訪問要花幾倍的CPU時間去做get/set的函數(shù)調(diào)用。嵌入式項目很多情況下對硬件的壓榨是很極端的,CPU利用率90%都不算什么,頂?shù)?7%都是有的。(注意下這些項目是實時性要求很高的,晚一個毫秒算不完都不行。不是跑在電腦上鼠標卡一卡也無所謂的。)然后為了封裝性,在代碼里面塞這么多get/set嗎?

總結(jié)

總的來說嵌入式軟件里大部分的代碼都是中斷驅(qū)動的,天生就有很多變量是沒法使用參數(shù)傳遞的。全局變量的存在是因為正義站在這邊。但是嵌入式軟件遠遠沒有特殊到不需要按照正常軟件工程方法去管理的地步。要真有人認為“嵌入式軟件只要能工作就成,代碼丑一點無所謂的”純粹是軟件工程水平不行,不是因為控制水平太高。

全局變量一定是要用的,管理它們也很重要。一些基本的代碼規(guī)則:

① 如果只是文件內(nèi)調(diào)用,全局變量只能寫在這個.c文件里,不要寫進.h文件。
② 如果有文件外調(diào)用,全局變量要寫在.h文件里。
③ .h里面的全局變量全局可讀,但是只有本文件組可以寫。別的文件要寫請調(diào)用set函數(shù)。
④ 所有的全局變量無論在.h還是.c里面都要包成同名struct。哪怕只有一個變量也要寫進struct里面。比如PID.c里面有一個pid_S,PID.h里面有個PID_S。這樣其他人不僅可以立即識別出一個變量是project內(nèi)global/文件內(nèi)static/函數(shù)內(nèi)local,同時還能輕松追溯到這個函數(shù)是屬于哪個文件的。
⑤ 不要寫函數(shù)內(nèi)的static變量。函數(shù)內(nèi)的static變量在實際的項目中幾乎就是bug生成器,沒法簡單的reset。而且對unit test非常不友好。
編輯:hfy

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 嵌入式系統(tǒng)
    +關(guān)注

    關(guān)注

    41

    文章

    3679

    瀏覽量

    131336
  • 軟件工程師
    +關(guān)注

    關(guān)注

    8

    文章

    243

    瀏覽量

    21396
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    嵌入式開發(fā)入門指南:從零開始學習嵌入式

    、樹莓派 5. 就業(yè)前景與發(fā)展方向嵌入式工程師在通信、汽車電子、航空航天等領(lǐng)域需求旺盛,具備良好發(fā)展前景。
    發(fā)表于 05-15 09:29

    來自資深工程師對ELF 2開發(fā)板的產(chǎn)品測評

    來自資深工程師對ELF 2開發(fā)板的使用測評
    的頭像 發(fā)表于 04-28 15:03 ?970次閱讀
    來自<b class='flag-5'>資深</b><b class='flag-5'>工程師</b>對ELF 2開發(fā)板的產(chǎn)品測評

    飛凌嵌入式2025嵌入式及邊緣AI技術(shù)論壇圓滿結(jié)束

    飛凌嵌入式「2025嵌入式及邊緣AI技術(shù)論壇」在深圳深鐵皇冠假日酒店盛大舉行,此次活動邀請到了200余位嵌入式技術(shù)領(lǐng)域的技術(shù)專家、企業(yè)代表和工程師用戶,共享
    的頭像 發(fā)表于 04-28 13:57 ?3327次閱讀
    飛凌<b class='flag-5'>嵌入式</b>2025<b class='flag-5'>嵌入式</b>及邊緣AI技術(shù)論壇圓滿結(jié)束

    如何成為一名嵌入式軟件工程師?

    如何成為一名嵌入式軟件工程師? 01明確崗位的角色與定位 嵌入式軟件工程師主要負責開發(fā)運行在特定硬件平臺上的軟件,這些軟件通常與硬件緊密集成,以實現(xiàn)特定的功能。 不僅需要精通編程語言
    發(fā)表于 04-15 14:37

    嵌入式系統(tǒng)開發(fā)圣經(jīng)【干貨】

    內(nèi)容包括:嵌入式系統(tǒng)的介紹、嵌入式SoC硬件系統(tǒng)概論、嵌入式系統(tǒng)軟件開發(fā)。適用于產(chǎn)品主管、系統(tǒng)設(shè)計分析人員及欲進入該領(lǐng)域的工程師。本資料詳細的理論講解,廣泛深入地分析相關(guān)的
    發(fā)表于 03-12 13:58

    電子發(fā)燒友榮獲飛凌嵌入式“2024年度最具價值媒體”獎

    近日,飛凌嵌入式授予電子發(fā)燒友平臺 “2024年度最具價值媒體”獎 ,以表彰其在過去一年中深度合作,為電子工程師、開發(fā)者及技術(shù)愛好者群體帶來的卓越價值。此次授牌不僅是對電子發(fā)燒友平臺的認可,更是雙方
    發(fā)表于 02-28 15:20

    嵌入式軟件工程師就業(yè)好不好?

    嵌入式軟件工程師就業(yè)好不好?會不會越老越吃香?今天一起來看看。 首先看下市場需求。 隨著物聯(lián)網(wǎng)、人工智能、5G等前沿技術(shù)的快速發(fā)展,嵌入式系統(tǒng)的應用領(lǐng)域不斷擴大,從智能家居、汽車電子到工業(yè)自動化
    發(fā)表于 02-20 10:19

    如何成為嵌入式開發(fā)工程師?

    如何成為嵌入式開發(fā)工程師? 成為嵌入式開發(fā)工程師通常需要掌握一系列技能和知識,并且在實踐中不斷積累經(jīng)驗。以下是一些基本步驟和建議: 1. 基礎(chǔ)教育:- 獲取電子
    發(fā)表于 02-19 10:39

    月薪 3 萬的嵌入式工程師都在用,串口屏到底神在哪?

    作為一名資深嵌入式工程師,我深知在選擇硬件組件時,性能、可靠性、易用性和成本效益都是至關(guān)重要的考量因素。月薪3萬的嵌入式工程師們之所以傾向
    的頭像 發(fā)表于 02-12 10:33 ?657次閱讀
    月薪 3 萬的<b class='flag-5'>嵌入式</b><b class='flag-5'>工程師</b>都在用,串口屏到底神在哪?

    年薪30萬的嵌入式工程師,究竟需要掌握哪些技能?

    隨著智能硬件、物聯(lián)網(wǎng)、智能汽車、自動化控制等領(lǐng)域的迅速發(fā)展,嵌入式工程師的需求也水漲船高。尤其是在全球化和技術(shù)加速的時代,嵌入式開發(fā)不僅是一個熱門行業(yè),還是跨學科技術(shù)與創(chuàng)新的交匯點。對于那些具備扎實
    的頭像 發(fā)表于 01-16 10:59 ?1250次閱讀
    年薪30萬的<b class='flag-5'>嵌入式</b><b class='flag-5'>工程師</b>,究竟需要掌握哪些技能?

    為什么嵌入式驅(qū)動開發(fā)工程師可以拿高薪?

    為什么嵌入式驅(qū)動開發(fā)工程師可以拿高薪? 嵌入式驅(qū)動開發(fā),屬于需求量大、薪資斷崖升高的熱門崗位,在市場的發(fā)展驅(qū)動下成為“風口”。從市場的整體需求來看,
    發(fā)表于 01-07 16:56

    嵌入式工程師常用的開發(fā)工具有哪些?

    嵌入式工程師常用的開發(fā)工具有哪些? 在嵌入式系統(tǒng)開發(fā)的廣闊領(lǐng)域中,嵌入式工程師們憑借著一系列強大的工具,將創(chuàng)意與技術(shù)完美融合,打造出高效、可
    發(fā)表于 12-20 15:29

    名單公布!【書籍評測活動NO.42】 嵌入式Hypervisor:架構(gòu)、原理與應用

    ,以及PRTOS社區(qū)的愿景等內(nèi)容。 作者簡介 孫陳偉 某大廠資深編譯器團隊編譯器開發(fā)工程師,曾任華為技術(shù)軟件公司高級軟件工程師,梅特勒-托利多儀器儀表(中國)有限公司嵌入式軟件
    發(fā)表于 08-23 15:17

    嵌入式熱門領(lǐng)域有哪些?

    通過物聯(lián)網(wǎng)連接各種物理設(shè)備和傳感器,促使它們之間實現(xiàn)信息的交換和數(shù)據(jù)的共享。從智能家居到智能城市,物聯(lián)網(wǎng)的應用不斷擴展,為嵌入式系統(tǒng)工程師帶來了廣泛的就業(yè)機會和發(fā)展前景。 自動駕駛 自動駕駛技術(shù)作為
    發(fā)表于 07-16 09:23