Part Number:TMS320C6678
使用的是STK例程,在初始化之后,get_dsp_number函数前加入下面四行程序进行测试。
memset((void*)0x80000000,0,0×10000000);
memset((void*)0x90000000,0xA5,0x10000000);
*((int *)0xc0000000)=0xAAAA5555;
*((int *)0x80000000)=0x5555AAAA;
使用如上代码对DDR空间进行写数
执行完memset((void*)0x80000000,0,0×10000000)后,0x80000000 0xa0000000 0xc0000000 0xe0000000空间上均被写0
执行完memset((void*)0x90000000,0xA5,0x10000000)后,0x90000000 0xb0000000 0xe0000000 0xf0000000空间上均被写0xA5
但是对0xc0000000上写入0xAAAA5555发现在DDR空间上仅该地址写入该值,而对0x80000000写入0x5555AAAA也同样只有0x80000000地址上写入0x5555AAAA
结论 对DDR空间进行连续写操作会改变其他DDR空间上的值 请问为什么会出现这种情况?
Zahir Wang:
随后又使用hyperlink的stk例程进行测试,发现无论是memcpy还是edma测试均出现这样的现象即在0x88300000 0xa83000000 0xc8300000 0xe8300000空间上看到同样的数据0x48300000
,
Nancy Wang:
请问是在哪个例程上添加的,添加在哪个地方?请详细再说明一下。
,
Zahir Wang:
Hyperlink例程
,
Zahir Wang:
Zahir Wang 说:随后又使用hyperlink的stk例程进行测试,发现无论是memcpy还是edma测试均出现这样的现象即在0x88300000 0xa83000000 0xc8300000 0xe8300000空间上看到同样的数据0x48300000
随后我跑了hyperlink例程 发现了上面所述的情况
,
Nancy Wang:
memory test例程测试过吗?是否有问题?
,
Zahir Wang:
memory test测试过 同样的问题 往0x80000000空间写数据 在0xa0000000 0xc0000000 0xe0000000 空间上均可以看到被写入同样的数据
,
Zahir Wang:
您好 请问上边这个问题你清楚怎么解决吗?
,
Nancy Wang:
抱歉回复晚了,暂时不清楚什么原因导致的,memory test例程您也是在修改之后测试的吗?如果是的话,请贴出具体修改的部分,我需要在开发板上测试看看。
,
Zahir Wang:
memory test没有修改过
难道是因为TMDXEVM6678LE只外挂了512M的ddr 所以导致在ccs memory上查看的时候会出现以512M为间隔的数据重复?
,
Nancy Wang:
该板子上不是只外挂了512M.
The TMS20C6678 DDR3 interface connects to four 2Gbit (128Mega x 16) DDR3 1333 devices on Rev 3.0 EVM and 1Gbit (64Mega X 16) DDR3 devices on all EVMs through Rev 2.0A.
我测试下来是0x80000000和0xc0000000会重复。
我转给其它工程师看一下。
,
Zahir Wang:
我这边的板子型号是TMDXEVM6678LE REV1.0
DDR外挂的好像就是512M
,
Tony Tang:
Zahir Wang 说:难道是因为TMDXEVM6678LE只外挂了512M的ddr 所以导致在ccs memory上查看的时候会出现以512M为间隔的数据重复
如果你的板子上是512MByte DDR,那么显示或者访问就会如你说的以512MBtyte为间隔进行重复。
因为这时比512MByte大的高位地址的译码结果只是用来参生CS有效信号,并不是用来寻址地址单无的。所以就如你看到的0x80000000空间写数据 在0xa0000000 0xc0000000 0xe0000000看到的是一样的。本身它们在物理上也是同一个物理地址。
如果没理解,再细想一下,高位地址的译码过程及作用。