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.

TMS320VC5510A: DieID not accessable in a standalone application

Part Number: TMS320VC5510A

Hi 

I can access the chip's DieID using CSL and debugger attached, see below:

D_IDH = CHIP_getDieId_High32();

D_IDL = CHIP_getDieId_Low32();

But when I run the application stand-alone I get garbage 0xFFFEFFFF; On other devices mostly 0xF values.

Can anybody help?

Thanks

  • Hi Maarten,

    TMS320VC5510A datasheet Table 3-20 gives some details about Die_ID register:

    www.ti.com/.../tms320vc5510a.pdf

    The Die_ID register contains factory identification information and does not require any intervention from the user. When the DIE_ID register is used, at least 3 TCK clocks after reset are required to properly initialize the register contents.

    I would like to note that the Die_ID register value is not unique for every single chip. Therefor you are not getting garbage but getting Die_ID register content correctly.

    Regards,
    Tsvetolin Shulev

  • Dear Tsvetolin

    When I use the Emulator I get a value of  0x83D70307 for the high part and 0x141743C3 for the low part. 

    But when I use run the stand alone application I get 0xFFFEFFFF for the high part and 0xFFFEFFFF for the low part.

    Thus completely diffirent outcomes accessing the same register.  I do wait many clock cycles after boot before reading this register. 

    Can you you help me resolve this. As I have studied www.ti.com/.../tms320vc5510a.pdf and many of the other datasheets but cannot find a resolution to this problem.

    Thanks

  • Dear Tsvetolin

    When I use the Emulator I get a value of  0x83D70307 for the high part and 0x141743C3 for the low part. 

    But when I use run the stand alone application I get 0xFFFEFFFF for the high part and 0xFFFEFFFF for the low part.

    Thus completely diffirent outcomes accessing the same register.  I do wait many clock cycles after boot before reading this register. 

    Can you you help me resolve this. As I have studied www.ti.com/.../tms320vc5510a.pdf and many of the other datasheets but cannot find a resolution to this problem.

    Thanks

  • Maarten,

    The last clarification is important for us. Now I understand the issue. We need some time for investigation,

    Regards,
    Tsvetolin Shulev

  • Hi Maarten,

    When you read the DIE ID with the debugger, how do you do it? Do you read it from the memory window or register view of CCS? Or do you use software loaded to the target to read the DIE ID?

    Obviously in your run-time application you are using software to read the DIE ID. Is this the same software that you use when reading the DIE ID with the debugger?

    My initial thoughts might be that you might be reading the register with an address pointed to DATA memory instead of IO memory. For more information, refer to 5.5.3 The ioport Keyword in TMS320C55x Optimizing C/C++ Compiler User's Guide (SPRU281)

    Hope this helps,
    Mark

  • Dear Mark 

    I access the Chip via the Host Port Interface from another MCU in both cases Debugger attached and Stand alone. When I attach the debugger and run "Release" code the ID get read from software and it looks fine. But when I run the chip in stand alone I get the garbage above. I use the functions as indicated earlier in both cases thus using the CSL to read the DIE_ID. This is where I get stuck and don't know how to progess further. 

    I have debugged the Host Port Interface properly and are 100% sure that is has nothing to do with the Host Port Interface. 

  • The following is in the csl_chip.h:

    #define CHIP_DIEIDL_ADDR (0x3800u)

    #define CHIP_DIEIDH_ADDR (0x3802u)

    #define CHIP_REVID_ADDR (0x3804u)

    #define CHIP_getDieId_Low32() ((Uint32) _PREG32_GET(CHIP_DIEIDL_ADDR))

    #define CHIP_getDieId_High32() ((Uint32) _PREG32_GET(CHIP_DIEIDH_ADDR))

    #define CHIP_getRevId() ((Uint16) _PREG_GET(CHIP_REVID_ADDR))

    Thus I ussume the _PREG_GET function/macro knows it must be IO space?

    Or I am I wrong?