通过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