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

来源:https://www.cnblogs.com/YZXE/p/18098665
-Advertisement-
Play Games

目錄微型電腦的硬體共性結構及基本性能指標關於存儲器的介紹微型電腦的基本性能指標1. 字長2. 主頻3. 存儲容量4. 外設擴展能力5. 軟體配置情況Arm Cortex 系列微處理器系列概述Arm Cortex-A 系列處理器Arm Cortex-R 系列處理器Arm Cortex-M 系列處理 ...


目錄

微型電腦的硬體共性結構及基本性能指標

​ 微型電腦的硬體共性結構可以簡單地表述為:微型電腦是在內部集成了中央處理單元、存儲器(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 和終端應用(如智能測量、 人機介面設備、汽車和工業控制系統、大型家用電器、消費性產品和醫療器械等)的混合信號設備進行優化。

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 代碼。不過這種混合編碼的方式並不是非常理想,它會帶來狀態間切換的開銷(執行時間和指令數),而且兩個狀態的分離還增加了軟體編譯過程的複雜度,對於不是很熟練的開發人員來說,優化代碼更加困難。

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

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

  • 無狀態切換開銷,節省執行時間和指令空間。
  • 無須指定源文件中的 ARM 狀態或 Thumb 狀態,開發軟體也更容易
  • 在獲得最佳的代碼密度和效率的同時,還能很容易地達到高性能
  • 利用 Thumb-2 技術,與 ARM 經典處理器相比,Thumb 指令集已經得到很大的擴展。註意,儘管所有的Cortex-M處理器都支持 Thumb-2 技術,它們實現的 Thumb ISA 子集不盡相同。

模塊框圖

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

​ Cortex-M3 和 Cortex-M4 處理器的頂層具有多個匯流排介面。

存儲器系統

​ 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 的異常模型卻是相同的,它們定義在架構參考手冊中。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前言 本文的主題是 Visual Studio 調試 NuGet 包,以及符號包的概念,如何去發佈一個 NuGet 包,讓我們的 NuGet 包支持 SouceLink,這些都是我們開發中比較容易忽視的內容,但是熟悉了以後可以讓我們在調試中得心應手,也是開源項目開發的基礎篇。 demo 源代碼在文末 ...
  • 在Orleans 7中,Grain放置是指確定將Grain對象放置在Orleans集群中的哪些物理節點上的過程。 Grain是Orleans中的基本單位,代表應用程式中的邏輯單元或實體。Grain放置策略是一種機制,用於根據不同的因素,將Grain對象放置在合適的節點上,以實現負載均衡、最小化網路延 ...
  • 在之前的WPF示例中,都會用到一個MVVM框,也是一個比較常的MVVM框架,就是MVVM工具包【CommunityToolkit.Mvvm】,今天專門以一個簡單的小例子,簡述一下MVVM工具包的常見用法,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 概述:通過對數組進行排序,代碼更好地利用了緩存,從而提高了程式的性能。這種現象通常被稱為"緩存友好"(cache-friendly)或"空間局部性"(spatial locality) 今天做一個數組數據計算時,發現一個效率問題,給大家分享一下 一個數組排序和不排序時同樣的邏輯處理速度是不一樣的。排 ...
  • // Stream MS HelpManual: https://learn.microsoft.com/zh-cn/dotnet/api/system.io.stream?view=net-8.0 // FileStream 官方手冊: https://learn.microsoft.com/zh ...
  • Grain 是 Orleans 框架中的基本單元,代表了應用程式中的一個實體或者一個計算單元。 每個Silo都是一個獨立的進程,Silo負責載入、管理和執行Grain實例,並處理來自客戶端的請求以及與其他Silo之間的通信。 通信原理 在相同的Silo中,Grain與Grain之間的通信通過直接的方 ...
  • SystemEvents 是一個開發 win32 視窗項目很常用的類,其中封裝了一些常用的系統廣播消息。在 WinUI3 項目中,SystemEvents 事件經常無法觸發,簡單排查了一下原因。 SystemEvent 內封裝了一個線程和一個視窗,通過視窗消息在內部線程上調用事件,內部使用了 Sys ...
  • 大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家介紹的是i.MXRT1xxx系列GPIO提早供電會影響上電時序導致內部DCDC啟動失敗。 最近有一個 RW612 產品線的同事在設計一個雙 MCU 系統 Demo 時發現,當 RW612 板卡和 RT1060 板卡通過 UART 對接時,如果 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 在我們開發過程中基本上不可或缺的用到一些敏感機密數據,比如SQL伺服器的連接串或者是OAuth2的Secret等,這些敏感數據在代碼中是不太安全的,我們不應該在源代碼中存儲密碼和其他的敏感數據,一種推薦的方式是通過Asp.Net Core的機密管理器。 機密管理器 在 ASP.NET Core ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 順序棧的介面程式 目錄順序棧的介面程式頭文件創建順序棧入棧出棧利用棧將10進位轉16進位數驗證 頭文件 #include <stdio.h> #include <stdbool.h> #include <stdlib.h> 創建順序棧 // 指的是順序棧中的元素的數據類型,用戶可以根據需要進行修改 ...
  • 前言 整理這個官方翻譯的系列,原因是網上大部分的 tomcat 版本比較舊,此版本為 v11 最新的版本。 開源項目 從零手寫實現 tomcat minicat 別稱【嗅虎】心有猛虎,輕嗅薔薇。 系列文章 web server apache tomcat11-01-官方文檔入門介紹 web serv ...
  • C總結與剖析:關鍵字篇 -- <<C語言深度解剖>> 目錄C總結與剖析:關鍵字篇 -- <<C語言深度解剖>>程式的本質:二進位文件變數1.變數:記憶體上的某個位置開闢的空間2.變數的初始化3.為什麼要有變數4.局部變數與全局變數5.變數的大小由類型決定6.任何一個變數,記憶體賦值都是從低地址開始往高地 ...
  • 如果讓你來做一個有狀態流式應用的故障恢復,你會如何來做呢? 單機和多機會遇到什麼不同的問題? Flink Checkpoint 是做什麼用的?原理是什麼? ...
  • C++ 多級繼承 多級繼承是一種面向對象編程(OOP)特性,允許一個類從多個基類繼承屬性和方法。它使代碼更易於組織和維護,並促進代碼重用。 多級繼承的語法 在 C++ 中,使用 : 符號來指定繼承關係。多級繼承的語法如下: class DerivedClass : public BaseClass1 ...
  • 前言 什麼是SpringCloud? Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的開發便利性簡化了分散式系統的開發,比如服務註冊、服務發現、網關、路由、鏈路追蹤等。Spring Cloud 並不是重覆造輪子,而是將市面上開發得比較好的模塊集成進去,進行封裝,從 ...
  • class_template 類模板和函數模板的定義和使用類似,我們已經進行了介紹。有時,有兩個或多個類,其功能是相同的,僅僅是數據類型不同。類模板用於實現類所需數據的類型參數化 template<class NameType, class AgeType> class Person { publi ...
  • 目錄system v IPC簡介共用記憶體需要用到的函數介面shmget函數--獲取對象IDshmat函數--獲得映射空間shmctl函數--釋放資源共用記憶體實現思路註意 system v IPC簡介 消息隊列、共用記憶體和信號量統稱為system v IPC(進程間通信機制),V是羅馬數字5,是UNI ...