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.

TMS320F2800157: 如何修改DCSM的CSMPSWD密码

Part Number: TMS320F2800157


通过dcsm.cmd和dcsm.asm代码来添加CSM Passwords,现在输入正确的Z1-CSMPSW能够成功解密和烧录程序。想知道如何修改Z1-CSMPSW,用旧密码解密,直接修改asm文件的密码(Z1-CSMPSW0/1/2/3)并烧录新的程序会报

C28xx_CPU1: Performing Security Operation...
C28xx_CPU1: Calculated Link Pointer Offset: 0x20
C28xx_CPU1: Unlocking device...
C28xx_CPU1: Lock status: 0
C28xx_CPU1: Operation completed successfully.
C28xx_CPU1: GEL Output: ... DCSM Initialization Start ...
C28xx_CPU1: GEL Output: ... DCSM Initialization Done ...
C28xx_CPU1: GEL Output: ... DCSM Initialization Start ...
C28xx_CPU1: GEL Output: ... DCSM Initialization Done ...
C28xx_CPU1: Error during Flash Programming. Address 0x00078020, FMSTAT (STATCMD on some devices) 0x00000101
C28xx_CPU1: File Loader: Memory write failed: Unknown error
C28xx_CPU1: GEL: File: E:\WorkSpace\MT20-PLUS\MT20-PLUS\src\Debug\MT20-PLUS.out: Load failed.

dcsm.cmd代码如下

MEMORY
{
PAGE 0 :  /* Program Memory */

   /* Z1 OTP.  Z1 password locations / Flash and RAM partitioning */
   DCSM_OTP_Z1_LINKPOINTER     : origin = 0x78000, length = 0x00006
   DCSM_OTP_Z1_JLM_ENABLE      : origin = 0x78006, length = 0x00002
   DCSM_OTP_Z1_GPREG           : origin = 0x78008, length = 0x00008
   DCSM_OTP_Z1_PSWDLOCK        : origin = 0x78010, length = 0x00002
   DCSM_OTP_Z1_CRCLOCK         : origin = 0x78012, length = 0x00002
   DCSM_OTP_Z1_JTAG_PSWDH      : origin = 0x78014, length = 0x00004
   DCSM_OTP_Z1_CMAC_KEY        : origin = 0x78018, length = 0x00008

   /* DCSM Z1 Zone Select Contents (!!Movable!!) */
   DCSM_ZSEL_Z1_P0             : origin = 0x78020, length = 0x000020

   /* Z2 OTP.  Z2 password locations / Flash and RAM partitioning */
   DCSM_OTP_Z2_LINKPOINTER     : origin = 0x78200, length = 0x00006
   DCSM_OTP_Z2_RSVD            : origin = 0x78206, length = 0x00002
   DCSM_OTP_Z2_GPREG           : origin = 0x78208, length = 0x00008
   DCSM_OTP_Z2_PSWDLOCK        : origin = 0x78210, length = 0x00002
   DCSM_OTP_Z2_CRCLOCK         : origin = 0x78212, length = 0x00002
   DCSM_OTP_Z2_RSVD1           : origin = 0x78214, length = 0x0000C
   
   /* DCSM Z2 Zone Select Contents (!!Movable!!) */
   DCSM_ZSEL_Z2_P0             : origin = 0x78220, length = 0x000020

}

SECTIONS
{
   dcsm_otp_z1_linkpointer 	: > DCSM_OTP_Z1_LINKPOINTER		PAGE = 0
   dcsm_otp_z1_gpreg        : > DCSM_OTP_Z1_GPREG		    PAGE = 0, type = DSECT
   dcsm_otp_z1_pswdlock		: > DCSM_OTP_Z1_PSWDLOCK		PAGE = 0
   dcsm_otp_z1_crclock		: > DCSM_OTP_Z1_CRCLOCK			PAGE = 0
   dcsm_otp_z1_jlm_enable   : > DCSM_OTP_Z1_JLM_ENABLE,     PAGE = 0
   dcsm_otp_z1_jtag_pswdh   : > DCSM_OTP_Z1_JTAG_PSWDH,     PAGE = 0, type = DSECT
   dcsm_otp_z1_cmac_key     : > DCSM_OTP_Z1_CMAC_KEY,       PAGE = 0, type = DSECT
   dcsm_zsel_z1				: > DCSM_ZSEL_Z1_P0				PAGE = 0

   dcsm_otp_z2_linkpointer	: > DCSM_OTP_Z2_LINKPOINTER		PAGE = 0, type = DSECT
   dcsm_otp_z2_gpreg        : > DCSM_OTP_Z2_GPREG		    PAGE = 0, type = DSECT
   dcsm_otp_z2_pswdlock		: > DCSM_OTP_Z2_PSWDLOCK		PAGE = 0, type = DSECT
   dcsm_otp_z2_crclock		: > DCSM_OTP_Z2_CRCLOCK			PAGE = 0, type = DSECT
   dcsm_rsvd_z2             : > DCSM_OTP_Z2_RSVD,           PAGE = 0, type = DSECT
   dcsm_rsvd1_z2            : > DCSM_OTP_Z2_RSVD1,          PAGE = 0, type = DSECT
   dcsm_zsel_z2				: > DCSM_ZSEL_Z2_P0				PAGE = 0, type = DSECT
}

csm.asm代码如下

      .sect "dcsm_otp_z1_linkpointer"
      .retain
      .long 0x00003FFF
      .long 0x00003FFF
      .long 0x00003FFF
    
     .sect "dcsm_otp_z1_jlm_enable"
      .retain
      .long 0xFFFF000F     ;Z1OTP_JLM_ENABLE
;;     .sect "dcsm_otp_z1_jtag_pswdh"
;;      .retain
;;      .long 0x4BFFFFFF     ;Z1OTP_JTAGPSWDH0
;;      .long 0x3FFFFFFF     ;Z1OTP_JTAGPSWDH1
;;
;;     .sect "dcsm_otp_z1_cmac_key"
;;      .retain
;;      .long 0x00000000     ;Z1OTP_CMACKEY0
;;      .long 0x00000000     ;Z1OTP_CMACKEY1
;;      .long 0x00000000     ;Z1OTP_CMACKEY2
;;      .long 0x00000000     ;Z1OTP_CMACKEY3
;;  
     .sect "dcsm_otp_z1_pswdlock"
      .retain
      .long 0xFB7FFFF0
      
     .sect "dcsm_otp_z1_crclock"
      .retain
      .long 0x7FFFFFFF
   
;;     .sect "dcsm_otp_z1_gpreg"
;;      .retain
;;      .long 0x5AFF1820     ;Z1OTP_GPREG1 = Z1_BOOTPIN
;;      .long 0x5AFFFFff     ;Z1OTP_GPREG2
;;      .long 0x00000000     ;Z1OTP_GPREG3 = Z1OTP_BOOTDEF_LOW
;;      .long 0xFFFFFFFF     ;Z1OTP_GPREG4 = Z1OTP_BOOTDEF_HIGH
     .sect "dcsm_zsel_z1"
      .retain
      .long 0x12FFFFFF     ;Z1OTP_CSMPSWD0 (LSW of 128-bit password)
      .long 0x4D7FFFFF     ;Z1OTP_CSMPSWD1
      .long 0xFFFFFFFF     ;Z1OTP_CSMPSWD2
      .long 0xFFFFFFFF     ;Z1OTP_CSMPSWD3 (MSW of 128-bit password)
 
      .long 0xAAAAAAAA     ;Z1OTP_GRABSECT1
      .long 0xAAAAAAAA     ;Z1OTP_GRABSECT2
      .long 0xAAAAAA00     ;Z1OTP_GRABSECT3
      .long 0x0000AAAA     ;Z1OTP_GRABRAM1
      .long 0xFFFFFFFF     ;Reserved
      .long 0xFFFFFFFF     ;Reserved
 
      .long 0xFFFFFFFF     ;Z1OTP_EXEONLYSECT1
      .long 0x0000FFF0     ;Z1OTP_EXEONLYSECT2
      .long 0x000000FF     ;Z1OTP_EXEONLYRAM1
      .long 0xFFFFFFFF     ;Reserved
      .long 0xFFFFFFFF     ;Z1OTP_JTAGPSWDL0
      .long 0x2BFFFFFF     ;Z1OTP_JTAGPSWDL1