方法論哲學
硬件驅動的本質其實是電驅動,而軟件代碼編譯之後其實全部是二進制數字——0和1,故要理解軟件控制硬件的原理就要理解0和1如何在軟件和硬件中運行
1.0和1的表示——邏輯電平
數字電路中,電壓的高低用邏輯電平來表示。例如在TTL門電路中,
- 大於3.5伏的電壓規定為邏輯高電平——表示數字1
- 小於0.3伏的電壓規定為邏輯低電平——表示數字0
2.電路的基本元件——晶體管
晶體管,主要有二極管跟三極管。
- 二極管,一種具有兩個電極的裝置,只允許電流由單一方向流過。
- 三極管,是一種控制電流的半導體器件,作用是把微弱信號放大成幅度值較大的電信號。
3.電路的邏輯運算基礎——三種幾門邏輯門
下圖為三種基本的邏輯門以及他們對應的晶體管電路圖
三種門的基本運算稱為布爾運算,邏輯與和或門接受兩個電平,非門接收一個電平,經過邏輯門後電平變化如下圖
其他諸如異或門、與非門等複雜門電路由幾門電路組成。例如下圖為一個一位加法器。
以一位加法器為基礎,可以構建八位加法器
例如計算2+3為例
十進制數在數字電路中先ASCII編碼成二進制說00000010和00000011,兩者通過八位加法器進行加法運算和進位,最後輸出00000101,再ASCII解碼成十進制數5,輸出。
4.指令集
芯片便是以加法器等其他指令為基礎而構建而成的一個計算處理芯片。每個芯片所含有的所有邏輯運算統稱為指令集。常見的指令集有電腦端使用的Intel的X86指令集,以及手機使用的ARM的ARM指令集,細分類不展開。這些指令集是嵌入在芯片中的
5.驅動程序
指令集嵌入在芯片中,人是無法調用的,則開發驅動程序,驅動程序的目的是向外給出一個接口,可以供外部其他部件調用本芯片的指令集進行運算處理。
6.軟件編程
採用高級語言編寫各種程序代碼,比如java語言、C語言、C++語言等
7.程序編譯
所編寫的程序代碼通過編譯器編譯成二進制0和1組成的一段指令,然後這些指令通過與驅動程序匹配,滿足匹配條件後將指令傳入指令集中進行運算,從而驅動硬件運行,如果還有輸出,則再將由0和1的運算結果進行解碼(與編碼相對於的解碼方式,如ASCII Unicode等),結果輸出在顯示器上,可以查看輸出結果。
有初有終
一句話,沒有真正的軟件,所謂軟件本質也是物理存在的,儲存在磁盤上就是實實在在的磁場,儲存在內存上就是實實在在的電荷。
整個計算機就是一個狀態機,它可以在硬件設備也就是電路上記錄狀態,不同的狀態遇到不同時間的不同的輸入設備的硬件干預又產生不同的狀態。
打個比方來說,假設兩部完全一致的手機(指的是狀態一致,比如內存啊,閃存啊,各個硬件組成部分,操作系統啊等等),很明顯,兩部剛剛買的同款新手機就符合這樣的條件,兩部手機啟動時表現是一樣的,但是遇到輸入的干預(比如點擊屏幕產生的信號)會改變機器的狀態。輸入不同,改變後的狀態也不同。本質上來說計算機就是一個精心設計的狀態機,而程序的工作就是響應各種輸入然後改變狀態,當然了再精心設計也無法完全設計所有的狀態,這時候不可預見的狀態就可能導致系統崩潰,比如Windows出現藍屏死機。
從底層學習一下數字電路就理解了,精心設計的數字電路就是計算機。
不存在硬件軟件之分,本質上都是實實在在的物理存在,軟件操作硬件,在電路層面就是電信號操作電信號,軟件操作硬件的結果就是電信號在電路中相互作用的結果。
一隻漂流的鯨魚
硬件也就是機器有它自己的語言,也非常的簡單。因為機器的每個部件的功能都是固定的,所以要完成一個複雜的動作,需要把相關的部件按一定的規律有序完成才行,這其中有多複雜想想也應該知道。機器能接受的指令就只有有2個,固定一個動作,做或不做,在計算機中是以2進制標記的,也就是1和0,指令為1,就做該動作一次,指令為0,就不做該動作。大量固定的動作根據一定的規律有序的成功做完,就組成軟件中所需要完成的一個功能。
在軟件中,需要編程語言,這些編程語言都是高級語言,這些高級語言是為了我們更容易編譯操作而編寫的,硬件是看不懂的,是需要經過翻譯,翻譯成為機器語言,然後計算機才看的懂,進而執行簡單的操作。無數簡單的操作就成了軟件所需要的功能,然後通過機器展示出來。
彙編語言是底層語言,直接與硬件接觸。是非常麻煩的,代碼量大,工作量也嚇人,但是,功能和運行速度也強悍的嚇人,任何高級語言都無法比擬,算是軟件開發真正的核心技術所在。
我們現在所說的軟件編程,用的就是比計算機語言高一層的語言,也就是高級語言,像如今流行的語言C/C++用這些高級語言幾行代碼展示的功能。
硬件是不可能完成你所有想要的功能的,軟件可以作為一種翻譯語言溝通我們人類的想法和機器,從而實現我們人類的想法。
銀河密探
分割時間,將事件/任務排序。時間最小單元是硬件物理特性決定。
woodMq
軟件經過編譯最終變成有電(1)和無電(0),控制電路工作
分立元件
軟件控制硬件的物理基礎是多控開關的導通和截止順序。也就多種功能開關對一個執行元件按照人的意願進行接通和斷開。
如影隨形155663547
根本原理是:信息通信技術。
1,網絡(無線,有線),硬件裝有服務器,控制端安裝軟件客戶端,發送指令。
2,藍牙
3,紅外
4,NFC
都是預先規約好通信協議,根據協議進行軟件實現。
碼向未來
軟件首先是用高級語言寫成的,高級語言表示的是軟件的行為。語言會首先被翻譯成彙編之後翻譯成機器語言,所謂的機器語言就算01序列了。如果是對於具有CPU的系統來說,高級語言最終會被翻譯分解成微指令,CPU會負責執行這些微指令,這些微指令包含了硬件的行為,包括讀寫等等。
物理學原理就是門電路的通斷,通過複雜門電路之間的通斷關係來執行微指令組成的指令序列,以此來保證軟件命令被正確執行。
霜之哀傷Frost
軟件接收到操作指令後將其轉換成接口io操作,具體點就是控制接口線路電平發生高低變化,一般是用驅動程序來實現,也可以通過彙編直接操作io端口,硬件設備檢測到接口電平變化後,放大信號,然後根據協議執行相應的操作,例如讓機器人抬胳膊。由於設備速度比cpu速度慢很多,兩者通常通過中斷機制進行交互,能夠有效提高工作效率!
帶南的城市
在內置石英錶的帶動下,電信號在集成電路中不斷跳動,因為電路有一定的記憶性,它可以修改通路結構,所以每次跳動得到不同的響應。前後之間具有邏輯性。因此就可以把結構邏輯變成過程邏輯。這就是計算機的自如性和操控性。。把其中任何一段,導出來,驅動的電動機構,就實現了控制硬件。
軟件,是電路中的長期記憶部分。是長期記憶內容。參與調整通路的結構。
傳播科學,提高智慧,很容易,老年人阻擋不了,老年人好好享福才好,共產黨為人民服務!