打印
[PSoC™]

PSoC4100S MCU RAM walkpat 测试方法

[复制链接]
281|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
IFX-YunhuaDong|  楼主 | 2024-7-18 19:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
IEC 60730-1 H.2.19.7对 RAM 和 CPU 要求,除通用的March C 和March X 测试方法外,还有一种测试方法,如walkpat。基本原理(32bit 4byte )
对该地址写入0x00000001,再读取出来,与数据0x00000001,做对比,如果不相等代表内存故障,进入报警模式。
对该地址写入0x00000002,再读取出来,与数据0x00000002,做对比,如果不相等代表内存故障,进入报警模式。
对该地址写入0x00000004,再读取出来,与数据0x00000004,做对比,如果不相等代表内存故障,进入报警模式。
......
对每一位单独写1后,再读取判断,全部完成后,再反过来进行判断,即
对该地址写入0xffffffff,再读取出来,与数据0xffffffff,做对比,如果不相等代表内存故障,进入报警模式。
对该地址写入0xfffffffe,再读取出来,与数据0xfffffffe,做对比,如果不相等代表内存故障,进入报警模式。
对该地址写入0xfffffffd,再读取出来,与数据0xfffffffd,做对比,如果不相等代表内存故障,进入报警模式。
每一个32位的内存需要处理
参考汇编代码如下:
/*   r0 - used to set address. */
Walkpat_Test_Write:
//  LDR   R6,[R0]
Walkpat_Test_Write0:
  LDR   R2,=0x00000000
  STR   R2,[R0]
  LDR   R3,[R0]
  CMP   R2,R3
  BEQ   Walkpat_Read0  
  MOVS  R7, #ERROR_STATUS   
  BX    LR
  
Walkpat_Read0:
  
  LDR   R2,=0x00000001
RAMLoopStart1:
  STR   R2,[R0]
  LDR   R3,[R0]
  CMP   R2,R3
  BNE   Walkpat_Test_FAIL
  LSLS  R2,R2,#1
  CMP   R2,#0
  BNE   RAMLoopStart1
  
  LDR   R2,=0xFFFFFFFF
  STR   R2,[R0]
  LDR   R3,[R0]
  CMP   R2,R3
  BNE   Walkpat_Test_FAIL
  LDR   R2,=0x00000001
  
RAMLoopStart2:
  MVNS  R3,R2
  STR   R3,[R0]
  LDR   R3,[R0]
  MVNS  R3,R3
  CMP   R2,R3
  BNE   Walkpat_Test_FAIL
  LSLS  R2,R2,#1
  CMP   R2,#0
  BNE   RAMLoopStart2
  LDR   R2,=0xFFFFFFFF
  STR   R2,[R0]
  ADDS  R0,R0,#4
  CMP   R0, R1
  BLT   Walkpat_Test_Write0
  
Walkpat_Test_OK:  
  MOVS  R7, #OK_STATUS   
  BX    LR
  
Walkpat_Test_FAIL:
  MOVS  R7, #ERROR_STATUS   
  BX    LR

使用特权

评论回复
沙发
tpgf| | 2024-7-19 11:40 | 只看该作者
如果想要进行这种测试的话 需要下载相关软件工具吗

使用特权

评论回复
板凳
xiaoqizi| | 2024-7-19 12:56 | 只看该作者
需要对所有地址的数据都要轮训一遍吗

使用特权

评论回复
地板
木木guainv| | 2024-7-19 16:09 | 只看该作者
这种方式是不是只有在出厂的时候才能使用呢

使用特权

评论回复
5
IFX-YunhuaDong|  楼主 | 2024-7-19 17:03 | 只看该作者
tpgf 发表于 2024-7-19 11:40
如果想要进行这种测试的话 需要下载相关软件工具吗

MCU内部代码运行时,分块测试即可,即数据 buf 堆栈,一次测试字节数不要太多,如16个字节

使用特权

评论回复
6
IFX-YunhuaDong|  楼主 | 2024-7-19 17:06 | 只看该作者
木木guainv 发表于 2024-7-19 16:09
这种方式是不是只有在出厂的时候才能使用呢

一些有安全认证(CLass B or  Class C)要求的项目,必须对RAM FLASH CPU 时钟 中断 IO口等进行周期性测试

使用特权

评论回复
7
wowu| | 2024-7-19 17:15 | 只看该作者
这种测试方法一定要使用汇编语言吗

使用特权

评论回复
8
wakayi| | 2024-7-19 18:21 | 只看该作者
这两种通用的测试方法都是分别测试哪些数据的呢

使用特权

评论回复
9
suncat0504| | 2024-7-29 21:19 | 只看该作者
谢谢分享!很少考虑到这种测试,拿来就用了。哈哈哈哈

使用特权

评论回复
10
shenxiaolin| | 2024-7-29 21:49 | 只看该作者
感谢分享

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

24

帖子

0

粉丝