TI的工程师你们好!在 memory_test中的KeyStone_memory_bus_test()函数中调用Memory_Data_Bus_Test()函数其下的伪代码如下所示:
volatile unsigned long long *ulpAddressPointer;
uiBusWidth_64bit= (uiBusWidth+63)/64;
for(j=0; j<uiBusWidth_64bit; j++)
{
//write a pattern
*ulpAddressPointer = ulDataPattern[i];
ulpAddressPointer[uiBusWidth_64bit]= ~ulDataPattern[i]; //avoid floating bus
ulReadBack= *ulpAddressPointer;
if (ulReadBack != ulDataPattern[i])
{
printf(" Data pattern Test fails at 0x%8x, Write 0x%016llx, Readback 0x%016llx\n", (unsigned int)ulpAddressPointer, (ulDataPattern[i]), ulReadBack);
Memory_error_double_check((volatile unsigned long long *)ulpAddressPointer);
uiFailCount++;
}
其中uiBusWidth_64bit = 256*4,*ulpAddressPointer指向的地址是L2或者SMC。uiBusWidth_64bit是根据数据总线的宽度计算的吗?,*ulpAddressPointer = ulDataPattern[i];和 ulpAddressPointer[uiBusWidth_64bit]= ~ulDataPattern[i];中读写测试为什么要相隔uiBusWidth_64bit的地址,这么做是为了测试什么?