新手上路
- 积分
- 22
- 金钱
- 22
- 注册时间
- 2019-11-17
- 在线时间
- 5 小时
|
硬件设计和驱动程序按照 IS61LV51216 进行设计,由于 IS61LV51216 已经停产,直接采购 IS61WV51216 和 IS61LV25616 进行替换。测试过程中发现用 IS61LV25616 不会出现任何问题,而用 IS61WV51216 会出现内存块会自己改变,这是什么原因,驱动程序是参照原子哥的驱动程序进行修改的
感觉是时序问题导致,但是具体是哪个时序导致的?
而且问题现象非常奇怪,IS61WV51216 和 IS61LV25616 都可以正常读写。但是用 IS61WV51216 的时候,就是用 keil 去查看这块内存时候,发现有些地方的值突然就被改掉了。怎么证明是内存自己误动而不是,数组越界,或者野指针呢?因为 keil5 自带一个断点窗口,提供写访问断点功能,我们写了一些测试程序,对出现内存误动的内存块,进行正常写操作,确实是会立即跳出断点。然而出现内存误动的时候跳不出断点,那就证明是内存自己误动了,而不是应用层程序员,不小心数组越界,或者野指针。而且关于数组越界也通过map文件,进行了排除,野指针看了5遍代码,进行人工排查。所以肯定是内存值自己变掉了。
|
|