TI中文支持网
TI专业的中文技术问题搜集分享网站

读写DDR问题

配置DDR2/mDDR Memory Controller读写DDR,出现一个奇怪的问题。通过Memory Browser监视,往DDR中写入数据没有问题,但在读取数据时,勾选L1D Cache和不勾选L1D Cache时,显示的数据不同。

读写DDR数据的代码如下:

unsigned int i;
unsigned long t1, t2;
Src_StartAdd = (unsigned int *) 0xc0010000;

TSCL = 0;
t1 = TSCL;
/* Write data in the chip. */
for (i = 0; i < 0x8000; i++) {
*(Src_StartAdd++) = i;
}

t2 = TSCL;
printf("# cycles == %d\n", (t2 – t1));

Src_StartAdd = (unsigned int *) 0xc0010000;

/* Read data from Dst_StartAdd. */
for (i = 0; i < 0x8000; i++) {
TempData = *(Src_StartAdd++);
if (TempData != i) {
printf("\nAddress 0x%x is error!", i);
}
}

想请教一下,大致是哪方面的问题?跟哪些部分有关?

noaming:

你好,请使用DDR读程序,读已经写入的数据,先检验写入的数据是否正确。

Leon Teung:

回复 noaming:

您好,我不明白您的意思。在读已经写入的数据之前,如何检验写入的数据是否正确?写入的数据不读出来作比较,如何检验其正确与否?

noaming:

回复 Leon Teung:

您好,就是不使用CCS的Memory Browser监视来看内存的数据,而是用读内存程序,读出数据,看是否和写入的数据是一致的,来检验。

Leon Teung:

回复 noaming:

您好,问题中所附的代码就是先向内存写入数据,然后再读出数据,与写入的数据相比较。正因为读出和写入的数据不一致,所以我才通过Memory Browser发现,勾选L1D Cache与否,Memory Browser中的值是不同的,而从内存中读回来的值与勾选L1D Cache时Memory Browser中显示的值相同。我猜想可能与缓存有关,但程序中没有对缓存的操作。我的意思就是想请教——DDR读回来的值和写入的值不一致,大概是什么原因?我自己花了很长时间,没找出原因。

noaming:

回复 Leon Teung:

您好,L1的缓存一般是不能操作的,L2的缓存用户可以配置。你用的哪款DSP?

Leon Teung:

回复 noaming:

TMS320C6748

noaming:

回复 Leon Teung:

我查到在

\c6748_sdk\pdk_C6748_2_0_0_0\biospsp_03_00_01_00\cslr\evm6748\examples\mddr\src

下面是DDR的一个测试例程,你试一下这个官方的例程

赞(0)
未经允许不得转载:TI中文支持网 » 读写DDR问题
分享到: 更多 (0)