查看: 2811|回复: 2

[其他] 在测试ram时候程序跑飞了,代码如下

[复制链接]

该用户从未签到

3

主题

11

帖子

0

新手上路

Rank: 1

积分
35
最后登录
1970-1-1
发表于 2012-4-10 09:17:57 | 显示全部楼层 |阅读模式
 
RamTst_TestResultType RamTst_Device_Test(volatile uint32 * baseaddress, uint32 nbytes) 
{
    uint32 offset;
    uint32 nWords;      
    uint32 pattern;
    uint32 antipattern;
 RamTst_Algorithm=RAMTST_DEVICE_TEST;
      nWords = nbytes / sizeof(uint32);  
     // Fill memory with a known pattern.
    for (pattern = 1, offset = 0; offset < nWords; pattern++, offset++)
    {
     //   baseaddress[offset] = pattern;
    }
  
     // Check each location and invert it for the second pass.
   
    for (pattern = 1, offset = 0; offset < nWords; pattern++, offset++)
   {
       // if (baseaddress[offset] != pattern)
     //{
     //     return RAMTST_RESULT_NOT_OK; //((uint32 *) &baseaddress[offset]);
    //   }
        antipattern = ~pattern;
        baseaddress[offset] = antipattern;
    }
 
   // Check each location for the inverted pattern and zero it.
 
  for (pattern= 1, offset = 0; offset < nWords; pattern++, offset++)
    {
   antipattern = ~pattern;
      //if (baseaddress[offset] != antipattern)
      //  {
   
      //     return RAMTST_RESULT_NOT_OK;  //((uint32 *) &baseaddress[offset]);
       // }
  }
    return RAMTST_RESULT_OK;
}    
内容 都注释掉了 三个空函数都飞,帮忙分析下,参数是ram的起始地址和大小,
我知道答案 目前已有1人回答
回复

使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2012-4-10 10:46:01 | 显示全部楼层

    RE:在测试ram时候程序跑飞了,代码如下

    你能不能仿真一下,到底在什么地方跑飞的?你在程序中只跑了这一段代码吗?
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3

    主题

    11

    帖子

    0

    新手上路

    Rank: 1

    积分
    35
    最后登录
    1970-1-1
     楼主| 发表于 2012-4-10 18:28:06 | 显示全部楼层

    回复:在测试ram时候程序跑飞了,代码如下

    回复第 2 楼 于2012-04-10 10:46:01发表:
    你能不能仿真一下,到底在什么地方跑飞的?你在程序中只跑了这一段代码吗? 

    单步时候三个空函数不飞,连续起来就飞了。把这个 函数注释掉,其他代码正常的。
    函数内容打开时候,通过断点,发现第一个for循环通过,第二个for循环在读写入的值得时候就飞了。
    有个问题:往ram中全部填入pattern,是不是影响到堆栈了?但是第一个for循环写入是可以通过的,在第二个for中读出来对比的时候飞掉了。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-28 07:58 , Processed in 0.085920 second(s), 22 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表