【软件开发底层知识修炼】一 深入浅出处理器之一 微处理器与微控制器
- 學(xué)習(xí)交流加(可免費(fèi)幫忙下載CSDN資源):
- 個(gè)人微信: liu1126137994
- 學(xué)習(xí)交流資源分享qq群1(已滿): 962535112
- 學(xué)習(xí)交流資源分享qq群2: 780902027
深入淺出處理器這幾篇文章可能你覺(jué)得對(duì)軟件開(kāi)發(fā)用處不大,這個(gè)看個(gè)人理解吧,若是想貫通上下,知其然還要知其所以然的話,或許還是有點(diǎn)用處的。學(xué)習(xí)處理器的篇章非常少,花一點(diǎn)時(shí)間學(xué)一下也無(wú)所謂的!
在我之前還是做硬件的時(shí)候,我一直不理解微處理器和微控制器的區(qū)別。
之前寫(xiě)過(guò)一篇文章,講X86處理器的,可以點(diǎn)擊查看:X86處理器
文章目錄
- 1、 處理器
- 1.1、寄存器分類
- 1.2、處理器中的關(guān)鍵寄存器
- 1.3、處理器的IO操作
- 2、硬件設(shè)計(jì)的關(guān)鍵
- 3、處理器的啟動(dòng)過(guò)程
- 4、總結(jié)
1、 處理器
處理器分為兩種:微處理器和微控制器。
微處理器與微控制器有以下區(qū)別:
-
微處理器
– CPU
-
微控制器
–CPU + 片內(nèi)內(nèi)存 + 片內(nèi)外設(shè)
注意:
其中,CPU與外設(shè)(包括微控制器的片內(nèi)外設(shè)與片外外設(shè))都有寄存器,但是它們的用處卻是非常的不一樣。之前寫(xiě)過(guò)的X86處理器那篇文章中,已經(jīng)講了一些X86處理器的寄存器的用處,大致就是存儲(chǔ)數(shù)據(jù)的,但是微控制器上的外設(shè)中的寄存器,不是用來(lái)存儲(chǔ)數(shù)據(jù)的,而是用來(lái)控制外設(shè)的行為和工作方式的。
1.1、寄存器分類
CPU寄存器
– 專用指令執(zhí)行,數(shù)據(jù)運(yùn)算, 變量處理,參數(shù)傳遞
外設(shè)寄存器
– 用于控制外設(shè)的行為和工作方式、
–寄存器值的配置需要查看相應(yīng)的硬件手冊(cè)
1.2、處理器中的關(guān)鍵寄存器
今天我們只了解兩個(gè)寄存器:PC程序計(jì)數(shù)器寄存器,SP棧指針寄存器。
-
PC程序計(jì)數(shù)器(指令指針寄存器IP)
– PC實(shí)際上就是代碼中的每一條指令的地址,這個(gè)地址剛好就是內(nèi)存中代碼段中的偏移地址
–每執(zhí)行一條指令,PC中的值,就會(huì)發(fā)生變化
– PC始終保存著一條指令,這條指令就是CPU即將要執(zhí)行的那條指令(下一條要執(zhí)行的指令)
-
SP棧指針(Stack Pointer)
–SP寄存器,始終保存著棧空間的棧頂?shù)刂?#xff0c;實(shí)現(xiàn)LIFO特性
– SP棧指針用于保護(hù)函數(shù)調(diào)用的現(xiàn)場(chǎng),比如中斷斷點(diǎn),通用寄存器,函數(shù)的返回值等。具體如何保護(hù),在以后的文章中會(huì)講解
具體使用方法,會(huì)在后面的文章中講解,今天暫時(shí)知道這兩個(gè)寄存器的概念與用法。
1.3、處理器的IO操作
眾所周知,一臺(tái)電腦有很多外設(shè),USB,聲卡,顯卡等,這些都是外設(shè)。那么處理器是如何與外設(shè)進(jìn)行數(shù)據(jù)通信的呢?
處理器與外設(shè)之間的通信通過(guò)IO操作完成。
那么既然有IO操作,肯定是要有CPU去尋址的過(guò)程,在CPU所能尋址的范圍內(nèi),找到外設(shè)的地址,對(duì)該地址進(jìn)行讀寫(xiě)就可以與外設(shè)進(jìn)行通信。那么外設(shè)如何通過(guò)IO將自己的地址空間映射給CPU的尋址空間呢?
-
通過(guò)內(nèi)存映射IO空間
– 外設(shè)通過(guò)精密的硬件鏈接映射到CPU的尋址空間。
– 然后CPU通過(guò)地址訪問(wèn)與外設(shè)進(jìn)行數(shù)據(jù)讀寫(xiě)訪問(wèn)
-
獨(dú)立的IO空間
–外設(shè)獨(dú)立于CPU的地址空間,無(wú)法通過(guò)CPU的尋址來(lái)與外設(shè)進(jìn)行通信
– 此時(shí),需要使用專用的指令與外設(shè)進(jìn)行通信
上面是CPU與外設(shè)的基本通信方式,我們不必糾結(jié)于具體的硬件實(shí)現(xiàn),畢竟我們是做軟件開(kāi)發(fā)。
那么,CPU現(xiàn)在可以與外設(shè)進(jìn)行通信了,那么CPU如何操作外設(shè)呢?
從軟件工程師的角度來(lái)看,只要對(duì)不同的IO端口讀寫(xiě),就可以操作外設(shè);讀寫(xiě)IO端口時(shí)候的具體值和意義需要查詢具體的硬件手冊(cè)。
2、硬件設(shè)計(jì)的關(guān)鍵
上一節(jié)我們知道了CPU是如何與外設(shè)打交道的。那么在硬件上,大概設(shè)怎樣的設(shè)計(jì)呢?
首先CPU與外設(shè)之間要有地址總線與數(shù)據(jù)總線,然后需要有一個(gè)片選信號(hào)用來(lái)確保是否“啟動(dòng)”該外設(shè)。
通過(guò)具體的硬件設(shè)計(jì),可以使地址總線上的值在某個(gè)范圍時(shí),片選信號(hào)為“真”,即:使能連接的外設(shè),從而讀取相應(yīng)地址中的數(shù)據(jù)!!!
具體的硬件如何設(shè)計(jì)不去細(xì)究,這里知道大概原理即可,
3、處理器的啟動(dòng)過(guò)程
在一開(kāi)始,我們的電腦是沒(méi)有操作系統(tǒng)的,那么處理器是如何啟動(dòng)的呢?
- 處理器啟動(dòng)后,PC(IP)寄存器固話了一個(gè)默認(rèn)值
- PC默認(rèn)值決定了CPU上電后第一條執(zhí)行指令在哪
- 第一條執(zhí)行指令,是CPU的啟動(dòng)程序BIOS(BIOS以后講解)
下圖為CPU簡(jiǎn)易的啟動(dòng)過(guò)程
大致了解一下BIOS:
固化于硬件中的一個(gè)程序,用于初始化硬件,然后將指令指針寄存器PC(IP)指向主引導(dǎo)扇區(qū)程序,主引導(dǎo)扇區(qū)程序再來(lái)引導(dǎo)操作系統(tǒng)內(nèi)核的自舉程序,然后啟動(dòng)操作系統(tǒng)。(后期會(huì)專門(mén)學(xué)習(xí)操作系統(tǒng),現(xiàn)在暫時(shí)不用了解)
4、總結(jié)
基礎(chǔ)不牢,地動(dòng)山搖。上來(lái)就提倡看各種源碼的,不是大牛就是菜雞。大牛很少,菜雞很多。
本系列文章幾乎全部參考狄泰軟件學(xué)院相關(guān)課程,想學(xué)習(xí)的可以加群,
群聊號(hào)碼:199546072
學(xué)習(xí)探討加個(gè)人:
qq:1126137994
微信:liu1126137994
總結(jié)
以上是生活随笔為你收集整理的【软件开发底层知识修炼】一 深入浅出处理器之一 微处理器与微控制器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 微信小程序和vue双向绑定哪里不一样_个
- 下一篇: canopen和1939区别_CAN 和