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