[PSOC™] PSoC4100S MCU RAM walkpat 测试方法

[复制链接]
1276|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 | 显示全部楼层
这种方式是不是只有在出厂的时候才能使用呢
 楼主| IFX-YunhuaDong 发表于 2024-7-19 17:03 | 显示全部楼层
tpgf 发表于 2024-7-19 11:40
如果想要进行这种测试的话 需要下载相关软件工具吗

MCU内部代码运行时,分块测试即可,即数据 buf 堆栈,一次测试字节数不要太多,如16个字节
 楼主| IFX-YunhuaDong 发表于 2024-7-19 17:06 | 显示全部楼层
木木guainv 发表于 2024-7-19 16:09
这种方式是不是只有在出厂的时候才能使用呢

一些有安全认证(CLass B or  Class C)要求的项目,必须对RAM FLASH CPU 时钟 中断 IO口等进行周期性测试
wowu 发表于 2024-7-19 17:15 | 显示全部楼层
这种测试方法一定要使用汇编语言吗
wakayi 发表于 2024-7-19 18:21 | 显示全部楼层
这两种通用的测试方法都是分别测试哪些数据的呢
suncat0504 发表于 2024-7-29 21:19 | 显示全部楼层
谢谢分享!很少考虑到这种测试,拿来就用了。哈哈哈哈
shenxiaolin 发表于 2024-7-29 21:49 | 显示全部楼层
感谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

27

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部