日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

【软件开发底层知识修炼】一 深入浅出处理器之一 微处理器与微控制器

發布時間:2023/12/10 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【软件开发底层知识修炼】一 深入浅出处理器之一 微处理器与微控制器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • 學習交流加(可免費幫忙下載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端口讀取數據寄存器
  • 從軟件工程師的角度來看,只要對不同的IO端口讀寫,就可以操作外設;讀寫IO端口時候的具體值和意義需要查詢具體的硬件手冊。

    2、硬件設計的關鍵

    上一節我們知道了CPU是如何與外設打交道的。那么在硬件上,大概設怎樣的設計呢?

    首先CPU與外設之間要有地址總線與數據總線,然后需要有一個片選信號用來確保是否“啟動”該外設。

    通過具體的硬件設計,可以使地址總線上的值在某個范圍時,片選信號為“真”,即:使能連接的外設,從而讀取相應地址中的數據!!!

    具體的硬件如何設計不去細究,這里知道大概原理即可,

    3、處理器的啟動過程

    在一開始,我們的電腦是沒有操作系統的,那么處理器是如何啟動的呢?

    • 處理器啟動后,PC(IP)寄存器固話了一個默認值
    • PC默認值決定了CPU上電后第一條執行指令在哪
    • 第一條執行指令,是CPU的啟動程序BIOS(BIOS以后講解)

    下圖為CPU簡易的啟動過程

    大致了解一下BIOS:

    固化于硬件中的一個程序,用于初始化硬件,然后將指令指針寄存器PC(IP)指向主引導扇區程序,主引導扇區程序再來引導操作系統內核的自舉程序,然后啟動操作系統。(后期會專門學習操作系統,現在暫時不用了解)

    4、總結

    基礎不牢,地動山搖。上來就提倡看各種源碼的,不是大牛就是菜雞。大牛很少,菜雞很多。

    本系列文章幾乎全部參考狄泰軟件學院相關課程,想學習的可以加群,
    群聊號碼:199546072

    學習探討加個人:
    qq:1126137994
    微信:liu1126137994

    總結

    以上是生活随笔為你收集整理的【软件开发底层知识修炼】一 深入浅出处理器之一 微处理器与微控制器的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。