在线时间2 小时
UID3506915
注册时间2019-2-22
NXP金币0
该用户从未签到
新手上路

- 积分
- 28
- 最后登录
- 2019-9-9
|

楼主 |
发表于 2019-9-6 11:12:53
|
显示全部楼层
终于找到原因了!
在野火论坛上的一个帖子给了我提示,谢谢这位哥们儿!!!
我对比了官方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了!!!
具体原因后面再查文档!!! |
|