各位大神:
目前我们项目急需要用MPU保护单元做内存保护
我尝试过先设置好MPPA寄存器为管理员权限只读不写(值为0x003FFEE7),这时候我再去改写保护的DDR,会产生死机
但是如果我在之前先操作保护的DDR,再去修改寄存器的配置为只读不写,这时候再去写保护的DDR,这个时候又没有产生死机,
这是为何呢?
我这边有个需求是程序在运行过程中需要实时调整权限,所以需要在某种情况下改变寄存器控制
请帮忙看看,谢谢
Nancy Wang:
请先测试一下帖子中提供的mpu test工程,看是否能解决问题。
e2e.ti.com/…/1098969
user6134595:
回复 Nancy Wang:
你好 nancy:
我没有找到C6748_mpuTest.zip这个文件,能否贴到这个帖子里面 万分感谢~
Nancy Wang:
回复 user6134595:
C6748_mpuTest.zip
user6134595:
回复 user6134595:
hello Nancy:
我找到了一个工程3301.MPU_Test,里面有个源码,但是有extern一个函数,我将该源文件放到自己的工程下会编译不过,帮忙看下?
extern void intcVectorTable(void);
user6134595:
回复 user6134595:
Hello Nancy:
我将源文件移植到自己的主工程下测试结果如图,看起来这些配置没有起作用,跟我自己的代码测试结果一致,请问下原因可能是啥呢?
我这边尝试解决下
Nancy Wang:
回复 user6134595:
这是我用开发板测试的结果。
user6134595:
回复 Nancy Wang:
Hi Nancy:
之前的图片是我将源文件附在我的工程里面仿真的结果(为了编译成功屏蔽了中断函数),下面的图片是直接将你提供的工程加载到我的开发板中运行的结果
我的开发板是C6746,看结果对于L1、L2的保护起到了作用,但是对于DDR的保护没有起作用,目前看起来与你的对比结果应该是硬件不同,请问硬件上需要注意
什么呢?万分感谢~
user6134595:
回复 Nancy Wang:
Hi Nancy:
为了验证您提供的软件没有问题,我也拿了自己购买的C6748开发板进行仿真,结果是L1/L2/DDR均能被保护,跟您的结果一致;
所以我猜想是否和DDR周边的电路有关系,麻烦你那边给出一些必要的连接条件才能使能保护单元,我这边也尝试跟硬件那边分析下该问题万分感谢~
Nancy Wang:
回复 user6134595:
硬件发面可以参考这个链接看看。
processors.wiki.ti.com/…/OMAP-L138_Hardware_Design_Guide
软件方面参考这个帖子的总结看看:
e2e.ti.com/…/291838
user6134595:
回复 Nancy Wang:
Hi Nancy:
目前我已经把你发的链接给到硬件参考
但是我这边还是很疑惑,你那边能否提供一些线索我们排查
现在看,同一个软件工程(您提供的)在C6746芯片上(晶振为18.432)只对L1、L2起保护,对外部的镁光DDR不起保护作用
但是在我自己买的开发板上(C6748 晶振为24Mhz)就可以对外部镁光DDR起保护作用
是否和芯片或是晶振有关?