news 2026/7/13 14:12:42

Cortex M7-TRM 翻译系列之System Control(三)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Cortex M7-TRM 翻译系列之System Control(三)

3 系统控制

本章介绍用于控制处理器运行的各类寄存器,涵盖以下模块内的寄存器:

  • 系统控制空间
  • 访问控制空间
  • 标识信息空间
  • 缓存维护空间

3.1 寄存器概览

本节介绍以下为本处理器专属实现的系统控制寄存器:

3.1.1 Auxiliary Control Register(ACTLR)

项目内容
功能用途提供处理器实现自定义的配置与控制选项。
使用约束无使用约束。
配置版本所有内核配置版本均支持该寄存器。
属性说明见下表

位域名称功能说明
[31:29]保留位
[28]DISFPUISSOPT0:正常工作模式
[27]DISCRITAXIRUW

关闭关键 AXI写下读(read-under-write)机制:

0:正常工作,兼容 r0 版本内核;

1:针对设备内存 / 强排序内存的 AXI 读操作、共享内存独占读操作,必须等待 AXI 上所有未完成存储事务全部结束后,才允许在 AXIM AR 通道发起。

[26]DISDYNADD

关闭 ADD、SUB 指令动态分配机制:

0:正常工作,部分 ADD、SUB 指令在 EX1 阶段完成运算;

1:所有 ADD、SUB 指令均延迟至 EX2 阶段完成运算。
备注:M7是顺序执行,双发射,多级流水线。两条发射线在取指和译码之后,如果资源不冲突,会分别由两条发射通道执行(两条发射通道的执行能力存在差别,通道1仅可以简单的运算操作。EX1和EX2分别是发射通道的执行过程。另外,双发射是锁步同步推进的,即每个时钟周期下,所处的流水线阶段是一致的)

[25:21]DISISSCH1

0:正常工作;

1:禁止对应类型指令在发射通道 1 派发。

Bit [25]:浮点 VFP 指令

Bit [24]:整数乘累加 MAC、乘法 MUL 指令

Bit [23]:目标为 PC 的加载指令

Bit [22]:间接跳转(不含加载至 PC 场景)

Bit [21]:直接跳转指令

[20:16]DISDI

0:正常工作;

1:当对应类型指令占用通道 0 时,禁止任何指令双发射。

Bit [20]:浮点 VFP 指令

Bit [19]:整数乘累加 MAC、乘法 MUL 指令

Bit [18]:目标为 PC 的加载指令

Bit [17]:间接跳转(不含加载至 PC 场景)

Bit [16]:直接跳转指令
备注:硬件先检查该位然后在检查DISISSCH1,全部通过后才执行双发射,否则执行单发射

[15]DISCRITAXIRUR

关闭关键 AXI读下读(Read-Under-Read)机制:

0:正常工作;

1:若 AXI 存在尚未完成的读事务,则不再发起针对强排序 / 设备内存的 AXI 读,以及共享内存 LDREX 独占读。AXI 事务一旦发起将不可被打断。该位有助于缩短此类事务持续时长、优化最坏情况中断延迟;开启后整体性能下降。

[14]DISBTACALLOC

0:正常工作;

1:分支目标地址缓存 BTAC 不再分配新条目,但已有条目仍可更新。

[13]DISBTACREAD

0:正常工作;

1:不使用 BTAC 缓存,仅能执行静态分支预测。

[12]DISITMATBFLUSH

关闭 ITM 与 DWT 的 ATB 冲刷机制:

1:禁用 ITM、DWT ATB 冲刷,忽略 AFVALID 信号,强制拉高 AFREADY。注释该位硬件固定为 1,属性为读恒 1、写忽略(RAO/WI)

[11]DISRAMODE

关闭回写 - 写分配(Write-Back Write-Allocate)存储区的动态读分配模式:0:正常工作模式

1:禁用动态读分配

[10]FPEXCODIS

禁用FPU异常输出

0:正常工作模式

1:关闭 FPU 异常输出
备注:该位只屏蔽FPU异常对外的硬件输出信号线,不会关闭内核本身的异常处理,这需要和数字集成同事确认集成时是否引出处理异常信号

[9:3]-保留
[2]DISFOLD0:正常工作模式
[1:0]-保留

3.1.2 CPUID Base Register(CPUID)

项目内容
功能用途

・处理器内核的 ID 编号

・处理器内核的版本号

・处理器内核的实现细节

使用约束无使用约束。
配置版本所有内核配置版本均支持该寄存器。
属性说明见下表

位域名称功能说明
[31:24]IMPLEMENTER标识内核设计厂商:0x41 = Arm 公司
[23:20]VARIANT标识处理器变体版本:0x0 = Revision 00x1 = Revision 1
[19:16]ARCHITECTURE固定为0xF
[15:4]PARTNO标识器件型号
0xC27 = Cortex‑M7
[3:0]REVISION

标识补丁版本:

0x0 = Patch0

0x1 = Patch 1

0x2 = Patch 2

3.1.3 Cache Level ID Register(CLIDR)

项目内容
功能用途

・标识已实现的缓存层级。从架构层面而言,指令侧与数据侧可配置不同数量的缓存层级。

・记录一致性点(point-of-coherency)

・记录统一缓存点(point-of-unification)

使用约束只读寄存器且仅在特权模式下可以访问
配置版本所有内核配置版本均支持该寄存器。
属性说明见下表

位域名称功能说明
[31:30]保留位
[29:27]LoUU

单核统一缓存层级(Level of Unification Uniprocessor)

0b001:存在任意一类缓存时,统一缓存点位于 L2 缓存。

0b000:未实现指令缓存与数据缓存时,统一缓存点位于 L1 层级。

[26:24]LoC

一致性层级(Level of Coherency)

0b001:存在任意一类缓存时,一致性点位于 L2 缓存。

0b000:未实现指令缓存与数据缓存时,一致性点位于 L1 层级。

备注:M7无L2缓存

[23:3]保留位
[2:0]Ctype1

L1 缓存类型

0b000:未实现指令缓存、数据缓存。

0b001:已实现指令缓存。

0b010:已实现数据缓存。

0b011:同时实现指令缓存与数据缓存。

3.1.4 Cache Size ID Register(CCSIDR)

项目内容
功能用途提供由CSSELR 寄存器选中的指令缓存或数据缓存的容量与工作特性相关信息。从架构层面,最多可支持八级缓存,包含指令缓存、数据缓存或统一型缓存。本处理器仅包含一级(L1)指令缓存与数据缓存。
使用约束只读寄存器且仅在特权模式下可以访问
配置版本所有内核配置版本均支持该寄存器。
属性说明见下表

位域名称功能说明
[31]WT

标识是否支持写直通(Write-Through):

1 = 支持写直通

[30]WB

标识是否支持写回(Write-Back):

1 = 支持写回

[29]RA

标识是否支持读分配(Read Allocate):

1 = 支持读分配

[28]WA

标识是否支持写分配(Write Allocate):

1 = 支持写分配

[27:13]NumSets标识缓存组数量,计算公式:实际组数 = NumSets + 1数值取决于缓存容量配置
[12:3]Associativity

标识缓存路数,计算公式:实际路数 = Associativity + 1

0x1 = 2 路组相联

0x3 = 4 路数据缓存相联

[2:0]LineSize

标识每条缓存行包含多少个字(word)

0x1 = 缓存行大小 32 字节

备注:计算公式为,x即每条cacheline的大小(word)

下表是CCSIDR编码实例说明。

举例说明计算过程:当SIZE=4KB,Numbers=0x001F,Associativity=0x3,LineSize=0x1。首先计算cacheline的大小,根据上面提到的公式,可以计算出x=8word,即cacheline容量为8*4=32B。然后每组有4路(Associativity+1),共32组(Numbers+1)。Cache总容量=X_Linesize*(Associativity+1)*(Numbers+1)=32*4*32=4096B=4KB。

3.1.5 Cache Size Selection Register(CSSELR)

项目内容
功能用途存放处理器用于选择待查询缓存的选择值。
使用约束可读写,仅特权模式下访问
配置版本所有内核配置版本均支持该寄存器。
属性说明见下表

位域名称功能说明
[31:4]保留位
[3:1]Level选择要查询的缓存层级。固定代表一级缓存(L1)。该字段读取恒为 0,写入忽略(RAZ/WI)
[0]InD

选择指令缓存或数据缓存:

0 = 数据缓存(Data cache)

1 = 指令缓存(Instruction cache)

3.1.6 Instruction and Data Tightly-Coupled Memory Control Register(CM7_ITCMCR/CM7_DTCMCR)

项目内容
功能用途控制访问请求被映射至 TCM 接口还是 AXIM 接口。
使用约束仅特权模式下访问
配置版本所有内核配置版本均支持该寄存器。
属性说明见下表

位域名称类型功能说明
[31:7]保留位
[6:3]SZRO

TCM 容量。标识对应 TCM 的大小:

0b0000 未实现 TCM

0b0011 4KB

0b0100 8KB

0b0101 16KB0

b0110 32KB

0b0111 64KB

0b1000 128KB

0b1001 256KB

0b1010 512KB

0b1011 1MB

0b1100 2MB

0b1101 4MB

0b1110 8MB

0b1111 16MB

[2]RETENRW

重试阶段使能。使能后,处理器保证响应对应 TCM 接口上的重试输出信号,重新执行发起 TCM 访问的指令。

0:禁用重试阶段

1:使能重试阶段复位值由 INITRETRYEN 引脚决定。

重试功能可配合外部逻辑,用于实现 TCM 的检错与纠错。

[1]RMWRW

读 - 修改 - 写(RMW)使能。该位置 1 时,所有非 TCM RAM 完整位宽的 TCM 写访问,都会采用 RMW 操作序列:

0:禁用 RMW

1:使能 RMW复位值由 INITRMWEN 引脚决定。

RMW 功能可配合外部逻辑,用于实现 TCM 的检错与纠错。

[0]ENRW

TCM 使能。当 TCM 被禁用时,所有原本指向 TCM 地址区间的访问全部转发至 AXIM 接口。

0:TCM 禁用

1:TCM 使能

复位值由 INITTCMEN 引脚决定。

3.1.7 AHBP Control Register(AHBPCR)

项目内容
功能用途

控制访问请求路由至AHBP接口还是AXIM接口

使用约束仅特权模式下访问
配置版本所有内核配置版本均支持该寄存器。
属性说明见下表

位域名称类型功能说明
[31:4]保留位
[3:1]SZRO

AHBP 地址空间大小:

0b000:0MB,AHBP 接口禁用

0b001:64MB

0b010:128MB

0b011:256MB

0b100:512MB

其余编码值保留。

寄存器复位值由 CFGAHBPSZ 配置引脚决定。

[0]ENRW

AHBP 接口使能:

0:AHBP 禁用。接口关闭后,原 AHBP 地址区间的所有访问请求均转发至 AXIM 接口。

1:AHBP 使能。

复位值由 INITAHBPEN 配置引脚决定。

3.1.8 L1 Cache Control Register(CACR)

项目译文
用途控制 L1 缓存 ECC 功能以及 L1 缓存一致性使用模式。
使用约束仅允许在特权模式下访问。
配置适配所有处理器配置版本均具备该寄存器。
属性见下表

位域名称类型功能说明
[31:3]保留位,读取恒为 0、写入忽略(RAZ/WI)
[2]FORCEWTRW

使能数据缓存强制写直通模式:

0:关闭强制写直通

1:开启强制写直通。所有可缓存内存区域一律按照写直通 (Write-Through)处理。若未集成数据缓存,该位读取恒为 0、写入忽略。若集成数据缓存,FORCEWT 上电复位值为 0。

[1]ECCDISRW

开启指令和数据缓存ECC功能

0:控制指令缓存与数据缓存的 ECC 功能:

1:禁用指令缓存、数据缓存的 ECC 校验功能。

[0]SIWTRW

共享可缓存区域强制 WT(数据缓存)。用于启用受限缓存一致性工作模式:0:常规模式。共享可缓存地址按不可缓存对待,软件配置的内部缓存属性被忽略。此为共享内存默认工作模式。对于这类地址,数据缓存对软件等效透明,无需软件执行缓存维护操作

1:共享可缓存地址按写直通 (Write-Through)对待,软件配置的内部缓存属性被忽略。所有写操作全局立即可见;其他总线主设备的数据更新,Cortex‑M7 内核软件仍需要执行对应的缓存维护操作才能读取到最新数据。适用于异构多核系统,典型场景:Cortex‑M7 挂接在多核处理器的加速器一致性端口(ACP)。未配置数据缓存时,该位读取恒为 0、写入忽略(RAZ/WI)。

备注:该位的作用是修改 MPU 标记为 Normal / Shared(可共享)内存区域的数据缓存策略。当siwt=0时,标记为shareable的区域访问一律视作Non-cacheable,CPU访问该区域时绕过Dcache,走AXIM/AHBP总线。当siwt=1时,写操作执行WT操作,读操作仍进行缓存操作。

3.1.9 Auxiliary Bus Fault Status Register(ABFSR)

项目译文
用途保存异步总线故障的来源信息。在总线故障异常服务程序中,软件读取 BFSR 寄存器;若检测到存在异步故障,则读取 ABFSR 寄存器,确认受故障影响的接口。向 CM7_ABFSR 写入任意数值均可清除该寄存器标志位。关于 BFSR 更多信息,请参阅《ARMv7-M 架构参考手册》。
使用约束仅可在特权模式下访问。寄存器由系统复位信号nSYSRESET复位;向其写入任意数据都会将寄存器清零。仅当BFSR.IMPRECISERR = 1时,本寄存器内的数据才具备有效定义。
配置适配见下表

位域名称功能说明
[31:10]保留位
[9:8]AXIMTYPE

标识 AXIM 接口上报的故障响应类型:

0b00:OKAY(正常访问完成,无错误)

0b01:EXOKAY(独占访问成功响应)

0b10:SLVERR(从设备错误,外设返回功能性故障)

0b11:DECERR(译码错误,地址无对应从设备)

仅当 AXIM 位为 1 时,此字段有效。

[7:5]保留位
[4]EPPBEPPB 接口发生异步故障
[3]AXIMAXIM 接口发生异步故障
[2]AHBPAHBP 接口发生异步故障
[1]DTCMDTCM 接口发生异步故障
[0]ITCMITCM 接口发生异步故障

3.1.10 Instruction Error bank Register 0-1(IEBR0-1)

项目译文
用途保存指令缓存查找过程中检测到的错误相关信息。
使用约束仅允许在特权模式下访问。
配置适配仅当实现了 ECC 可配置选项时,该寄存器有效。
属性见下表

位域名称类型描述
[31:30]RW用户自定义。发生新缓存分配时以及上电复位时,错误检测逻辑将此字段置为 0b00
[29:18]RW保留位
[17]Type of error(错误类型)RW

标识错误类型:

0:可纠正错误

1:不可纠正错误

[16]RAM bank(RAM 存储体)RW

标识发生错误的 RAM 区域:

0:标签 RAM(Tag RAM)

1:数据 RAM(Data RAM)
备注:双份寄存器,通过该为指示TAG还是DATA

[15:2]RAM location(RAM 位置信息)RW

标识指令缓存 RAM 内出错位置:

[14]:路(Way)

[13:4]:组索引(Index)

[3:2]:缓存行内双字偏移

[1]Locked(锁定标志)RW

标识该缓存条目是否被锁定:

0:条目未锁定,硬件可用于缓存分配

1:条目由软件锁定,硬件不允许将新内容分配至该条目

上电复位默认值为 0

[0]Valid(有效标志)RW

标识本条记录是否有效:

0:条目无效

1:条目有效

上电复位默认值为 0

3.1.11 Data Error bank Register 0-1(DEBR0-1)

项目译文
用途保存数据缓存查找过程中检测到的错误相关信息。
使用约束仅允许在特权模式下访问。
配置适配仅当实现 ECC 选配功能时,该寄存器可用。
属性见下表

位域名称类型描述
[31:30]RW用户自定义字段。在发生新缓存分配以及上电复位时,错误检测逻辑将此字段置为 0b00
[29:18]RW保留位
[17]Type of error(错误类型)RW

标识错误类型:

0:可纠正错误

1:不可纠正错误

[16]RAM bank(RAM 存储体)RW

标识出错所在 RAM 存储体:

0:标签 RAM(Tag RAM)

1:数据 RAM(Data RAM)

[15:2]RAM location(RAM 位置信息)RW

标识数据缓存 RAM 内出错位置:

[15:14]:路(Way)

[13:5]:组索引(Index)

[4:2]:缓存行内字偏移

[1]Locked(锁定标志)RW

标识该缓存条目是否处于锁定状态:

0:条目未锁定,硬件可分配使用该条目

1:条目由软件锁定,硬件不允许将新数据分配至该条目

上电复位默认值为 0

[0]Valid(有效标志)RW

标识本条故障记录是否有效:

0:条目无效

1:条目有效

上电复位默认值为 0

3.1.12 AHB Slave Control Register(AHBSCR)

项目译文
用途控制内核软件访问与 AHB 从设备访问 TCM 时的优先级。
使用约束仅允许在特权模式下访问。
配置适配所有处理器配置版本均具备该寄存器。
属性见下表

位域名称类型功能说明
[31:16]保留位
[15:11]INITCOUNTRW

公平计数器初始值。用于降低由 AHBSCR.CTL 字段选定访问发起方的访问优先级。复位值为 0b01。

・轮询调度模式下,将 INITCOUNT 设置为 0b01,同时 AHBSCR.CTL 设置为 0b00 或 0b01

・注意:INITCOUNT禁止配置为 0b00。若设为 0,被降级的访问发起方在总线竞争时将始终获得优先权限,可能引发活锁(livelock)。

当 AHBSCR.CTL = 0b11 时,INITCOUNT 不生效。

[10:2]TPRIRW

AHBS 流量降级阈值执行优先级。优先级取值为 TPRI [7:0],编码格式与 NVIC 寄存器保持一致:

0b0xxxxxxx:普通中断优先级

0b11111111:优先级 -1,对应 HardFault 异常

0b11111110:优先级 -2,对应 NMI 异常

[1:0]CTLRW

AHBS 优先级控制:

0b00:AHBS 访问优先级被降级(复位默认值)

0b01:CPU 软件侧访问优先级被降级

0b10:当 CPU 当前执行优先级大于等于TPRI 配置阈值时,使用 INITCOUNT 初始化公平计数器,AHBS 访问优先级被降级;当 CPU 执行优先级低于该阈值时,公平计数器初始化为 1(进入轮询仲裁模式)。

・阈值编码遵循 NVIC 规则:数值越大,逻辑优先级越低

・处理器当前执行优先级遵循架构定义,自动包含 PRIMASK、BASEPRI、FAULTMASK 特殊寄存器带来的屏蔽效果。

0b11:访问优先级由外部 AHBSPRI 信号控制。

知识点:占坑后面更新

1、结合armv7手册,补充其余寄存器的解释

2、详细了解ARM M系列汇总的动态分支预测,投机访问,静态分支预测

3、对于WBWA中的策略,结合MPU属性划分,详细了解Dcache处理机制

4、对于缓存一致性的问题,理解一下POC和POU机制,以及常见的处理方式

5、对于ECC机制,SRAM,FLASH,以及tcm和cache的处理方式分别是什么

6、AHBS从机的仲裁机制需研究一下

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/13 14:12:12

UC-winRoad 车辆信息输出函数

UC-winRoad 车辆信息输出函数 该文章仅作记录:列名数据类型说明Timestampdatetime记录数据的时间戳,表示数据采集的具体时间。IDint车辆的唯一标识符,用于识别和区分不同的车辆。Descriptionstring车辆的描述信息,包括类型、颜色等…

作者头像 李华
网站建设 2026/7/13 14:11:49

eBPF编程实战:从入门到指令调试

1. eBPF编程前端概览 eBPF(Extended BPF)是Linux内核中一个通用的虚拟机执行引擎,最初用于包过滤,现已扩展到跟踪、性能分析、安全等多个领域。编写eBPF程序有多种前端途径,从底层到高层可分为: 1.1 LLVM(底层) LLVM编译器支持将C/LLVM IR直接编译为BPF字节码。开发…

作者头像 李华
网站建设 2026/7/13 14:11:20

CIDR 与 VLSM 深度对比:3 种场景下的地址规划效率分析

CIDR 与 VLSM 实战对比:企业网络规划的三种典型场景1. 地址规划技术的演进背景当网络工程师面对IPv4地址资源日益紧张的局面时,CIDR(无类别域间路由)和VLSM(可变长子网掩码)成为了优化地址分配的两大核心技…

作者头像 李华
网站建设 2026/7/13 14:11:17

python抓包工具mitmproxy

1、安装 pip install mitmproxy 2、启动,代理端口根据实际情况修改 #mit代理 http://127.0.0.1:8888 mitmweb --listen-port 8888 3、开启web页面 http://127.0.0.1:8081/ 4、让ap走代理 代码设置代理 只影响该代码本身 import os os.environ["HTTP_PROXY…

作者头像 李华