嵌入式筆記1.1 ARM Cortex-M3M4簡介

一只心耳發表於2024-03-27

目錄
  • 微型計算機的硬體共性結構及基本效能指標
    • 關於儲存器的介紹
    • 微型計算機的基本效能指標
      • 1. 字長
      • 2. 主頻
      • 3. 儲存容量
      • 4. 外設擴充套件能力
      • 5. 軟體配置情況
  • Arm Cortex 系列微處理器系列概述
    • Arm Cortex-A 系列處理器
    • Arm Cortex-R 系列處理器
    • Arm Cortex-M 系列處理器
  • STM32 概述
  • Cortex-M3 和 Cortex-M4簡介
    • 處理器型別
    • 架構
    • 指令集
    • 模組框圖
    • 儲存器系統
    • 中斷和異常支援

微型計算機的硬體共性結構及基本效能指標

嵌入式筆記1.1 ARM Cortex-M3M4簡介

​ 微型計算機的硬體共性結構可以簡單地表述為:微型計算機是在內部整合了中央處理單元、儲存器(RAM/ROM 等)、定時器/計數器及多種 I/O 介面的比較完整的數字處理系統。

關於儲存器的介紹

​ 隨機存取儲存器,也稱為主存(記憶體),是可以和 CPU 直接進行資料交換的內部儲存器,具有隨時讀寫、速度快的特點,一般用於儲存作業系統和其他正在執行的程式的臨時資料。 RAM 在使用的過程中可以從任意指定的地址進行寫入和讀出操作,但它的資料保護性不夠好,一旦斷電,其所儲存的資料就會消失。

​ Flash 儲存器具有不易失性、電擦除、可線上程式設計、儲存密度高、功耗低和成本低等特點。隨著 Flash 技術的逐步成熟, Flash 儲存器已經成為 MCU 的重要組成部分。 Flash 儲存器的不易失性與磁儲存器(MRAM)相似,不需要後備電源來保持資料。 Flash 儲存器可線上程式設計,可取代電擦除可程式設計只讀儲存器(EEPROM),用於儲存執行過程中的引數。對 Flash 儲存器的讀寫不同於對一般 RAM 的讀寫,它需要專門的程式設計過程。 Flash程式設計的基本操作有兩種:擦除(Erase)和寫入(Program),擦除操作的含義是將儲存單元的內容由二進位制的 0 變成 1,而寫入操作的含義是將儲存單元的某些位由二進位制的 1變成 0。

微型計算機的基本效能指標

1. 字長

​ 字長是計算機內部一次可以處理的二進位制數的位數,一般計算機的字長取決於它的通用暫存器、記憶體儲器、 ALU 的位數和資料匯流排的寬度。目前,微型計算機的字長一般有 16 位、 32 位或 64 位。

2. 主頻

​ 主頻是指微型計算機中 CPU 的時脈頻率,也就是 CPU 運算時的工作頻率。一般來說,主頻越高,一個時鐘週期內完成的指令數越多,當然 CPU 的速度也就越快。目前 CPU 的主頻已達到 MHz、 GHz 級別。

3. 儲存容量

​ 儲存容量是衡量微型計算機儲存能力的一個指標,它包括記憶體容量和外存容量。記憶體容量由 CPU 的地址匯流排的位數決定,目前已達到 MB、GB 級別;外存容量主要是指硬碟(Hard Disk)容量,目前已達到 GB、 TB 級別。

4. 外設擴充套件能力

​ 一臺微型計算機可配置的外部裝置的數量以及型別,對整個系統的效能有重大影響。如顯示器的解析度、多媒體介面功能和印表機型號等,都是外部裝置選擇中要考慮的問題。

5. 軟體配置情況

​ 軟體配置情況直接影響微型計算機系統的使用和效能的發揮,通常應配置的軟體有作業系統、計算機語言以及工具軟體等,另外還可配置資料庫管理系統和各種應用軟體。

Arm Cortex 系列微處理器系列概述

Arm Cortex-A 系列處理器

​ Arm Cortex-A 系列是基於 Arm v7A 架構基礎的處理器,面向尖端的基於虛擬記憶體的作業系統和使用者應用。作為開放式作業系統的高效能的應用程式處理器, 在高階工藝節點中可實現高達 2GHz 及以上標準頻率的卓越效能,從最新技術的移動 Internet 必備裝置(如智慧手機、移動計算平臺、 超便攜的上網計算機或智慧計算機等)到汽車資訊娛樂系統、 企業網路、印表機、伺服器和下一代數字電視系統無處不在。 因而 Arm Cortex-A 系列處理器適用於具有高計算要求、執行豐富作業系統以及提供互動媒體和圖形體驗的應用領域。

Arm Cortex-R 系列處理器

​ Arm Cortex-R 系列是基於 Arm v7R 架構基礎的處理器,面向實時系統的應用, 為具有嚴格的實時響應限制的嵌入式系統提供高效能運算解決方案。目標應用包括智慧手機、硬碟驅動器、數字電視、醫療行業、工業控制、汽車電子等。 Arm Cortex-R 處理器是專為高效能、可靠性和容錯能力而設計的,其行為具有高確定性,同時保持很高的能效和成本效益。

Arm Cortex-M 系列處理器

​ Arm Cortex-M 系列是基於 Arm v7M/v6M 架構基礎的處理器,面向微控制器的應用, 是一系列可向上相容的高能效、易於使用的處理器,這些處理器旨在幫助開發人員滿足將來的嵌入式應用的需要。 Arm Cortex-M 系列針對成本、 功耗敏感的 MCU 和終端應用(如智慧測量、 人機介面裝置、汽車和工業控制系統、大型家用電器、消費性產品和醫療器械等)的混合訊號裝置進行最佳化。

STM32 概述

​ STM32 微控制器是意法半導體(ST Microelectronics, ST)有限公司出品的一系列微控制器(Micro Controller Unit, MCU)的統稱。

​ 意法半導體有限公司於 1987 年 6 月成立,由義大利的 SGS 微電子公司和法國的 Thomson 半導體公司合併而成(以下簡稱 ST 公司),是世界上最大的半導體公司之一。

​ STM32 微控制器基於 Arm Cortex®-M0、 M0+、 M3、 M4 和 M7 核心,這些核心是專門為高效能、低成本和低功耗的嵌入式應用設計的。 STM32 微控制器按核心架構可以分為以下產品系列。

  • 通用微處理器產品系列: STM32MP1。
  • 高效能產品系列: STM32F2、 STM32F4、 STM32F7、 STM32H7。
  • 主流產品系列: STM32F0、 STM32F1、 STM32F3。
  • 超低功耗產品系列: STM32L0、 STM32L1、 STM32L4、 STM32L4+。
  • 無線系列: STM32WB。

​ 各個型號的 STM32 微控制器在封裝形式、引腳數量、靜態隨機儲存器( SRAM)和快閃記憶體的大小、最高工作頻率(影響產品的效能)等方面有所不同,開發人員可根據應用需求選擇最合適的 STM32 微控制器來完成專案設計。

​ STM32 系列的命名格式為:“STM32 F AAA Y B T C”

STM32 系列晶片命令欄位說明

欄位 說明 取值
STM32 晶片家族 STM32 表示的是 32 位的 MCU
F 產品型別 F 表示基礎型, L 表示超低功耗型, H 表示高效能型
AAA 具體特性 取決於產品系列
Y 引腳數目 C 表示 48, R 表示 64, V 表示 100, Z 表示 144, B 表示 208, N 表示 216
B Flash 大小 8 表示 64 個, C 表示 256 個, E 表示 512 個, I 表示 2048 個
T 封裝型別 T 表示 QFP 封裝
C 溫度範圍 6/A 表示-40~85℃, 7/B 表示-40~105℃, 3/C 表示-40~125℃, D 表示-40~150℃

Cortex-M3 和 Cortex-M4簡介

處理器型別

​ ARM Cortex-M 為 32 位 RISC(精簡指令集)處理器,其具有

  • 32 位暫存器
  • 32 位內部資料通路
  • 32 位匯流排介面

​ Cortex-M3 和Cortex-M4 處理器都具有三級流水線(取指、譯碼和執行),它們都基於哈佛匯流排架構,取指令和資料訪問可以同時執行。
​ ARM Cortex-M 處理器的儲存器系統使用 32 位定址,地址空間最大為 4GB。儲存器對映是一致的,這就意味著儘管匯流排介面有多個,4GB儲存器空間卻只有一個。儲存器空間包括程式程式碼、資料、外設以及處理器內的除錯支援部件。

​ 與其他任何 ARM 處理器相同,Cortex-M 處理器基於一種載入—儲存架構。這也就意味著資料需要從儲存器中載入和處理後,使用多個單獨的指令寫回儲存器。例如, 要增加 SRAM 中儲存的資料值,處理器需要使用一條指令從 SRAM 中讀出資料,並且將資料放到處理器的暫存器中,然後使用第二條指令增加暫存器中的資料值,最後使用第三條指令將數值寫回儲存器。處理器內部的暫存器細節一般被稱作程式設計模型。

架構

​ 對於ARM處理器,架構一般指兩個方面:

  • 架構:指令集架構(ISA)、程式設計模型(對軟體可見)以及除錯方法(對偵錯程式可見)
  • 微架構:介面訊號、指令執行時序以及流水線階段等實現相關的細節,微架構為處理器設計相關的。

Cortex-M3 和Cortex-M4 處理器都基於ARMv7-M 架構

指令集

​ Cortex-M 處理器使用的指令集名為 Thumb(其中包括 16 位 Thumb 指令和更新的 32 位 Thumb 指令),Cortex-M3 和 Cortex-M4 處理器用到了 Thumb-2 技術,它允許 16 位和 32 位指令的混合使用,以獲取更高的程式碼密度和效率。

​ 經典的 ARM 處理器:具有兩種操作狀態 32 位的 ARM 狀態和 16 位的 Thumb 狀態。在 ARM 狀態中,指令是 32 位的,核心能夠以很高的效能執行所有支援的指令;而對於 Thumb 狀態,指令是 16 位的,這樣可以得到很好的程式碼密度,不過 Thumb 指令卻不具有ARM指令的所有功能,要完成特定的操作,可能需要更多的指令。中斷處理是會進人 ARM 狀態的。

​ 要同時得到兩者的優勢,許多用於經典ARM處理器的應用程式混合使用了 ARM 和 Thumb 程式碼。不過這種混合編碼的方式並不是非常理想,它會帶來狀態間切換的開銷(執行時間和指令數),而且兩個狀態的分離還增加了軟體編譯過程的複雜度,對於不是很熟練的開發人員來說,最佳化程式碼更加困難。

嵌入式筆記1.1 ARM Cortex-M3M4簡介

​ Thumb-2 技術:Thumb 指令被擴充套件為支援 16 位和 32 位兩種解碼方式,無須在兩個不同操作狀態間切換就可以滿足所有的處理需求。Cortex-M 處理器根本不支援 32 位的 ARM 指令,甚至中斷處理都可以完全在 Thumb 狀態中實現。

嵌入式筆記1.1 ARM Cortex-M3M4簡介

​ 經典的 ARM 處理器相比,Cortex-M 處理器(Thumb-2 技術)優勢:

  • 無狀態切換開銷,節省執行時間和指令空間。
  • 無須指定原始檔中的 ARM 狀態或 Thumb 狀態,開發軟體也更容易
  • 在獲得最佳的程式碼密度和效率的同時,還能很容易地達到高效能
  • 利用 Thumb-2 技術,與 ARM 經典處理器相比,Thumb 指令集已經得到很大的擴充套件。注意,儘管所有的Cortex-M處理器都支援 Thumb-2 技術,它們實現的 Thumb ISA 子集不盡相同。
嵌入式筆記1.1 ARM Cortex-M3M4簡介

模組框圖

​ 從較高的層級來看,Cortex-M3 和 Cortex-M4 是非常相似的。儘管它們在內部資料通路設計上存在巨大差異,處理器的一些部分還是相似的,如取指緩衝、部分指令譯碼和執行階段以及 NVIC。另外,“核心”層級外的部件基本上是相同的。Cortex-M3 和 Cortex-M4 處理器包含處理器核心、巢狀向量中斷控制器(NVIC)、SysTick定時器以及可選的浮點單元(用於 Cortex-M4)。除了這些以外,處理器中還有一些內部匯流排系統、可選的儲存器保護單元(MPU)以及支援軟體除錯操作的一組部件。內部匯流排連線可以將處理器和除錯產生的傳輸送到設計的各個部分。
​ Cortex-M3 和 Cortex-M4 處理器是高度可配置的。例如,除錯特性是可選的,若產品需要支援除錯,片上系統設計人員可以將除錯部件去掉,這樣可以顯著降低設計的矽片面積。有些情況下,晶片設計人員還可以選擇降低硬體指令斷點和資料監視點比較器的數量,以降低系統的門數量。許多系統特性也是可配置的,如中斷輸入的數量、支援的中斷優先順序的數量以及 MPU 等。

嵌入式筆記1.1 ARM Cortex-M3M4簡介
​ Cortex-M3 和 Cortex-M4 處理器的頂層具有多個匯流排介面。
嵌入式筆記1.1 ARM Cortex-M3M4簡介

儲存器系統

​ Cortex-M3 和 Cortex-M4 處理器本身並不包含儲存器(沒有程式儲存器、SRAM或快取),它們具有通用的片上匯流排介面,因此,微控制器供應商可以將它們自己的儲存器系統新增到系統中。一般來說,微控制器供應商需要將下面的部件新增到儲存器系統中:

  • 程式儲存器,一般是 Fash。
  • 資料儲存器,一般是 SRAM。
  • 外設。

這樣,不同微控制器產品可能會具有不同的儲存器配置、不同的儲存器大小和型別,以及不同的外設。

​ Cortex-M 處理器的匯流排介面為 32 位寬,且基於高階微控制器匯流排架構(AMBA)標準。AMBA 中包含多個匯流排協議,任何晶片設計者都可以免費使用這些標準協議。AMBA 規範可以從 ARM 網站下載。由於這些標準協議的低硬體成本、效率以及開放性,它們大受晶片設計者的歡迎。

​ Cortex-M3 和 Cortex-M4 處理器主要使用的匯流排介面協議為 AHBLite(高階高效能匯流排),它用於程式儲存器和系統匯流排介面。AHBlite 協議為流水線結構的匯流排協議,可以在低硬體成本下實現高執行頻率。高階外設匯流排(APB)介面為處理器使用的另外一種匯流排協議,它通常用於基於ARM的微控制器的匯流排系統。另外,APB協議在Cortx-M3和Cortex-M4處理器內部還用於除錯支援。

​ 與片外匯流排協議不同,AHBLite 和 APB 協議相對簡單。這是因為晶片內的硬體配置是固定的,無須一種複雜的初始化協議來處理可能的配置(例如,無須支援類似於計算機技術中的“熱插拔”)。

中斷和異常支援

​ Cortex-M3 和 Cortex-M4 處理器中存在一個名為巢狀向量中斷控制器(NVIC)的中斷控制器,它是可程式設計的且其暫存器經過了儲存器對映。NVIC 的地址固定,而且 NVIC 的程式設計模型對於所有的 Cortex-M 處理器都是一致的。

​ 除了外設和其他外部輸入的中斷外,NVIC 還支援多個系統異常,其中,包括不可遮蔽中斷(NMI)和處理器內部的其他異常源。

​ Cortex-M3 和Cortex-M4 處理器是可配置的,微控制器供應商能夠決定 NVIC 設計實際支援的可程式設計中斷優先順序的數量。儘管 NVIC的一些細節在不同的 Cortex-M3/M4 處理器間可能存在差異,中斷/異常的處理和 NVIC 的異常模型卻是相同的,它們定義在架構參考手冊中。

相關文章