打印

关于arm数据中止查找原因的。

[复制链接]
1665|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dalujia|  楼主 | 2009-10-18 16:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ARM, TE, BUG, UG, ui
本人的系统有一个spi总线的flash,为了查找数据中止的原因,我在数据中止处理上加入一下的函数:
DataAbort
  LDR  R0, =DataAbortDebug
  STR  R14 , [R0]
  BL     writeDebug
  B       DataAbort
其中DataAbortDebug 为全局变量 uint32 DataAbortDebug[1];

void writeDebug(void)
{
    static uint8 i =0;
    static uint8 Temp[5];

    if(i==99) return;
    i=99;
    SPIInit();
    Temp[0]= DataAbortDebug[0];
    Temp[1]= DataAbortDebug[0]>>8;
    Temp[2]=DataAbortDebug[0]>>16;
    Temp[3]=DataAbortDebug[0]>>24;
    Temp[4]='x';
    WriteToFlash(21,0,5,Temp);
    return;
}
我把r14的值写到flash中去,然后去读这个值,希望找到数据中止的地方。但是我试了一下,感觉写入的r14值不对。请大家看看我的想法可行不可行。我没有发现理论上有什么问题,但是测试上又不符。

相关帖子

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

本版积分规则

42

主题

145

帖子

1

粉丝