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

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

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

固件工程師到底做的工作是哪個方面

Wildesbeast ? 來源:網(wǎng)絡(luò)整理 ? 作者:佚名 ? 2020-10-25 09:16 ? 次閱讀

軟件跟硬件之間的界限已經(jīng)越來越模糊了,那么處于這個灰色地帶的,就是固件了。 這就分成三類工作者。

1、軟件工程師 一般指做圖形界面的程序員,工作內(nèi)容就是寫C++、JAVA、Web等。

2、硬件工程師 當(dāng)然是指玩電路板的,工作內(nèi)容就是畫原理圖、PCB等。

3、固件工程師 也叫單片機(jī)工程師,既寫代碼(主要是C語言、匯編)又要畫電路圖。

玩單片機(jī)的人,可能會有個疑問,為什么我寫的C語言能操作到底層的硬件? 其實(shí)在《計算機(jī)組成原理》已經(jīng)有很詳細(xì)的介紹了。

我這里粗略地介紹一下,這個原理。

首先你可以搜索一下“從零開始造電腦”,這位叫Steve的大神,就告訴你,用晶體管可以做出CPU(單片機(jī)也是CPU)。

當(dāng)然,我們現(xiàn)在可不會落后到需要到晶體管來制造電腦。

接下來,你可以看一部叫《喬布斯》的電影,劇中就給你展示蘋果公司的第一臺計算機(jī)。

嘿嘿,看到那些黑色的芯片沒有? 還有兩個大大的變壓器。 這說明了在大學(xué)玩單片機(jī)的時代,就相當(dāng)于回到蘋果公司的初始時期! 是不是很激動人心?

其實(shí)你可以用74系列的邏輯IC、單片機(jī)等,來搭建一個屬于自己的計算機(jī)。 這就是說人們把若干個晶體管集成為一塊74系列的IC,如果集成度更高呢? 那就是手機(jī)或者臺式機(jī)用的多核CPU了。

好,介紹了這些古董之后,就讓你有個認(rèn)識,計算機(jī)本質(zhì)上是N個晶體管的組合,也是數(shù)字邏輯芯片的組合,更高級的,就是一塊數(shù)模混合的芯片,具體形式是由你的工藝決定的。 現(xiàn)在回到正題,介紹一下數(shù)電的基礎(chǔ)知識。

因?yàn)镃PU主要功能是計算,也就是可以直接運(yùn)用數(shù)學(xué)知識來解決問題,這里就舉個例子介紹一下,CPU如何計算加法,也就是用數(shù)電里的門電路搭一個加法器。

怎樣用晶體管搭這些與、或、非門就不說了,不懂的,可以翻書。 上圖就告訴你,可以用這些門電路搭一個加法器。

怎樣輸入Ai=0,Bi=1,Ci=0? 用74系列的IC的話,可以直接把Ai,Ci接GND,Bi接VCC,就實(shí)現(xiàn)加法了。 而在CPU內(nèi)部也是一樣可以這樣做的,但是CPU可沒那么死板,只算常數(shù)的加法。

上圖中,藍(lán)色箭頭指向的1,就是接VCC的,而紅色箭頭,就是接GND。

在CPU內(nèi)部,還有ROM,它可以把你要計算的加數(shù)和被加數(shù)存進(jìn)去(ROM輸出的高低電平,跟你接GND和VCC是一樣的效果),而結(jié)果則存在寄存器(先暫存,以備后面使用)。

現(xiàn)在有個問題,如果加完之后還要計算乘法(在信號處理領(lǐng)域的卷積運(yùn)算的核心單元就是乘加器),怎么辦? 誰來自動完成這個動作? 幸好,CPU里面有個叫ALU(算術(shù)邏輯單元)來處理這件事情。

這里的控制單元,就把ROM里面的數(shù)據(jù)取出來,再用選擇器,來調(diào)用加法器和乘法器,最終把結(jié)果存到寄存器中。

如果ROM里面只存數(shù)據(jù),那是無法讓控制單元知道,你要執(zhí)行加法還是乘法,要解決這個問題,就需要在ROM里面再劃分一個區(qū)域,存放指令碼。

這個指令碼,跟數(shù)據(jù)是一樣,都是0、1的二進(jìn)制數(shù),只是用途不同,所以起了不同的名字。

其實(shí)這個指令碼,對應(yīng)在單片機(jī)里面的匯編語言,就是操作碼(如: MOV); 而操作數(shù)就是數(shù)據(jù)(如: 01H)。 具體的,可以看看單片機(jī)的教材。

根據(jù)指令碼的設(shè)計方法來分,有四種,分別是CISC、RISC、VLIW、TTA,具體區(qū)別可以看計算機(jī)組成原理。

而PC(程序計數(shù)器)就是控制ROM的地址,現(xiàn)在你要知道PC是不能出錯的,一旦出錯,就意味著單片機(jī)不按照你的代碼來工作。

現(xiàn)在,我在8位的CPU的ROM里面,第一個地址存了0x03這個指令碼來代表加法,而在第二、三個地址存了加數(shù)和被加數(shù),然后在第四個地址存了0x05代表乘法,在第五、六個地址存了乘數(shù)和被乘數(shù)。 那么,按照一定的規(guī)則來設(shè)計控制單元(這個規(guī)則可以自己定義的),它就知道0x03是要執(zhí)行加法。

那么這個規(guī)則如何設(shè)計? 最簡單的,就是用與門了,然后輸出一個使能信號,讓加法器工作,就跟上面的74LS160差不多。

但是CPU可沒那么簡陋,它可以使用狀態(tài)機(jī)、流水線等,來控制這些基本單元(如: 加法器、乘法器),如下圖所示。

說到這里,你至少應(yīng)該知道,我們只要改變ROM的內(nèi)容,就可以操作CPU內(nèi)部的ALU,從而操作CPU的各個硬件單元了。

下面給個相對完整一點(diǎn)的ALU內(nèi)部結(jié)構(gòu)圖。

ROM的內(nèi)容本質(zhì)上是一些電荷量(電容上有、無電荷,代表二進(jìn)制的1和0),也就是固件、軟件工程師寫的代碼。 而硬件,就是由晶體管搭建的數(shù)字、模擬電路(如: 單片機(jī)內(nèi)部的比較器、ADC等)。 所以硬件是物理器件,不容易更改; 而ROM的內(nèi)容完全可以用燒錄器就輕松改變它,修改成本非常低,而且很靈活。

在這里,你很難表述,這些電荷量是軟件還是硬件,但是CPU的這種結(jié)構(gòu),導(dǎo)致了兩種不同類型的工作者,我們稱他們?yōu)檐浖こ處熀陀布こ處煛?而單片機(jī)程序員寫的代碼,跟硬件密切相關(guān),而且一旦完成之后,很少需要修改的(不像軟件工程師修改的那么頻繁),我們稱之為固件。

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

    關(guān)注

    6037

    文章

    44558

    瀏覽量

    635212
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10863

    瀏覽量

    211743
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7604

    瀏覽量

    136808
收藏 人收藏

    評論

    相關(guān)推薦

    請問設(shè)備工程師和TAPE OUT哪個好點(diǎn)呢?

    本帖最后由 eehome 于 2013-1-5 09:58 編輯 請問設(shè)備工程師和TAPE OUT哪個好點(diǎn)呢,我指的是薪資待遇和發(fā)展前景等方面?
    發(fā)表于 08-02 20:20

    招聘電子工程師、結(jié)構(gòu)工程師、軟件工程師、PE工程師

    廣州創(chuàng)美電子有限公司公司成立于2003年,主要研發(fā)、生產(chǎn)、銷售LED顯示屏、LED燈飾、LED商業(yè)照明等產(chǎn)品?,F(xiàn)在招聘電子工程師、結(jié)構(gòu)工程師、軟件工程師、PE工程師、內(nèi)貿(mào)銷售主管、外貿(mào)
    發(fā)表于 02-21 11:52

    從嵌入式工程師轉(zhuǎn)射頻工程師,難嗎?

    之前從事嵌入式工程師工作,現(xiàn)想轉(zhuǎn)射頻工程師,請問同行們,這種轉(zhuǎn)變難嗎?
    發(fā)表于 11-03 14:47

    從嵌入式工程師轉(zhuǎn)射頻工程師,難嗎?

    之前從事嵌入式工程師工作,現(xiàn)想轉(zhuǎn)射頻工程師,請問同行們,這種轉(zhuǎn)變難嗎?
    發(fā)表于 11-03 14:49

    今日話題:硬件工程師or軟件工程師哪個有錢途?

    軟件做什么方向?。。。。。。上期話題請查看:今日話題:作為工程師,做人or做事哪個更重要?https://bbs.elecfans.com/jishu_571167_1_1.html`
    發(fā)表于 03-22 10:27

    電子工程師最關(guān)心的10個問題

    的真誠交流,長時間的深刻思考電子工程師一直糾結(jié)于心中的難題,提取了10個電子工程師最關(guān)心的問題。1 電子新手“沒事,沒人教,工作沒有技術(shù)含量”的矛盾心態(tài)電子新手往往心浮氣躁,拒絕進(jìn)步
    發(fā)表于 05-18 11:49

    嵌入式工程師的具體工作是什么?

    由于嵌入式主要分為操作系統(tǒng)和硬件兩個方面,所以嵌入式工程師的就業(yè)方向要比一般的軟件工程師更廣、更深,同時其就業(yè)機(jī)會和入職待遇也要比普通軟件工程師好。嵌入式
    發(fā)表于 04-21 15:23

    硬件工程師和軟件工程師哪個更有前途?

    ,自己調(diào)試應(yīng)用代碼寫kernel code,能調(diào)試無線通信,基本意味著一個合格的嵌入式工程師要對硬件和軟件相關(guān)方面有足夠的知識。我自己是比較討厭web開發(fā)app純開發(fā)軟件的工作,因?yàn)?/div>
    發(fā)表于 08-23 10:59

    硬件工程師和軟件工程師哪個更有前途?我會告訴你嵌入式工程師更有前途

    企業(yè)的角度來講講。我個人認(rèn)為造成這個差異的原因,第一個是基本上所有的公司,從初創(chuàng)公司到全球百強(qiáng),都有對軟件工程師的需求。現(xiàn)在哪個公司不需要幾個碼農(nóng)來開發(fā)app,或者做個web。但是硬件這種
    發(fā)表于 08-23 11:04

    硬件工程師和軟件工程師哪個更有前途?我會告訴你嵌入式工程師更有前途

    企業(yè)的角度來講講。我個人認(rèn)為造成這個差異的原因,第一個是基本上所有的公司,從初創(chuàng)公司到全球百強(qiáng),都有對軟件工程師的需求。現(xiàn)在哪個公司不需要幾個碼農(nóng)來開發(fā)app,或者做個web。但是硬件這種
    發(fā)表于 12-20 14:18

    硬件工程師和軟件工程師對比分析哪個更好

    企業(yè)的角度來講講。我個人認(rèn)為造成這個差異的原因,第一個是基本上所有的公司,從初創(chuàng)公司到全球百強(qiáng),都有對軟件工程師的需求?,F(xiàn)在哪個公司不需要幾個碼農(nóng)來開發(fā)app,或者做個web。但是硬件這種
    發(fā)表于 12-24 08:05

    公務(wù)員和電子工程師哪個好?

    己的事,說一些言不由衷的話,可能對自己也是一種浪費(fèi)...到底作為工程師或準(zhǔn)工程師的您,在面對公務(wù)員和電子工程師這個抉擇時,你們會做出如何的選擇?到底
    發(fā)表于 09-11 17:34
    公務(wù)員和電子<b class='flag-5'>工程師</b><b class='flag-5'>哪個</b>好?

    軟件工程師到底應(yīng)該具備哪些素質(zhì)

    軟件工程師主要進(jìn)行軟件前期的項(xiàng)目需求的分析,然后對項(xiàng)目進(jìn)行風(fēng)險評估并試圖解決這些風(fēng)險,然后開始進(jìn)行軟件的開發(fā),后期對軟件的進(jìn)度相關(guān)的評估。 一個比較貼切的比喻:把一款軟件比做一座大橋,那么軟件工程師
    的頭像 發(fā)表于 10-17 10:44 ?6605次閱讀

    射頻工程師工作內(nèi)容有哪些

    射頻工程師完全是硬件,大的公司有基站:愛立信,諾西,華為,阿朗,中興,大唐等。手機(jī)射頻:諾基亞,三星,索愛等等。工業(yè)方面的:霍尼韋爾,西門子等等。儀器:安捷倫等公司。還有很多大公司,特別是
    的頭像 發(fā)表于 03-18 10:50 ?2.3w次閱讀

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

    全局變量簡直就是嵌入式系統(tǒng)的戈蘭高地。沖突最激烈的雙方是: 1. 控制的工程師; 2. 非嵌入式的軟件工程師。
    的頭像 發(fā)表于 02-17 16:20 ?1255次閱讀