打印
[MM32硬件]

MM32F5330内置了内存保护单元(MPU)

[复制链接]
1719|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
qn7a12|  楼主 | 2024-5-31 23:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
MM32F5330内置了内存保护单元(MPU),它是一种硬件机制,用于保护处理器的存储器区域,防止未经授权的访问。MM32F5330的MPU提供了对存储器区域的灵活控制,可以根据需要配置不同的存储器区域,并定义各个区域的权限和保护属性。

MPU的主要功能包括:

存储器保护:MPU允许将存储器划分为多个区域,并为每个区域设置不同的保护属性。这些属性包括读取、写入和执行权限,以及访问规则等。

存储器映射:MPU可以实现存储器的映射,将物理地址映射到虚拟地址,提供更灵活的存储器管理功能。

访问控制:MPU可以根据存储器区域的权限设置,对访问该区域的请求进行控制和限制,保护系统的安全性和稳定性。

错误检测:MPU可以检测到对受保护存储器区域的非法访问,并触发相应的异常处理机制,以保护系统免受恶意攻击和错误操作的影响。

使用特权

评论回复
沙发
qn7a12|  楼主 | 2024-5-31 23:13 | 只看该作者
在MM32F5330上配置MPU通常需要以下步骤:

初始化MPU:通过设置MPU的寄存器,配置存储器区域的大小、位置和属性等参数。

启用MPU:启用MPU功能,使其开始对存储器访问进行监控和保护。

配置存储器区域:根据需要,划分存储器为多个区域,并为每个区域设置不同的保护属性。

处理MPU异常:在发生对受保护存储器区域的非法访问时,处理MPU异常,并采取相应的措施,如中断处理、错误处理等。

使用特权

评论回复
板凳
qn7a12|  楼主 | 2024-5-31 23:14 | 只看该作者
如何在MM32F5330上配置MPU来保护一块存储器区域:

c

#include "MM32F5330.h"

void MPU_Configuration(void)
{
    // 配置MPU的Region 1
    MPU->RBAR = 0x20000000; // 存储器区域的基地址
    MPU->RASR = MPU_RASR_AP_READWRITE | MPU_RASR_TEX_LEVEL0 | MPU_RASR_SIZE_4KB | MPU_RASR_ENABLE; // 区域属性设置
}

int main(void)
{
    MPU_Configuration();

    // 启用MPU
    MPU->CTRL |= MPU_CTRL_ENABLE_Msk;

    // 主循环中可以添加其他任务或逻辑
    while (1)
    {
    }
}

使用特权

评论回复
地板
qn7a12|  楼主 | 2024-5-31 23:14 | 只看该作者
在这个示例中,MPU被配置为保护存储器地址0x20000000开始的4KB区域,设置为读写权限,并启用了MPU功能。

使用特权

评论回复
5
caigang13| | 2024-6-2 15:37 | 只看该作者
这个对非法读取有一定保护作用

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

31

主题

533

帖子

1

粉丝