大家好:
我 是第一次使用臂组件和 MPU 功能。 在我看来,如果我需要配置 MPU 函数,我将在 lc4357数据表中设置 MPU 寄存器,而不是在 ARM 程序集中设置 MPU 寄存器。
在我们的产品中,我发现 MPU 的任何使用或配置都是通过臂组件实现的,而不是通过 C 实现的
我的问题是:
1.在 MPU 配置过程中,装配体和 C 之间有何区别?
2.使用装配体是否必要?
PSMA 正姐妹“DRBAR”和 MPU 寄存器“MPUREGBASE”之间有何区别?
祝你一切顺利
李
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 功能。 在我看来,如果我需要配置 MPU 函数,我将在 lc4357数据表中设置 MPU 寄存器,而不是在 ARM 程序集中设置 MPU 寄存器。
在我们的产品中,我发现 MPU 的任何使用或配置都是通过臂组件实现的,而不是通过 C 实现的
我的问题是:
1.在 MPU 配置过程中,装配体和 C 之间有何区别?
2.使用装配体是否必要?
PSMA 正姐妹“DRBAR”和 MPU 寄存器“MPUREGBASE”之间有何区别?
祝你一切顺利
李
你好,李
MPU 通过 CP15寄存器配置,使用 ARM MCR 和 MRC 指令(如使用以下代码启用 MPU):
MRC P15,0,R1,C1,c0, 0
;阅读 CP15寄存器1
Orr R1,R1,#0x1
DSB
MCR P15,0,R1,C1,c0, 0;启用 MPU
ISB
[引用 userid="487390" url="~ë/support/icls/arm-based 微处理器-组/基于 ARM 的微控制器/f/arm-based 微控制器- forum/1068821/tms570lc4357-QS-On-MPU-whit-difference - arm-assembly-和 c-寅-imfunction-] 2.是否需要使用程序集?是的,程序集代码用于配置 MPU
[引用 userid="487390" url="~ë/support/icros/arm-based 微处理器组/基于 ARM 的微控制器/f/arm-based 微控制器-forum/1068821/tmsreglc4357-QS-on-MPU-DAB- ARM 组装和基于 MPU 的三 者之间的区别是什么?]我不知道 PSMA,DRBAR 和 MPUREGBASE 寄存器。 你能告诉我这些名字在哪里?
请参阅 ARM TRM: https://developer.arm.com/documentation/ddi0460/d/Memory-Protection-Unit
QJ 您好:
对于 Q1,我认为可以通过 C 代码而不是臂组件来配置 MPU。对吗?
第三季度 ,DRBAR 是 PMSA 注册,它们来自《ARM体系结构参考手册 ARMv7-A 和 ARMv7-R 版》,第1840页,第 B6.1.36节;
DRBAR 是数据区域基本地址寄存器。 PMA 是受保护的内存系统体系结构。
以下是装配体中的示例:
要访问 DRBAR,软件读取或写入 CP15寄存器,<opc1>设置为0,<CRN>设置为 C6,<CRM>设置为
C1和<opc2>设置为0。 例如:
MRC P15,0,<RT>,C6,C1, 0;将 DRBAR 读入 Rt
MCR P15,0,<Rt>,C6,C1, 0;将 Rt 写入 DRBAR
在我们的产品中,有以下代码:
=================================================================
//初始帮助程序
// mpuInitRegion
=================================================================
全球 mpuInitRegion
键入 mpuInitRegion,函数
func mpuInitRegion
拇指功能
mpuInitRegion: //仅用于 init!
MOV IP,#0 //在操作前禁用区域
MCR P15,#0,r0,C6,C2, 0 // RGNR,MPU 地区编号寄存器
MCR P15,0,IP,C6,C1, #2 // DRSR,数据区域大小和启用寄存器
MCR P15,0,R1,C6,C1, #0// DRBAR,数据区域基本地址寄存器
MCR P15,0,R3,C6,C1, #4 // DRACR,数据区域访问控制寄存器
MCR P15,0,R2,C6,C1, #2 // DRSR,数据区域大小和启用寄存器
BX LR
endfunc
=================================================================
我认为上述代码是 DRBAR 寄存器与"MPUREGBASE-"寄存器相同。