色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

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

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

電子設(shè)計(jì) ? 來(lái)源:mcu中文技術(shù)社區(qū) ? 作者:mcu中文技術(shù)社區(qū) ? 2021-01-15 14:47 ? 次閱讀

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

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

做控制的工程師特點(diǎn)

他們普遍的理解就是“變量都寫成全局該有多方便”。我之前面試過(guò)一個(gè)非常有名的做控制實(shí)驗(yàn)室里出來(lái)的PhD/Master,前前后后陸續(xù)有快十個(gè)人。面試問(wèn)題是用C寫PID。到后面的幾位面試的時(shí)候我都覺(jué)得沒(méi)有看的意義了,因?yàn)槿紝懙氖峭粋€(gè)風(fēng)格。大概就是這樣的:

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;
}

代碼的特點(diǎn)就是所有的變量一定定義在函數(shù)外面。問(wèn)他們?yōu)槭裁矗卮鹗恰叭肿兞糠奖阏{(diào)試”。

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

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

做非嵌入式的軟件工程師特點(diǎn)

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

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

總結(jié)

總的來(lái)說(shuō)嵌入式軟件里大部分的代碼都是中斷驅(qū)動(dòng)的,天生就有很多變量是沒(méi)法使用參數(shù)傳遞的。全局變量的存在是因?yàn)檎x站在這邊。但是嵌入式軟件遠(yuǎn)遠(yuǎn)沒(méi)有特殊到不需要按照正常軟件工程方法去管理的地步。要真有人認(rèn)為“嵌入式軟件只要能工作就成,代碼丑一點(diǎn)無(wú)所謂的”純粹是軟件工程水平不行,不是因?yàn)榭刂扑教摺?/p>

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

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

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

    關(guān)注

    41

    文章

    3593

    瀏覽量

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

    關(guān)注

    8

    文章

    218

    瀏覽量

    21142
收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

    名單公布!【書(shū)籍評(píng)測(cè)活動(dòng)NO.42】 嵌入式Hypervisor:架構(gòu)、原理與應(yīng)用

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

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

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

    嵌入式軟件工程師如何提升自己?

    嵌入式軟件工程師如何提升自己? 作為一名嵌入式軟件工程師,在這個(gè)充滿機(jī)遇和挑戰(zhàn)的領(lǐng)域里,如何提升自己顯得非常重要,它決定了你未來(lái)的發(fā)展方向和成就。接下來(lái),我們一起探討一下。 1.奠定扎
    發(fā)表于 06-12 11:20

    嵌入式軟件工程師和硬件工程師的區(qū)別?

    嵌入式軟件工程師和硬件工程師的區(qū)別? 嵌入式軟件工程師 嵌入式軟件
    發(fā)表于 05-16 11:00

    建立更多的全局變量的時(shí)候,如何使得PROGRAM SIZE不增大呢?

    今天發(fā)現(xiàn),建立更多的全局變量的時(shí)候,PROGRAM SIZE同時(shí)也增大了,如何使得PROGRAM SIZE不增大呢?我對(duì)全局變量的初始化無(wú)要求。
    發(fā)表于 05-15 06:30

    請(qǐng)問(wèn)stm32程序中如何優(yōu)化大量的編譯開(kāi)關(guān)和全局變量

    剛接手一個(gè)程序,發(fā)現(xiàn)里面存在大量的編譯開(kāi)關(guān)和定義了大量的全局變量,感覺(jué)這些顯得很是臃腫,有什么方法可以優(yōu)化一下這些編譯開(kāi)關(guān)和全局變量全局變量是一個(gè)個(gè)的標(biāo)志位,有時(shí)候還會(huì)有條件嵌套。
    發(fā)表于 05-06 06:35

    你是不是也沒(méi)躲過(guò)這個(gè)坑?用了太多全局變量......

    全局變量太多有哪些弊端?該如何規(guī)避,以及如何管理全局變量等。一、全局變量太多有哪些弊端?真正做過(guò)項(xiàng)目的同學(xué)應(yīng)該都能明白,項(xiàng)目中全局變量太多,會(huì)存在很多問(wèn)題。這里給大家羅列一些太多
    的頭像 發(fā)表于 05-01 08:10 ?538次閱讀
    你是不是也沒(méi)躲過(guò)這個(gè)坑?用了太多<b class='flag-5'>全局變量</b>......

    全局變量太多有哪些弊端?

    隨著全局變量的增多,不同模塊的變量名可能會(huì)產(chǎn)生沖突或混淆,導(dǎo)致代碼難以理解和維護(hù)。同時(shí),全局變量使得代碼中的依賴關(guān)系變得復(fù)雜,難以追蹤和理解。這增加了新開(kāi)發(fā)人員的學(xué)習(xí)成本,也增加了修改和調(diào)試的難度。
    發(fā)表于 04-24 09:15 ?898次閱讀

    一款適合嵌入式工程師使用的在線工具

    一款適合嵌入式工程師使用的在線工具,工具有如下功能,如下圖所示: 1. 報(bào)文校驗(yàn)功能,如下圖所示 2. UDP服務(wù)端測(cè)試工具:該UDP服務(wù)端工具可以理解為 “UDP服務(wù)端” 或者 “服務(wù)器
    發(fā)表于 04-09 22:20

    嵌入式工程師需要掌握哪些技術(shù)?

    嵌入式工程師需要掌握哪些技術(shù)? 嵌入式系統(tǒng)是當(dāng)今科技領(lǐng)域中的重要組成部分,它們存在于我們生活的方方面面,從智能手機(jī)到汽車控制系統(tǒng),從家電到醫(yī)療設(shè)備。因此,對(duì)于那些想要進(jìn)入嵌入式行業(yè)的
    發(fā)表于 03-04 16:38

    嵌入式人工智能的就業(yè)方向有哪些?

    的發(fā)展方向有很多,門檻高低不一樣。下面給大家列舉一些相應(yīng)崗位所需具備的技能: 一:嵌入式Linux,C語(yǔ)言開(kāi)發(fā)工程師,Linux軟件開(kāi)發(fā)工程師 LinuxC語(yǔ)言開(kāi)發(fā) LinuxC語(yǔ)言開(kāi)發(fā)進(jìn)階 Linux
    發(fā)表于 02-26 10:17

    Tc38x中全局變量訪問(wèn)只能是不帶cache的地址嗎?

    全局變量只能放置在不帶cache的地址么?
    發(fā)表于 02-06 08:17

    modustoolbox在正常編譯中通過(guò)工程下增強(qiáng)了全局變量數(shù)組的長(zhǎng)度后報(bào)錯(cuò)了怎么解決?

    客戶使用modustoolboxdevelpcy8c6245azi-s3D72,在正常編譯中通過(guò)工程下增強(qiáng)了全局變量數(shù)組的長(zhǎng)度,結(jié)果編譯報(bào)導(dǎo)不錯(cuò),初始化是內(nèi)存超越了。通過(guò)對(duì)比發(fā)現(xiàn).bss的大小最小是25292,如附件描述,請(qǐng)幫忙確認(rèn)識(shí)別本原因并提供解決方案,謝謝謝謝!
    發(fā)表于 01-25 06:58

    一名嵌入式工程師的漲薪經(jīng)歷

    下面是一位嵌入式工程師的漲薪經(jīng)歷,希望可以幫助到你,幫到其他的在校學(xué)生。 ? 階段 1 大一到大三這個(gè)階段我與大多數(shù)學(xué)生相同: ? 一、學(xué)習(xí)本專業(yè)知識(shí)(電子信息類專業(yè)) 二、學(xué)習(xí)嵌入式軟件開(kāi)發(fā)需要
    的頭像 發(fā)表于 01-05 08:39 ?454次閱讀
    主站蜘蛛池模板: 浪货嗯啊趴下NP粗口黄暴| 亚洲人视频在线观看| 色欲AV精品人妻一二三区| 亚洲AV蜜桃永久无码精品无码网 | 神马电影院午 夜理论| 亚洲男人在线观看| 99久久国产露脸精品麻豆| 国产精品搬运| 免费国产成人高清在线看软件 | chinese国语露脸videos| 国产精品大全国产精品| 露露的性战k8经典| 无套日出白浆在线播放| 2021全国精品卡一卡二| 国产精品久久久亚洲偷窥女厕| 鲁大师影院在线视频在线观看| 玩弄人妻少妇500系列网址| 67194免费入口| 国产亚洲精品久久久999密臂| 男生jj插入女生jj| 亚洲精品无码专区在线播放| 办公室沙发口爆12P| 久久成人亚洲| 特级毛片内射WWW无码| 22eee在线播放成人免费视频| 国产免费播放一区二区三区| 女人的选择hd| 一区一区三区产品| 国产精品VIDEOS麻豆TUBE| 暖暖的视频完整视频免费韩国 | 上原结衣快播| 97视频在线观看免费视频| 国内精品自产拍在线少密芽| 秋霞电影院兔费理论84MB| 永久免费在线视频| 国产乱国产乱老熟300部视频| 欧美国产日韩久久久| 亚洲一区日韩一区欧美一区a| 闺蜜扒开我尿口使劲揉| 嗯啊不要老师| 最近最新的日本字幕MV|