[arm微控制器與嵌入式系統] 從CPU到MCU

CPU是計算機/微控制器的核心,進行算數/邏輯運算

MCU?

MicroController Unit 微控制器是一個完整的計算機系統,在單個芯片上包含了處理器、存儲器和所有的外設IO模塊。

MCU包含了什麼?

  • CPU
  • Input/Output interface
  • Peripherals
  • RAM 用於數據存儲
  • ROM 用於程序存儲, EPROM, EEPROM或 Flash Memory

MCU的特點

  • 體積小
  • 低成本
  • 低功耗
  • 高可靠性
  • 大量型號和設計方案

ARM處理器的分類

從ARM v7之後,ARM處理器按照應用特徵分類,分爲以下三類:

  • A系列 —— Application Processor —— 高性能多媒體<手機等>
  • R系列 —— Real-time Controller —— 實時響應<無人機等>
  • M系列 —— Micro-Controller —— 嵌入式

微控制器的內部結構

在這裏插入圖片描述

CPU

在這裏插入圖片描述
上圖中右邊就是之前概念CPU的實際表達ALU 運算邏輯單元。
在這裏插入圖片描述
運算邏輯單元完成邏輯和數學的運算
在這裏插入圖片描述
兩個輸入數據 —— A和B
一個指令 —— OP,要對A和B做什麼運算
輸出數據 —— Result和Flags(標誌位)

怎麼理解標誌位
如果給ALU下面幾種運算

A+B = C
如果這個ALU是一個4 bit的運算單元,則當計算加法時,可能會出現C大於15(0x1111),這時會出現溢出標誌位用來表示計算結果是否溢出。

A>B ?
CPU在做比較的話,實際上是做了A-B的運算,而我們想要的結果實際上就是負數標誌,同樣也是在標誌位中體現。

問題:ALU計算得到的結果要存在哪裏呢? —— 寄存器

寄存器組

寄存器是由電路實現的保存數據的單元。

在CPU中,有一個寄存器就是用來專門保存ALU計算後的標誌位,每條指令所能影響的狀態位是不一樣的,這類寄存器被稱爲程序狀態寄存器(PSR寄存器),還有被稱爲CCR寄存器

這個寄存器中到底要存哪些狀態信息?

不同的芯片,對應的狀態信息也有所區別,但是一般而言都要包括以下幾個標誌:

  • Z 上一個運算得到了0的結果
  • N 上一個運算得到了一個負數
  • O 上一個運算溢出了
  • C 上一個運算出現了進位
    在這裏插入圖片描述
    在CPU的設計當中,下圖中這樣的寄存器可以有若干個。
    在這裏插入圖片描述
  • 寄存器用於臨時保存/獲取操作數
  • 任何CPU都包含了若干個通用/專用寄存器
  • 寄存器的數目和位寬是衡量CPU的重要指標

CPU內部的寄存器個數有限,其實是無法滿足程序的要求,因此出現了下圖的結構
在這裏插入圖片描述
上圖中的Data Memory不再是CPU的組成部分,對Memory的訪問要比對寄存器的訪問慢很多

地址與存儲器的關係
如果要訪問CPU外部的Data Memory,如何實現?
對於存儲器,其結構如下:
在這裏插入圖片描述
上圖中的0x0003這個地址存的數據就是0x44

類比一下,一定意義上來說,程序的存儲也是這個概念。
在這裏插入圖片描述

指令集

堆棧

棧是一段連續的存儲器空間
堆棧按照後入先出的工作方式
只能從/向堆棧的頂部加入或取出數據

按照這個邏輯,我們現在還缺少一個片外的存儲器,用來給堆棧用。我們需要有一個類似指針的東西,指明從某個位置開始的存儲器作爲堆棧來使用。
在這裏插入圖片描述

堆棧空間和變量空間是使用同一端存儲空間

  • 變量空間從低地址向搞地質劃分(例如C語言編程時聲明的全局變量)
  • 堆棧空間從高地址向低地址增長

這就帶來一個新的問題:
存儲器的空間是有限的,當某個時間點,堆棧達到一個衝突點的時候,出現了堆棧溢出。

在這裏插入圖片描述
堆?
堆是一個進程開啓之後,系統分配給它的空間,一般這個空間是全局的,系統中所有動態分配的對象(比如指針)都是在這個空間上分配的。
堆裏的數據是有數據結構的,其空間佔用是不連續的。在沒有OS的嵌入式系統中,通常不使用堆。

在這裏插入圖片描述
通常,我們把上圖中紅色框中的寄存器稱爲寄存器組,也可以稱爲編程模型。

中斷

中斷與輪詢
輪詢:

  • 週期連續地檢查外部事件是否發生
  • 消耗大量CPU的處理事件
  • 需要和其他功能代碼結合
  • 由於CPU需要處理其他事件,可能丟失關鍵事件
    中斷:
    用硬件來判斷是否發生外部事件並通知CPU
    專用的中斷服務程序來處理事件

中斷是一個需要CPU立即處理的內部或外部事件

內部事件

  • 定時器時間到
  • AD變換結束

  • 外部事件
  • 按鍵動作
  • 發生外部通信

中斷:

  • 適用於處理響應要求非常高的事件
  • 適用於處理持續時間非常短的事件
  • 適用於低功耗的應用
  • 程序設計複雜

中斷允許/禁止

  • 全局中斷控制

時鐘/復位

存儲器

外設

ARM體系結構

32bit MCU Register File (ARM Cortex M)
在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章