arm mmu和cache注意

在编译raspberry-uboot的时候遇到了很多的问题。

比如memset的时候指针无缘无故跑飞。很可能是mmu和cache的问题


在开启CACHE的情况下

1

JTAG等等调试的时候是通过监听地址总线上的数据来暂停的。比如断点在A ,地址总线上出现了A,此时就暂停CPU。断下来了。

如果开启了CACHE,对于A-4,A, A+4地址 当执行到A-4的时候。可能由于cache的原因。将A以及A+4都cache了。此时缓存时地址总线上出现了A,因此在A断下来

了。此时执行step单步。却停不下来。因为A+4也已经被cache。A+4的数据是直接在cache里面执行的。所以地址总线上不会再出现A+4。所以step就失效了。


2 执行完大量的拷贝以后。记得刷掉ICACHE和DCACHE。因为很可能由于缓存中的数据和内存中的数据不一致,程序跑飞了。尤其是多核心的情况下。


指针跑飞一般原因有以下几种:
1.中断
2.看门狗
3.内存溢出
4.编译器优化的问题

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值