本人的系统有一个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值不对。请大家看看我的想法可行不可行。我没有发现理论上有什么问题,但是测试上又不符。 |