您的位置:控制工程论坛网论坛 » 电机与运动控制 » DSP读写RAM出现的疑难杂症,寻求支持

jiewinds

jiewinds   |   当前状态:离线

总积分:200  2024年可用积分:0

注册时间: 2003-05-12

最后登录时间: 2007-01-25

空间 发短消息加为好友

DSP读写RAM出现的疑难杂症,寻求支持

jiewinds  发表于 2004/12/14 12:24:59      2804 查看 0 回复  [上一主题]  [下一主题]

手机阅读

此问题已经耗掉我若干天时间,进行了大量测试和分析仍无结果,无奈 之下,向大家求助。若能解决该问题,不尽感激。 硬件配置: ============== TMS320VC5402,128KSRAM,DSP的PS信号接到SRAM的A16,这样SRAM的低 64K为程序空间,高64K为数据空间。主频100MHz 测试目的: ============== 校验RAM读写的正确性和可靠性。 测试方法: ============== 使用简单的C循环语句,对RAM的所有单元进行循环读写测试 测试代码: ============== void TestPage() { unsigned int i; unsigned int *p=(unsigned int *)0x4000; for(i=0;i<0xc000;i++) p[i]=i; for(i=0;i<0xc000;i++) { if(p[i]!=i) printf("Error!"); } } 症状描述: ============= 如果上述代码放在片内运行,则完全正确,而当代码在片外SRAM中运行 时,每次测试总有几个(也仅有几个)单元数据不对,即出现写入错误。 经统计观察发现这些错误全部发生在数据的第13位(16位总线),其它 bit均正确。 初步分析: ============= 首先可以确定不是硬件问题,因为测试代码在片内运行时完 全正确,由此同样可以排除是数据空间等待周期的问题。由于其它大部 分代码均能在片外正常运行,所以也不会是程序空间等待周期的问题。 此外,经测试,Memory Bank切换中的PS-DS设置为1仍然不能解决问题。 将上述代码使用汇编编写,症状没有发生变化,因此不会是流水线冲突。 更奇怪的是,如果测试代码是下面这样,则测试完全正确: void TestPage() { unsigned int i,j; unsigned int *p=(unsigned int *)0x4000; for(j=0;j<65536;j++) { for(i=0;i<0xc000;i++) p[i]=j; for(i=0;i<0xc000;i++) { if(p[i]!=j) printf("Error!"); } } } 结论: =========== 对RAM的C000H个单元进行循环测试,当测试代码在片外时,每次均有 不超过10个单元发生写入错误,且错误均出现在写入数据的第13bit位。 现向大家请教,出现此问题的可能原因及应该如何进行更深入的测试。
1楼 0 0 回复