这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 板卡试用 » 【分享开发笔记,赚取电动螺丝刀】【S32K3】MPU 配置代码解析

共1条 1/1 1 跳转至

【分享开发笔记,赚取电动螺丝刀】【S32K3】MPU 配置代码解析 20

高工
2025-07-10 10:42:33     打赏

【简介】

在S32K3 Cortex-M7内核中是集成了MPU 模块的,从DDI0489F_cortex_m7_trm 文档中可以芯片设计时MPU 的可配置的regions 可以设计为为8 或者 16 对应的数值越大配置属性的优先级越高。

image.png

对应的MPU 的配置寄存器列表如下

image.png

image.png

【MPU_TYPE寄存器】

以下对寄存器的说明可知,可以使用该寄存器来查看对应的core 的MPU是否配置及共有多少regions 的属性信息。

image.png

image.png

从S32K314 的芯片读取的配置信息可知,S32K314 的M7 核设计时设计了16个配置的MPU region。

【MPU_RNP寄存器配置】

MPU_RNP(MPU Region Number Register) 以下是手册对该寄存器的描述可知该寄存器用于选择当前配置的MPU region的number,按照手册的说明应先选择MPU_RNG,然后配置MPU_RBAR和MPU_RASR 

image.png

【MPU_RBAR寄存器配置】

对应的寄存器描述如下,可以通过该寄存器来设置region 的base 地址信息,从寄存器的ADDR 信号的配置也可以看出对应的MPU 的配置地址是2^5 对其的至少要32字节对齐

image.png

【MPU_PASR寄存器配置】

对应寄存器说明如下,我们可以使用该寄存器来配置对应region 的属性和size配置信息。

image.png

MPU 的主要特性是配置region 的属性信息,我们先结合手册和S32K的启动代码的MPU配置查看下ATTRS 的的属性配置。

以下代码是对CODE flash 的配置

    /*Program flash which would extract from linker symbol*/
    rbar[2]=(uint32)__ROM_CODE_START;
    rasr[2]=0x060B002BUL;

上述代码的rasr 配置为0x060b002b 对应的ATTRS 段的配置信息如下

image.png

以下是XN 属性的说明 0 可运行,1 不可执行配置

image.png


TEX C B 001 1 1 S = 0 对应属性配置为NORMAL CACHE write-back read alloc 属性

image.png

除了配置属性信息外还可以配置region 的大小信息 size 配置为21

image.png

image.png

按照手册里的公式计算对应的值为2^(21+1) byte = 4096 KB

上述的计算结果和启动文件的注释的说明也是匹配的

image.png


代码中对MPU 的配置也是对上述三个寄存器的配置过程匹配,配置好region 后使能MPU 完成MPU的初始化配置

image.png


以下是arm 手册中对texcb 的解码说明


image.png


AP 配置为特权级别和非特权级 read-only 访问属性

image.png







共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]