Thread 中讨论的其他器件:DBCA
- MPU 的用途是什么?
- MPU 设置中的读取分配和写入分配是什么?
- 设置 MPU 区的步骤是什么?
- 重叠区域的属性是什么?
- 可共享存储器和不可共享存储器之间有何区别?
- 什么是 MPU 设置中的回写和直写?
- 不可高速缓存意味着什么?
- 严格排序存储器、器件存储器和正常存储器之间有何差异?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
存储器保护单元(MPU)是一个可编程单元、它允许特权软件(通常是操作系统内核)定义存储器访问权限。 它监控事务、包括从处理器获取指令和数据访问、当检测到访问冲突时、这些事务会触发故障异常。
基于 ARM Cortex-R 的 MCU 具有三种存储器类型:正常存储器、器件存储器和严格排序存储器。 存储器区域具有以下属性: 可共享或不可共享、可高速缓存或不可高速缓存、存储器访问权限和从未执行(XN)。
在使用前、需要对 MPU 寄存器进行编程和使能。 这通常在系统启动后在目标 MCU 上运行的任何应用程序的初始化阶段完成。
MPU 的用途是什么?
1.防止不受信任的应用程序访问受保护的内存区域
2.防止用户应用程序破坏操作系统使用的数据
3.通过阻止任务访问其他数据来分隔处理任务之间的数据
4.允许将存储器区域定义为只读、以便保护重要数据
5.检测意外的内存访问
MPU 设置中的读取分配和写入分配是什么?
读取分配。 基于 ARM Cortex-R 的 MCU 上的所有可缓存位置均为读取分配。 这意味着数据高速缓存行在发生高速缓存未命中时被分配、从而将数据从主存储器传输到高速缓存存储器中。 因此、对这些存储器位置的后续访问将导致高速缓存命中条件、数据直接从高速缓存存储器中读取。
写入分配: 在缓存未命中时、将分配缓存行并加载主存储器中的数据。 这意味着在处理器上执行存储指令可能会导致突发读取、从而将数据从主存储器缓存。 高速缓存未分配写入、未分配高速缓存行、数据直接写入主存储器。 在这里、只有在读取时出现缓存未命中时才会缓存一行、然后使用读取分配策略加载缓存。
设置 MPU 区的步骤是什么?
1.选择 MPU 区
2.写入 MPU 区的基地址
3.写入 MPU 区的属性
4.使能 MPU:SCTLR 寄存器
重叠区域的属性是什么?
当存储器区域重叠时、存储器访问受编号最大的存储器区域属性的影响。
可共享存储器和不可共享存储器之间有何区别?
可共享意味着存储器区域由多个处理器共享。 不可共享意味着存储器区域只能由单个处理器使用。 它与 DMA 访问无关。
什么是 MPU 设置中的回写和直写?
回写:在高速缓存命中时、仅更新数据高速缓存、而不更新主存储器。 高速缓存行被标记为脏、写入主存储器的操作被推迟、直到高速缓存行被逐出或显式清理。
直写式:高速缓存命中时、数据高速缓存和主存储器都将更新。
不可高速缓存意味着什么?
每次读取和写入都在主内存上执行,不会通过高速缓存。
严格排序存储器、器件存储器和正常存储器之间有何差异?
--严格排序(SO)和设备(DEV):
1.显式加载/存储到严格排序的区域、并且器件区域始终会产生精确的事务大小和数量。
对严格排序区域和器件区域的访问始终按照程序中列出的顺序显示。
--严格排序与器件:
1.严格排序的访问相对于*所有*其他显式加载/存储。
2.器件访问只能相对于其它器件访问进行排序
--正常(正常):
1.加载/存储到正常的存储器区域可能会导致任何大小和数目的事务。 例如:两个相邻的半字存储可能合并为单字写入。
2.关于排序,可以重新排序对普通存储器的访问。
--示例:
load-norm-A、load-dev-B、load-dev-C、load-norm-D 可作为 ADBC、甚至 DBCA 执行;
load-norm-A、load-SO-B、load-SO-C、load-norm-D 必须作为 ABCD 执行。