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.

TMS320F28377D: TMS320F28377D DCSM PSWDLOCK

Part Number: TMS320F28377D
Other Parts Discussed in Thread: C2000WARE

Dear  All

I cann't use JTAG access the device forever If I modify Z1OTP_PSWDLOCK  any value other than “1111” it correct?

  • Hi, PSWDLOCK only impacts the visibility of the password value from debugger or code. It should not impact the code execution. Please check if you are reading the password in your code and unlocking the device using that value.

    Regards,
    Vivek Singh
  • Hi Vivek

    Thanks for you cleaning,pls help tell me put it where can correct unlock secuity device for below CSM unlock code?

    volatile long int *CSM = (volatile long int *)0x5F010; //CSM register file
    volatile long int *CSMPWL = (volatile long int *)0x78028; //CSM Password location (assuming
    default Zone sel block)
    volatile int tmp;
    int I;
    // Read the 128-bits of the CSM password locations (PWL)
    //
    for (I=0;I<4; I++) tmp = *CSMPWL++;
    // If the password locations (CSMPWL) are all = ones (0xFFFF),
    // then the zone will now be unsecure. If the password
    // is not all ones (0xFFFF), then the code below is required
    // to unsecure the CSM.
    // Write the 128-bit password to the CSMKEY registers
    // If this password matches that stored in the
    // CSLPWL then the CSM will become unsecure. If it does not
    // match, then the zone will remain secure.
    // An example password of:
    // 0x11112222333344445555666677778888 is used.
    *CSM++ = 0x22221111; // Register Z1_CSMKEY0 at 0x5F010
    *CSM++ = 0x44443333; // Register Z1_CSMKEY1 at 0x5F012
    *CSM++ = 0x66665555; // Register Z1_CSMKEY2 at 0x5F014
    *CSM++ = 0x88887777; // Register Z1_CSMKEY3 at 0x5F016
  • hi ,

    If you are referring to how to write the Password match flow .
    Then , first dummy read the Password and then write the key .
    eg.
    temp = *(unsigned long *)(Z1_ZSB + 0x0); // CSMPSWD0
    XAR0 = *(unsigned long *)(Z1_ZSB + 0x2); // CSMPSWD1
    XAR0 = *(unsigned long *)(Z1_ZSB + 0x4); // CSMPSWD2
    XAR0 = *(unsigned long *)(Z1_ZSB + 0x6); // CSMPSWD3

    // Check if unsecure (z1)
    if(((*(unsigned long *)(0x5F018)) & 0x200000) == 0)
    {
    *(unsigned long *)0x0005F010 = 0xFFFFFFFF; // LOAD CSMKEY0
    *(unsigned long *)0x0005F012 = 0x4d7fffff; // LOAD CSMKEY1
    *(unsigned long *)0x0005F014 = 0xFFFFFFFF; // LOAD CSMKEY2
    *(unsigned long *)0x0005F016 = 0xFFFFFFFF; // LOAD CSMKEY3
    }

    Or simply use the DCSM_unlockZone1CSM(key) API like provided in c2000ware .
    c2000ware\driverlib\f2837xd\driverlib\dcsm.c

    Regards.