This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
团队、
在一个基于 DM8148的客户设计中、DDR 测试会停止一些时间。 (在运行 Linux 时、我们偶尔会看到随机崩溃)。 发生这种情况时,我们甚至无法连接到 JTAG 并调试... 以下是在 CCS 控制台上看到的错误:
CortexA8:GEL 输出:数据写入地址:0xC063153C
CortexA8:GEL 输出:数据写入地址:0xC0631540
CortexA8:写入长度0x4第0页上的0xc0631544处的内存块时出现问题:错误0x80002002/-1204在内存、控制、 DAP 访问地址0x00000080期间出现致命错误。 DAP 传输中止。
无法评估 DDR_DataTransferCheck()。
写入0xC0631544时发生内部错误
at *(((unsigned int *) 0xC0600200+I)=temp_reg_wr [Mercury Ti814x_ddr3.gel:700]
在 DDR_DataTransferCheck()
CortexA8:警告:错误0x60020020/-1267错误:执行、内部、 由于应用程序启用的 OS_LOCK、无法获得目标状态。
CortexA8:20次尝试后无法确定目标状态
CortexA8:在断开连接之前未能从目标中删除调试状态。 程序存储器中仍可能嵌入了断点运算代码。 建议您在连接之前重置仿真器、并在继续调试之前重新加载程序
下面是所执行的测试:
热菜单 DDR_DataTransferCheck()
{
unsigned int temp_reg_rd = 0;
unsigned int temp_reg_wr = 0xA5A5A5A5;
unsigned int i=0;
unsigned int error=0;
GEL_TextOut ("尝试访问 DDR 存储器...写入数据\n");
对于(i=0 <NO_LOOP_CNT; i++)
{
*(((UWORD32 *) DDR_START_ADDR +(I))= temp_reg_wr;
//GEL_TextOut ("写入的数据为:%x \n"、、、、 (unsigned int *) i);
GEL_TextOut ("数据写入地址:%x \n"、、、、 (unsigned int *) DDR_START_ADDR +(i));
}
对于(i=0 <NO_LOOP_CNT; i++)
{
temp_reg_rd = *(((UWORD32 *) DDR_START_ADDR +(I));
// GEL_TextOut ("数据读取为:%x \n"、、、、 (unsigned int *) temp_reg_rd);
if (temp_reg_rd!= 0xA5A5A5A5)
{
//GEL_TextOut ("数据检查在:%x \n"、、、、 (unsigned int *) DDR_START_ADDR +(i));
错误++;
}
其他
{
//GEL_TextOut ("数据检查在 :%x \n"、、、、 (unsigned int *) DDR_START_ADDR +(i));
}
GEL_TextOut ("故障位置数 为:%x \n"、、、、、 (unsigned int *)错误);
}
if (错误!= 0)
{
GEL_TextOut ("数据完整性检查失败");
}
否则{
GEL_TextOut ("通过数据完整性检查\n");
}
}
这种行为的原因可能是什么? 请提供一些指导吗?
此致、
四
正在附加崩溃日志...