91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

為什么我寫(xiě)的C語(yǔ)言能操作到底層的硬件?

Q4MP_gh_c472c21 ? 來(lái)源:嵌入式ARM ? 作者:嵌入式ARM ? 2020-11-16 16:34 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

1、軟件工程師一般指做圖形界面的程序員,工作內(nèi)容就是寫(xiě)C++JAVA、Web等。 2、硬件工程師當(dāng)然是指玩電路板的,工作內(nèi)容就是畫(huà)原理圖、PCB等。 3、固件工程師也叫單片機(jī)工程師,既寫(xiě)代碼(主要是C語(yǔ)言匯編)又要畫(huà)電路圖。


玩單片機(jī)的人,可能會(huì)有個(gè)疑問(wèn),為什么我寫(xiě)的C語(yǔ)言能操作到底層的硬件?其實(shí)在《計(jì)算機(jī)組成原理》已經(jīng)有很詳細(xì)的介紹了。 我這里粗略地介紹一下,這個(gè)原理。
首先你可以搜索一下“從零開(kāi)始造電腦”,這位叫Steve的大神,就告訴你,用晶體管可以做出CPU(單片機(jī)也是CPU)。

當(dāng)然,我們現(xiàn)在可不會(huì)落后到需要到晶體管來(lái)制造電腦。 接下來(lái),你可以看一部叫《喬布斯》的電影,劇中就給你展示蘋(píng)果公司的第一臺(tái)計(jì)算機(jī)。

嘿嘿,看到那些黑色的芯片沒(méi)有?還有兩個(gè)大大的變壓器。這說(shuō)明了在大學(xué)玩單片機(jī)的時(shí)代,就相當(dāng)于回到蘋(píng)果公司的初始時(shí)期!是不是很激動(dòng)人心? 其實(shí)你可以用74系列的邏輯IC、單片機(jī)等,來(lái)搭建一個(gè)屬于自己的計(jì)算機(jī)。這就是說(shuō)人們把若干個(gè)晶體管集成為一塊74系列的IC,如果集成度更高呢?那就是手機(jī)或者臺(tái)式機(jī)用的多核CPU了。 好,介紹了這些古董之后,就讓你有個(gè)認(rèn)識(shí),計(jì)算機(jī)本質(zhì)上是N個(gè)晶體管的組合,也是數(shù)字邏輯芯片的組合,更高級(jí)的,就是一塊數(shù)模混合的芯片,具體形式是由你的工藝決定的?,F(xiàn)在回到正題,介紹一下數(shù)電的基礎(chǔ)知識(shí)。 因?yàn)镃PU主要功能是計(jì)算,也就是可以直接運(yùn)用數(shù)學(xué)知識(shí)來(lái)解決問(wèn)題,這里就舉個(gè)例子介紹一下,CPU如何計(jì)算加法,也就是用數(shù)電里的門(mén)電路搭一個(gè)加法器。

怎樣用晶體管搭這些與、或、非門(mén)就不說(shuō)了,不懂的,可以翻書(shū)。上圖就告訴你,可以用這些門(mén)電路搭一個(gè)加法器。 怎樣輸入Ai=0,Bi=1,Ci=0?用74系列的IC的話,可以直接把Ai,Ci接GND,Bi接VCC,就實(shí)現(xiàn)加法了。而在CPU內(nèi)部也是一樣可以這樣做的,但是CPU可沒(méi)那么死板,只算常數(shù)的加法。

上圖中,藍(lán)色箭頭指向的1,就是接VCC的,而紅色箭頭,就是接GND。 在CPU內(nèi)部,還有ROM,它可以把你要計(jì)算的加數(shù)和被加數(shù)存進(jìn)去(ROM輸出的高低電平,跟你接GND和VCC是一樣的效果),而結(jié)果則存在寄存器(先暫存,以備后面使用)。 現(xiàn)在有個(gè)問(wèn)題,如果加完之后還要計(jì)算乘法(在信號(hào)處理領(lǐng)域的卷積運(yùn)算的核心單元就是乘加器),怎么辦?誰(shuí)來(lái)自動(dòng)完成這個(gè)動(dòng)作?幸好,CPU里面有個(gè)叫ALU(算術(shù)邏輯單元)來(lái)處理這件事情。

這里的控制單元,就把ROM里面的數(shù)據(jù)取出來(lái),再用選擇器,來(lái)調(diào)用加法器和乘法器,最終把結(jié)果存到寄存器中。 如果ROM里面只存數(shù)據(jù),那是無(wú)法讓控制單元知道,你要執(zhí)行加法還是乘法,要解決這個(gè)問(wèn)題,就需要在ROM里面再劃分一個(gè)區(qū)域,存放指令碼。 這個(gè)指令碼,跟數(shù)據(jù)是一樣,都是0、1的二進(jìn)制數(shù),只是用途不同,所以起了不同的名字。 其實(shí)這個(gè)指令碼,對(duì)應(yīng)在單片機(jī)里面的匯編語(yǔ)言,就是操作碼(如:MOV);而操作數(shù)就是數(shù)據(jù)(如:01H)。具體的,可以看看單片機(jī)的教材。 根據(jù)指令碼的設(shè)計(jì)方法來(lái)分,有四種,分別是CISC、RISC、VLIW、TTA,具體區(qū)別可以看計(jì)算機(jī)組成原理。 而PC(程序計(jì)數(shù)器)就是控制ROM的地址,現(xiàn)在你要知道PC是不能出錯(cuò)的,一旦出錯(cuò),就意味著單片機(jī)不按照你的代碼來(lái)工作。 現(xiàn)在,我在8位的CPU的ROM里面,第一個(gè)地址存了0x03這個(gè)指令碼來(lái)代表加法,而在第二、三個(gè)地址存了加數(shù)和被加數(shù),然后在第四個(gè)地址存了0x05代表乘法,在第五、六個(gè)地址存了乘數(shù)和被乘數(shù)。那么,按照一定的規(guī)則來(lái)設(shè)計(jì)控制單元(這個(gè)規(guī)則可以自己定義的),它就知道0x03是要執(zhí)行加法。 那么這個(gè)規(guī)則如何設(shè)計(jì)?最簡(jiǎn)單的,就是用與門(mén)了,然后輸出一個(gè)使能信號(hào),讓加法器工作,就跟上面的74LS160差不多。 但是CPU可沒(méi)那么簡(jiǎn)陋,它可以使用狀態(tài)機(jī)、流水線等,來(lái)控制這些基本單元(如:加法器、乘法器),如下圖所示。

說(shuō)到這里,你至少應(yīng)該知道,我們只要改變ROM的內(nèi)容,就可以操作CPU內(nèi)部的ALU,從而操作CPU的各個(gè)硬件單元了。 下面給個(gè)相對(duì)完整一點(diǎn)的ALU內(nèi)部結(jié)構(gòu)圖。

ROM的內(nèi)容本質(zhì)上是一些電荷量(電容上有、無(wú)電荷,代表二進(jìn)制的1和0),也就是固件、軟件工程師寫(xiě)的代碼。而硬件,就是由晶體管搭建的數(shù)字、模擬電路(如:?jiǎn)纹瑱C(jī)內(nèi)部的比較器、ADC等)。所以硬件是物理器件,不容易更改;而ROM的內(nèi)容完全可以用燒錄器就輕松改變它,修改成本非常低,而且很靈活。 在這里,你很難表述,這些電荷量是軟件還是硬件,但是CPU的這種結(jié)構(gòu),導(dǎo)致了兩種不同類(lèi)型的工作者,我們稱他們?yōu)檐浖こ處熀陀布こ處?。而單片機(jī)程序員寫(xiě)的代碼,跟硬件密切相關(guān),而且一旦完成之后,很少需要修改的(不像軟件工程師修改的那么頻繁),我們稱之為固件。

責(zé)任編輯:lq

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(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)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6077

    文章

    45516

    瀏覽量

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

    關(guān)注

    68

    文章

    11296

    瀏覽量

    225407
  • 軟件
    +關(guān)注

    關(guān)注

    69

    文章

    5340

    瀏覽量

    91681

原文標(biāo)題:軟硬件之間其實(shí)還有一個(gè)固件! 你知道嗎?

文章出處:【微信號(hào):gh_c472c2199c88,微信公眾號(hào):嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    直播 | 睿擎平臺(tái)AMP混合部署:你的Qt界面如何“指揮”底層電機(jī)?

    )晚8點(diǎn),我們將通過(guò)一場(chǎng)直播,把這些問(wèn)題一次性講透。直播核心內(nèi)容本次直播將以睿擎派RC3506J為硬件平臺(tái),完整演示從Qt界面開(kāi)發(fā)到底層電機(jī)驅(qū)動(dòng)的全流程:1、Qt
    的頭像 發(fā)表于 03-03 19:33 ?441次閱讀
    直播 | 睿擎平臺(tái)AMP混合部署:你的Qt界面如何“指揮”<b class='flag-5'>底層</b>電機(jī)?

    直播預(yù)告 | 睿擎平臺(tái)AMP混合部署:你的Qt界面如何“指揮”底層電機(jī)?

    )晚8點(diǎn),我們將通過(guò)一場(chǎng)直播,把這些問(wèn)題一次性講透。直播核心內(nèi)容本次直播將以睿擎派RC3506J為硬件平臺(tái),完整演示從Qt界面開(kāi)發(fā)到底層電機(jī)驅(qū)動(dòng)的全流程:1、Qt
    的頭像 發(fā)表于 02-27 18:18 ?263次閱讀
    直播預(yù)告 | 睿擎平臺(tái)AMP混合部署:你的Qt界面如何“指揮”<b class='flag-5'>底層</b>電機(jī)?

    C語(yǔ)言重點(diǎn)—指針篇

    C語(yǔ)言是比較偏底層語(yǔ)言,為什么他比較偏底層,就是因?yàn)樗暮芏?b class='flag-5'>操作都是直接針對(duì)內(nèi)存
    發(fā)表于 01-22 08:23

    C語(yǔ)言主要特點(diǎn)

    。 5.語(yǔ)法限制不太嚴(yán)格,程序設(shè)計(jì)自由度大。 6.C語(yǔ)言允許直接訪問(wèn)物理地址,能進(jìn)行位(bit)操作,能夠?qū)崿F(xiàn)匯編語(yǔ)言的大部分功能,可以直接對(duì)硬件
    發(fā)表于 01-05 07:41

    為什么c語(yǔ)言沒(méi)有輸出?

    寫(xiě)c語(yǔ)言程序的時(shí)候,經(jīng)常在程序編譯的時(shí)候沒(méi)有輸出,經(jīng)總結(jié),發(fā)現(xiàn)有以下原因: 1、scanf里沒(méi)有加 。 2、邏輯問(wèn)題,可能沒(méi)有輸入,才沒(méi)有輸出。 3、輸入scanf(\"%d
    發(fā)表于 01-05 06:40

    C語(yǔ)言單元測(cè)試在嵌入式軟件開(kāi)發(fā)中的作用及專業(yè)工具的應(yīng)用

    效率極高,能夠直接訪問(wèn)硬件資源,與底層硬件進(jìn)行緊密交互,充分發(fā)揮硬件的性能潛力 ?硬件直接操作
    發(fā)表于 12-18 11:46

    C語(yǔ)言特性

    1、高效性:直接操作硬件 C 語(yǔ)言代碼的執(zhí)行效率極高,這是其最為顯著的優(yōu)勢(shì)之一。它能夠直接訪問(wèn)硬件資源,與
    發(fā)表于 11-24 07:01

    C語(yǔ)言在嵌入式開(kāi)發(fā)中的應(yīng)用

    發(fā)動(dòng)機(jī)的最佳性能和燃油經(jīng)濟(jì)性。C 語(yǔ)言的高效性和對(duì)硬件的直接操作能力,使得它能夠滿足 ECU 對(duì)實(shí)時(shí)性和精確性的嚴(yán)格要求。據(jù)統(tǒng)計(jì),全球超過(guò) 80% 的汽車(chē) ECU 軟件都是用
    發(fā)表于 11-21 08:09

    C語(yǔ)言和單片機(jī)C語(yǔ)言有什么差異

    語(yǔ)言的功能特性外,它可以很好的操作底層硬件接口。在C語(yǔ)言的基礎(chǔ)上,如果你把一些單片機(jī)的端口或特
    發(fā)表于 11-14 07:55

    一文了解Mojo編程語(yǔ)言

    和 MLIR(多級(jí)中間表示)技術(shù),Mojo 的性能接近 C++,甚至在某些任務(wù)中比 Python 快數(shù)萬(wàn)倍。 支持直接操作硬件資源,如內(nèi)存管理和 SIMD(單指令多數(shù)據(jù))指令,適合高性能計(jì)算需求。 系統(tǒng)級(jí)
    發(fā)表于 11-07 05:59

    ElfBoard科普課堂|為什么C語(yǔ)言在嵌入式技術(shù)領(lǐng)域中的地位難以撼動(dòng)?

    在嵌入式技術(shù)領(lǐng)域,“C語(yǔ)言硬件”的組合,常被比作計(jì)算機(jī)體系中的“二進(jìn)制與晶體管”——它們是無(wú)數(shù)智能設(shè)備穩(wěn)定運(yùn)行的底層支柱,貫穿了嵌入式應(yīng)用的核心環(huán)節(jié)。
    的頭像 發(fā)表于 11-06 10:00 ?6952次閱讀
    ElfBoard科普課堂|為什么<b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>在嵌入式技術(shù)領(lǐng)域中的地位難以撼動(dòng)?

    深度剖析Nios II 處理器的硬件抽象層

    )與ANSI C標(biāo)準(zhǔn)庫(kù)綜合在一起,可使用類(lèi)似C語(yǔ)言的庫(kù)函數(shù)來(lái)訪問(wèn)硬件設(shè)備或文件,如printf()、fopen()、fwrite()等函數(shù)。軟件工程師可非常方便的使用這些函數(shù)來(lái)與
    的頭像 發(fā)表于 10-31 15:25 ?5044次閱讀
    深度剖析Nios II 處理器的<b class='flag-5'>硬件</b>抽象層

    無(wú)人機(jī)自動(dòng)巡檢系統(tǒng):從手動(dòng)操作到智能化的技術(shù)變革

    ? ? ? ?無(wú)人機(jī)自動(dòng)巡檢系統(tǒng):從手動(dòng)操作到智能化的技術(shù)變革 ? ? ? ?在無(wú)人機(jī)技術(shù)發(fā)展過(guò)程中,其操控方式經(jīng)歷了從完全依賴飛手手動(dòng)操作到逐步實(shí)現(xiàn)自動(dòng)化、智能化巡檢的重大飛躍。早期手動(dòng)飛行模式
    的頭像 發(fā)表于 09-11 13:16 ?766次閱讀

    C++ 與 Python:樹(shù)莓派上哪種語(yǔ)言更優(yōu)?

    廣泛應(yīng)用于樹(shù)莓派項(xiàng)目中。然而,C++在性能要求極高的應(yīng)用和底層硬件控制方面表現(xiàn)出色。兩者之間的選擇取決于項(xiàng)目需求和對(duì)編程的熟悉程度。嗯,這就是簡(jiǎn)短的答案,但讀完后
    的頭像 發(fā)表于 07-24 15:32 ?988次閱讀
    <b class='flag-5'>C</b>++ 與 Python:樹(shù)莓派上哪種<b class='flag-5'>語(yǔ)言</b>更優(yōu)?

    鴻道Intewell操作系統(tǒng):人形機(jī)器人底層操作系統(tǒng)

    操作系統(tǒng)的實(shí)時(shí)性賦東土科技的鴻道(Intewell)工業(yè)操作系統(tǒng)作為國(guó)內(nèi)唯一通過(guò)汽車(chē)、工業(yè)控制、醫(yī)療、軌道交通四項(xiàng)功能安全認(rèn)證的系統(tǒng),為標(biāo)準(zhǔn)體系中的技術(shù)層架構(gòu)提供了底層支持。其微內(nèi)核
    的頭像 發(fā)表于 05-16 14:44 ?840次閱讀