学前班
最后登录1970-1-1
在线时间 小时
注册时间2019-9-6
|
楼主 |
发表于 2019-9-6 11:17:02
|
显示全部楼层
终于找到原因了!
在野火论坛上的一个帖子给了我提示,谢谢这位哥们儿!!!
我对比了官方SDK和原子哥代码的MPU配置,发现在配置OCRAM区域时有所不同!!!
官方的如下
/* Region 6 setting: Memory with Normal type, not shareable, outer/inner write back */
MPU->RBAR = ARM_MPU_RBAR(6, 0x20200000U);
MPU->RASR = ARM_MPU_RASR(0, ARM_MPU_AP_FULL, 0, 0, 1, 1, 0, ARM_MPU_REGION_SIZE_256KB);
原子哥的如下
MPU->RBAR=ARM_MPU_RBAR(6,0X20200000); //region 6,起始地址0X2020 0000,OCRAM首地址,相同地址段设置,region大的覆盖小的
MPU->RASR=ARM_MPU_RASR(0,ARM_MPU_AP_FULL,0,1,1,0,0,ARM_MPU_REGION_SIZE_256KB); //可执行,全访问,写回,允许共享,允许cache,禁止缓存,禁止子region,256KB大小
此处不同的有属性有 “允许共享” 和 “是否缓存”
最后验证出,问题就是出在 共享这个属性上!!!把OCRAM的共享属性给使能就OK了!!!
具体原因后面再查文档!!! |
|