最近想做c6670内部的内存保护,在core0上运行了linux的程序,使用的内存主要是以0x80000000开始的DDR3存储空间。
现在的问题是我们想做内存保护的话主要关心以下的问题:
1.c6670内部有多少个MPU控制寄存器用于整段的内存保护?
看了c6670的datasheet里的table 2-2 介绍说有5个MPU,keystone MPU手册里又说有programmable start address和programmable end address以及MPPA寄存器,那么这5个MPU(0~4)和这些寄存器到底是什么对应关系?如何确认到底有几个可编程的寄存器?
我理解的是每个MPU里有16个寄存器组,6670有5个MPU,这样是不是总数在80个?
King Wang1:
不能这么理解。MPU是抱去某个区域的,这个区域是固定的。你有5个MPU,那么这5个MPU就只保护了5个区域(区域要查看手册)。每个MPU有16组,也只是把这个区域划成16个小区域而已,并没有扩大。MPPA是用来保护内存的,比如MSMC里面的MPPA,就是给所有访问MSM和DDR的master实行控制的,这个MPPA只能保护MSM和DDR。
He Huan:
回复 King Wang1:
那么我想对linux运行的ddr空间做保护,例如代码段和数据段,这些段比较多(肯定不只16个),c6670能否做到?
Andy Yin1:
回复 He Huan:
6670的DDR空间是通过MSMC进行访问的,可以设置MSMC SMS及SES设置DDR访问属性及权限。