OpenVINOTM,给你看得见的未来!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 请教:vxWorks下用什么办法可以进行内存和Flash检测?

共3条 1/1 1 跳转至

请教:vxWorks下用什么办法可以进行内存和Flash检测?

菜鸟
2007-03-14 00:33:00    评分

vxWorks下用什么办法可以进行内存和Flash检测?

想在vxWorks下编写一个内存和Flash的检测工具。但不知道有有什么实现方法。

对于内存检测,如果对其中任意地址单元读写,估计程序会溢出。

对于Flash检测,如果是空的,可以写0x55,0xaa,但如果要保留原来flash里的内容,该怎么检测呢?




关键词: 请教     vxWorks     下用     什么     办法     可以     进行    

菜鸟
2007-03-23 04:48:00    评分
2楼
drystone

菜鸟
2007-03-23 17:10:00    评分
3楼

一种方法是使用风河的仿真器probe或者ice,里面有一个diagnostic的功能,能够测试地址线和数据线以及存储器。

另一种方法是自己写程序,常用的方法有以下几种,对地址测试和数据测试都适用:

1、走步0。依次写0xFFFFFFFE,0xFFFFFFFD,0xFFFFFFFB,0xFFFFFFF7,0xFFFFFFEF...0x7FFFFFFF,这样一组数字,如果是数据线测试,就向固定一个地址写入这些数字再读出来,写一个同步一下就读回来,如果数据线粘连读回来的会与原来的不同;如果是地址线测试,向这组数字表示的地址(注意不要超过存储器的上限)里面写入累加的一个数字,比如1、2、3。。。,全部写完后再读回来,如果地址线粘连会读到重复的数字,比如读到两个2,但没有读到1。

2、走步1。方法同上,只是数字的值变成了0、4、8、0x10、0x20。。。等。

3、写全F。前面两种方法主要检测的是焊接过程中的地址或数据线粘连,如果是存储器本身出错,比如有一个bit固定表现为0,可以使用写全F的方法,就是把所有的存储器空间写满F,然后读出来比较。

4、写全0。同上。

5、写0x55。原理与3、4相同,测试相邻晶元间是否有必然联系,比如bit1是0的时候bit2根据芯片内部不应该有的某种反应也变为0,这是我们不希望看到的。

6、写0xAA。同上。

7、写随机数。先在另外一个存储器上申请与待测存储器相同大小的空间,写满随机数,然后复制到待测存储器里,再读出来比较。

上面是常用的几种方法。华为的中试部门将这几种方法加一些辅助的其他测试方法总结成36步法、9步法、5步法、3步法等,其中1、2两种走步0、1都是必备的。因为晶片发生错误的概率很小,错误大多数发生在焊接过程中。

如果在系统启动的时候作自检,不能直接使用上面的方法,因为这些方法都是破坏性的,不能保全存储器里面的数据,只能用于出厂测试。一般自检时,内存检测在bios里面进行,在完成搬移之前,检查数据线和地址线,最多只需要操作128次,速度很快。flash检测,简单一点,可以把flash内容全部读到内存,检测完再拷贝回去,如果怕掉电丢失内容,需要划一个block作保存数据的中转站。


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]