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.

6678evm 运行K1_STK_v1 中 memory_test

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的地址,这么做是为了测试什么?

      

  • 请参考看一下K1_STK_v1.1\K1_STK_v1.1\docs\KeyStone_1_Memory_STK_User's_Guide部分的说明。
    Floating bus may “cheat” the test program. To avoid floating bus, a dummy write to another address with inverted value is inserted into original write and read operations.

    For example:

    write A to address X;
    write inversion of A to address Y;
    read value from address X;

    In this way, the floating bus is avoided.

  • 注释里写了avoid floating bus,具体请参考KeyStone_1_Memory_STK_User's_Guide的2.4 Floating bus problem
x 出现错误。请重试或与管理员联系。