[技术问答] N76E0003 RAM校验

[复制链接]
 楼主| Zuocidian 发表于 2025-2-22 22:03 | 显示全部楼层 |阅读模式
RAM, 6E, TE, 128, MCU
MCU 的安全性校验


MCU的安全性校验是非常重要的一步,下面介绍一下N76E003这个芯片的RAM校验:
1、n76e003这个芯片的RAM分片上RAM及片外RAM.
1.1 片上ram的起始地址是0x0000,片外RAM也是0x0000,片内RAM的大小是256 byte, 低128 byte是直接寻址,高128byte是间接寻址, 片外RAM通过MOVX指令操作。
1.2 片内RAM的前面32byte是用作寄存器组,<absacc.h>头文件提供了DBYTE[],操作指针,具体如下:
for( i=32; i<256; i++)
{
DBYTE[0X0000+i] =0xFF;
if(DBYTE[0X0000+i] !=0xFF)
{
//RAM Error
}
DBYTE[0X0000+i] =0x00;
if(DBYTE[0X0000+i] !=0x00)
{
//RAM Error
}
}
通过这段代码可以检查片上RAM故障情况;
1.3 片外RAM,通过XBYTE[],具体如下:
for(i=0; i<768; i++)
{
XBYTE[0X0000+i] =0xFF;
if(XBYTE[0X0000+i] !=0xFF)
{
//XRAM Error
}
XBYTE[0X0000+i] =0x00;
if(XBYTE[0X0000+i] !=0x00)
{
//XRAM Error
}
}
通过这段代码可以检测片外RAM的故障情况;
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/weixin_54997802/article/details/128488116

xinpian101 发表于 2025-2-23 15:49 | 显示全部楼层
  1. for (i = 32; i < 256; i++) {
  2.     DBYTE[0x0000 + i] = 0xFF;  // 将当前地址写入0xFF
  3.     if (DBYTE[0x0000 + i] != 0xFF) {  // 读取并校验是否为0xFF
  4.         // RAM Error
  5.     }
  6.     DBYTE[0x0000 + i] = 0x00;  // 将当前地址写入0x00
  7.     if (DBYTE[0x0000 + i] != 0x00) {  // 读取并校验是否为0x00
  8.         // RAM Error
  9.     }
  10. }
a_ziliu 发表于 2025-2-25 14:35 | 显示全部楼层
可以用marchc, march x算法
您需要登录后才可以回帖 登录 | 注册

本版积分规则

72

主题

215

帖子

0

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