日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ARMV8-M学习笔记-入门

發布時間:2025/3/21 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ARMV8-M学习笔记-入门 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

快速鏈接:
.
👉👉👉 個人博客筆記導讀目錄(全部) 👈👈👈


說明:
本文總結的僅限于armv8-M架構,實現main extension,支持Trustzone

目錄

        • 1、簡介
        • 2、寄存器
          • 2.1 寄存器的總結
            • 2.1.1、通用寄存器,所有的都是32位:
            • 2.1.2、特殊寄存器:
            • 2.1.3、Memory-mapped寄存器
          • 2.2 、XPSR, APSR, IPSR, and EPSR的介紹
            • 2.2.1 、Interrupt Program Status Register (IPSR)
            • 2.2.2 、Execution Program Status Register (EPSR)
          • 2.3、CONTROL寄存器
        • 4、指令集ISA
        • 4、安全狀態
        • 5、異常號和異常優先級

1、簡介

Cortex-M 處理器系列基于 M-Profile 架構,可為深度嵌入式系統提供低延遲和高度確定性的操作。我們最新一代的 Cortex-M 處理器是 Cortex-M55。Cortex-M55 是第一款基于 Armv8.1-M 架構的處理器,采用向量處理擴展 Arm Helium 技術。Cortex-M55 為下一代小型嵌入式設備(包括可穿戴設備、智能揚聲器等)帶來更高水平的機器學習和信號處理性能。

Cortex-M 處理器旨在支持微控制器市場

  • 基于 RISC 架構,大多數指令在單個周期內執行
  • 編程更簡單——整個應用程序都可以用 C 語言編程
  • 所需的功能比Cortex-A少

其他 ARM 內核的寄存器和 ISA變化

  • 使用的是Thumb指令,不支持 ARM 指令集(即不支持A32,不支持A64)
  • 通用寄存器僅僅SP是banked
  • 兩種操作模式:Thread模式和Handler模式

不同的模式和異常模型

  • 只有兩種執行模式:Thread 和 Handler 模式
  • 向量表由地址組成,不包含指令
  • 異常自動將狀態(R0-R3、R12、LR、ReturnAddress、RETPSR)保存在堆棧上

不同的系統控制/內存布局

  • 內核有一個固定的內存映射
  • 無協處理器 C15 – 通過內存映射控制寄存器控制 (MRS,MSR)

ARMv8-M 是 32 位加載/存儲架構

  • 唯一允許的內存訪問是加載和存儲
  • 大多數內部寄存器都是 32 位寬

編程模型
兩種模式: Thread mode 和 Handler mode
在Thread mode下又有2個執行級別: privileged 和 Unprivileged

2、寄存器

2.1 寄存器的總結

2.1.1、通用寄存器,所有的都是32位:
  • R0-R12 (Rn).
  • R13 堆棧寄存器 (SP).
  • R14 鏈接寄存器 (LR).
  • R15 程序計數器 (PC)
2.1.2、特殊寄存器:
  • 掩碼(MASK)寄存器:
    (1)、異常掩碼寄存器:PRIMASK
    (2)、優先級掩碼寄存器:BASEPRI.
    (3)、錯誤掩碼寄存器:FAULTMASK

  • 控制寄存器:CONTROL

  • 2個棧指針限制寄存器:MSPLIM 和 PSPLIM

  • 程序狀態寄存器:Program Status Register (XPSR), 包含:
    (1)、Application Program Status Register (APSR).
    (2)、Interrupt Program Status Register (IPSR).
    (3)、Execution Program Status Register (EPSR)

2.1.3、Memory-mapped寄存器

除此之外,還有一些memory-mapped的寄存器

2.2 、XPSR, APSR, IPSR, and EPSR的介紹


msr、mrs 可以分段訪問這些寄存器

2.2.1 、Interrupt Program Status Register (IPSR)
  • 當PE在Thread模式時, IPSR值是0
  • 當PE在Handler模式時,
    (1) 當一個異常進入是IPSR 保存著正在處理的異常的異常號
    (2) 當Secure state到Non-secure state 調用時,IPSR值是1
  • 使用MRS指令強行修改IPSR, 不會生效的
2.2.2 、Execution Program Status Register (EPSR)

主要是EPSR.T 比特位

  • 0 - 任何指令都將產生 INVSTATE錯誤 或 HardFault
  • 指令集使用T32
2.3、CONTROL寄存器
  • 僅僅Privileged execution狀態可以寫控制寄存器,Privileged和unPrivileged狀態都可以讀控制寄存器。
  • 該體系結構需要一個Context同步事件來保證對CONTROL寄存器更改的可見性
  • 當一個異常進入或者退出時,硬件會自動修改CONTROL.SPSEL, 當PE在Thread mode時CONTROL.SPSEL可用于選擇棧指針

4、指令集ISA

所有 Cortex-M 處理器都支持稱為 Thumb 的指令集。 當 Thumb-2 技術可用時,完整的 Thumb 指令集在擴展時變得相當大。 但是,不同的 Cortex-M 處理器支持 Thumb ISA 中可用的不同指令子集,如下圖所示:

4、安全狀態

  • 如果實施了安全擴展,則標記為安全的內存區域和其他關鍵資源只有在 PE 以安全狀態執行時才能訪問
  • 如果實施了安全擴展, 則在 Cold reset 和 Warm reset時,PE將進入Secure狀態
  • 如果實施了安全擴展, 則在 Cold reset 和 Warm reset時,PE將進入NON-Secure狀態

實施了安全擴展后,下列寄存器都是banked by security:

  • 通用寄存器中的R13(SP)
  • 特殊寄存器中的 : MASK寄存器(PRIMASK, BASEPRI, FAULTMASK)、CONTROL 寄存器、棧指針限制寄存器(MSPLIM ,PSPLIM)
  • System Control Space (SCS)

MRS 和MSR指令編碼中的bit[7]表示操作的是哪組寄存器(Secure or NON-Secure)

cortex-A Trustzone 和 cortex-M Trustzone的對比:

在cortex-M上,雙系統的切換,使用的是 Secure Gateway (SG) 指令,但只允許在特殊的memory上調用SG,即使NSC(non-secure callable)

5、異常號和異常優先級

cortex-M中內置一個Nested Vectored Interrupt Controller (NVIC) 中斷控制器

cortex-M的異常和中斷具有以下優先級

總結

以上是生活随笔為你收集整理的ARMV8-M学习笔记-入门的全部內容,希望文章能夠幫你解決所遇到的問題。

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