TMS320C6655: Issue with Cache_all(L2WB) Function in Our System

Part Number: TMS320C6655

Tool/software:

I'm experiencing an issue that only occurs in low-temperature(-40°C) conditions.

During the execution of the Cache_all function, the cacheReg variable remains set to 1, causing the while(*cacheReg) loop to run continuously. Could you provide any insights or solutions for this issue?

We found that even if we use a debugger to draw a function called roadsymbol and run, 
the *cacheReg value is still set to 1, so we cannot exit the while statement.
We are using a gel file, but we do not know where to modify it. need help

I Search 

===========================================================================

Void Cache_all(volatile UInt32 *cacheReg)
{
UInt mask;

/* disable interrupts */
mask = Hwi_disable();

/* wait for any previous cache operation to complete */
while (*L2WWC != 0) {
/* open a window for interrupts */
Hwi_restore(mask);

/* disable interrupts */
mask = Hwi_disable();
}

/* perform global write back of cache */
*cacheReg = 1;

/* restore interrupts */
Hwi_restore(mask);

/* wait until cache operation completes */
while (*cacheReg) {
;
}
}

  • GEL FILE SETTING INFORM

    Program.sectMap["sharedL2"] = "DDR3";  // <== Is this L2SRAM have to setting 
    Program.sectMap["systemHeap"] = "DDR3";
    Program.sectMap[".sysmem"] = "DDR3";
    Program.sectMap[".args"] = "DDR3";
    Program.sectMap[".cio"] = "DDR3";
    Program.sectMap[".far"] = "DDR3";
    Program.sectMap[".rodata"] = "DDR3";
    Program.sectMap[".neardata"] = "DDR3";
    Program.sectMap[".cppi"] = "DDR3";
    Program.sectMap[".init_array"] = "DDR3";
    Program.sectMap[".qmss"] = "DDR3";
    Program.sectMap[".cinit"] = "DDR3";
    Program.sectMap[".bss"] = "DDR3";
    Program.sectMap[".const"] = "DDR3";
    Program.sectMap[".text"] = "DDR3";
    Program.sectMap[".code"] = "DDR3";
    Program.sectMap[".switch"] = "DDR3";
    Program.sectMap[".data"] = "DDR3";
    Program.sectMap[".fardata"] = "DDR3";
    Program.sectMap[".args"] = "DDR3";
    Program.sectMap[".cio"] = "DDR3";
    Program.sectMap[".vecs"] = "DDR3";
    Program.sectMap["emacComm"] = "DDR3"
    Program.sectMap["platform_lib"] = "DDR3"
    Program.sectMap[".far:taskStackSection"] = "DDR3";
    Program.sectMap[".stack"] = "DDR3";
    Program.sectMap[".far:IMAGEDATA"] = {loadSegment: "DDR3", loadAlign: 8};
    Program.sectMap[".far:NDK_OBJMEM"] = {loadSegment: "DDR3", loadAlign: 8};
    Program.sectMap[".far:NDK_PACKETMEM"] = {loadSegment: "DDR3", loadAlign: 128};

    Program.sectMap["bitddr3"] = "DDR3";
    Program.sectMap["bitiram"] = "L2SRAM";

  • H J,

    Let me look at it and get back.

    Regards

    Shankari G

  • HJ,

    What is the temperature range up to which it works fine?

    --

    Is this GEL file provided by TI? or done by the customer?

    If you do not have the GEL file provided, I have uploaded here. 3718.evmc6657l.gel

    Please compare it with yours.

    --

    To modify the GEL file, you can follow this link.

    https://software-dl.ti.com/ccs/esd/documents/users_guide/ccs_debug-gel.html

    Regards

    Shankari G

  • The file name is like this: evmc6657l.gel (ti 제공 파일 입니다.)

    It seems to work at -30°C

    We are using this: TMS320C6655CZH
    I'm still debugging, but it stays in while(cachereg). Why is that?

    Void Cache_all(volatile UInt32 *cacheReg)
    {
        UInt mask;

        /* disable interrupts */
        mask = Hwi_disable();

        /* wait for any previous cache operation to complete */
        while (*L2WWC != 0) {
            /* open a window for interrupts */
            Hwi_restore(mask);

            /* disable interrupts */
            mask = Hwi_disable();
        }

        /* perform global write back of cache */
        *cacheReg = 1;

        /* restore interrupts */
        Hwi_restore(mask);

        /* wait until cache operation completes */
        while (*cacheReg) {
            ;
        }
    }
  • HJ,

    If you have C6657 TI EVM, please do the same test and check whether results are same.... ?

    Compare your gel file with the one I updated above.

    Let me know if there is any difference.

    Regards

    Shankari G

  • I'll check your gel file....

    I changed the register below and confirmed that it works.
    I'm worried. Are you okay? Can you reply?

    /* New value with DYN_ODT disabled and SDRAM_DRIVE = RZQ/7 //0x63222A32; // last config write DRAM init occurs */
    /* DDR_SDCFG = 0x63026AB2; */
    TEMP = 0;
    TEMP |= 0x3 << 29; // SDRAM_TYPE bit field 31:29 (fixed value)
    TEMP |= 0x0 << 27; // IBANK_POS bit field 28:27
    TEMP |= 0x4 << 24; // DDR_TERM bit field 26:24
    TEMP |= 0x2 << 21; // DYN_ODT bit field 22:21
    TEMP |= 0x1 << 18; // SDRAM_DRIVE bit field 19:18
    TEMP |= 0x2 << 16; // CWL bit field 17:16
    TEMP |= 0x1 << 14; // NM bit field 15:14
    TEMP |= 0xB << 10; // CL bit field 13:10
    TEMP |= 0x5 << 7; // ROWSIZE bit field 9:7
    TEMP |= 0x3 << 4; // IBANK bit field 6:4
    TEMP |= 0x0 << 3; // EBANK bit field 3:3
    TEMP |= 0x2; // PAGESIZE bit field 2:0
    DDR_SDCFG = TEMP;

  • HJ,

    Have you done the same cache test at (-40°C) on TI C6657 EVM? Does it work or fail?

    --

    According to the datasheet, C6655 should work with the temp below...

    Commercial Temperature: – 0°C to 85°C

    Extended Temperature: – –40°C to 100°C

    Regards

    Shankari G

  • Problem verification has been completed.
    It's a DSP problem and the difference is that one is marked YB10-32ZDHW9 and the other is marked YB10-38ZCQT9. Both are of the Extended Temperature (A) type. Is this a problem with the individual products? Otherwise, you may need to check if it is a product LOT issue. Can I know the LOT number information?
     
  • HJ,

    Whatever may be the LOT number, as per the C665x datasheet, it should support the extended temperature range -  –40°C to 100°C

    Do you have C6657 Ti EVM with you? 

    Have you done the same cache test at (-40°C) on TI C6657 EVM? Does it work or fail?

    --

    PLEASE ANSWER MY QUESTIONS TO HELP YOU BETTER.

    Regards

    Shankari G

  • There seems to be no problem with the EVM and other boards as well, 
    but only the board with the 'YB10-38ZCQT9' mark is experiencing problems.
  • HJ,

    OK.

    I have another suggestion.

    1. In the same board, try removing " YB10-38ZCQT9" and replace the device-YB10-32ZDHW9.

    2. In the board with YB10-32ZDHW9, replace YB10-38ZCQT9 and observe the behavior.

    This test will confirm whether it is a board issue or the device issue.

    ---

    Meanwhile, 

    Let me forward to our hardware expert.

    Thanks for your patience.

    Regards

    Shankari G

  • Hello HJ,

    Can you summarize ... how many systems have you built/tested that are passing and how many are failing?

    Thanks,

    Kyle

  • I am currently trying to test by changing tms320c6655. Currently there is only one problem.
  • HJ,

    These conversations may not help either of us in solving the problem.

    Insufficient data may not lead both of us anywhere.

    Please answer Kyle query in previous post.

    Regards

    Shankari G