基于dcsm_security_tool例程修改了DCSM密码,重新上电后,将板子Boot引导模式改为wait模式,Release下可以下载程序; 但是Debug情况下无法下载调试程序。
请问这是为什么?需要怎么操作?ps:仿真器可以连接到28388
错误显示为Load program Error
请问这个是为什么?
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.
基于dcsm_security_tool例程修改了DCSM密码,重新上电后,将板子Boot引导模式改为wait模式,Release下可以下载程序; 但是Debug情况下无法下载调试程序。
请问这是为什么?需要怎么操作?ps:仿真器可以连接到28388
错误显示为Load program Error
请问这个是为什么?
你好,是只对例程的密码进行了修改吗?具体如何修改的?
另外,板子改了密码之后有将程序烧写进flash吗?还是只是改完运行了一下程序?
报错的具体内容是什么
你好,我的问题主要是加入了DCSM模块,Release下载程序正常,但是无法在Debug模式下运行调试程序了;
1、把密码和boot pin都修改了,具体修改情况如下:
;----------------------------------------------------------------------
; Zone 1
;----------------------------------------------------------------------
.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 0xFB7FFFFF
.sect "dcsm_otp_z1_crclock"
.retain
.long 0x7FFFFFFF
.sect "dcsm_otp_z1_gpreg"
.retain
.long 0x5A666554 ;Z1OTP_GPREG1 = Z1_BOOTPIN
.long 0x5AFFFF1F ;Z1OTP_GPREG2
.long 0x0924C103 ;Z1OTP_GPREG3 = Z1OTP_BOOTDEF_LOW
.long 0x0A032605 ;Z1OTP_GPREG4 = Z1OTP_BOOTDEF_HIGH
.sect "dcsm_zsel_z1"
.retain
.long 0x11111111 ;Z1OTP_CSMPSWD0 (LSW of 128-bit password)
.long 0x4D7F2222 ;Z1OTP_CSMPSWD1
.long 0x33333333 ;Z1OTP_CSMPSWD2
.long 0x44444444 ;Z1OTP_CSMPSWD3 (MSW of 128-bit password)
.long 0x05555555 ;Z1OTP_GRABSECT1
.long 0x0AAAAAAA ;Z1OTP_GRABSECT2
.long 0x0AAAAAAA ;Z1OTP_GRABSECT3
.long 0x00055555 ;Z1OTP_GRABRAM1
.long 0x55555505 ;Z1OTP_GRABRAM2
.long 0x00055555 ;Z1OTP_GRABRAM3
.long 0x3FFF3FFF ;Z1OTP_EXEONLYSECT1
.long 0x00003FFF ;Z1OTP_EXEONLYSECT2
.long 0xFFC303FF ;Z1OTP_EXEONLYRAM1
.long 0xFFFFFFFF ;Reserved
.long 0xFFFFFFFF ;Z1OTP_JTAGPSWDL0
.long 0x2BFFFFFF ;Z1OTP_JTAGPSWDL1
;----------------------------------------------------------------------
; For code security operation,after development has completed, prior to
; production, all other zone select block locations should be programmed
; to 0x0000 for maximum security.
; If the first zone select block at offset 0x10 is used, the section
; "dcsm_rsvd_z1" can be used to program these locations to 0x0000.
; This code is commented out for development.
; .sect "dcsm_rsvd_z1"
; .loop (1e0h)
; .int 0x0000
; .endloop
;----------------------------------------------------------------------
; Zone 2
;----------------------------------------------------------------------
.sect "dcsm_otp_z2_linkpointer"
.retain
.long 0x00003FFF
.long 0x00003FFF
.long 0x00003FFF
.sect "dcsm_rsvd_z2"
.retain
.long 0xFFFFFFFF ;Reserved
.sect "dcsm_otp_z2_pswdlock"
.retain
.long 0x1F7FFFFF
.sect "dcsm_otp_z2_crclock"
.retain
.long 0x3FFFFFFF
;; .sect "dcsm_otp_z2_gpreg"
;; .retain
;; .long 0x5AFF4854 ;Z2OTP_GPREG1 = Z2_BOOTPIN
;; .long 0x5AFFFF3F ;Z2OTP_GPREG2
;; .long 0x00000000 ;Z2OTP_GPREG3 = Z2OTP_BOOTDEF_LOW
;; .long 0xFFFFFFFF ;Z2OTP_GPREG4 = Z2OTP_BOOTDEF_HIGH
.sect "dcsm_rsvd1_z2"
.retain
.long 0xFFFFFFFF ;Reserved
.long 0xFFFFFFFF ;Reserved
.sect "dcsm_zsel_z2"
.retain
.long 0xFFFFFFFF ;Z2OTP_CSMPSWD0 (LSW of 128-bit password)
.long 0x1F7FFFFF ;Z2OTP_CSMPSWD1
.long 0xFFFFFFFF ;Z2OTP_CSMPSWD2
.long 0xFFFFFFFF ;Z2OTP_CSMPSWD3 (MSW of 128-bit password)
.long 0x0AAAAAAA ;Z2OTP_GRABSECT1
.long 0x0AAAAAAA ;Z2OTP_GRABSECT2
.long 0x0AAAAAAA ;Z2OTP_GRABSECT3
.long 0x000AAAAA ;Z2OTP_GRABRAM1
.long 0xAAAAAA0A ;Z2OTP_GRABRAM2
.long 0x000AAAAA ;Z2OTP_GRABRAM3
.long 0x3FFF3FFF ;Z2OTP_EXEONLYSECT1
.long 0x00003FFF ;Z2OTP_EXEONLYSECT2
.long 0xFFC303FF ;Z2OTP_EXEONLYRAM1
.long 0xFFFFFFFF ;Reserved
.long 0xFFFFFFFF ;Reserved
.long 0xFFFFFFFF ;Reserved
;----------------------------------------------------------------------
; For code security operation,after development has completed, prior to
; production, all other zone select block locations should be programmed
; to 0x0000 for maximum security.
; If the first zone select block at offset 0x10 is used, the section
; "dcsm_rsvd_z2" can be used to program these locations to 0x0000.
; This code is commented out for development.
; .sect "dcsm_rsvd_z2"
; .loop (1e0h)
; .int 0x0000
; .endloop
;----------------------------------------------------------------------
; End of file
;----------------------------------------------------------------------
2、板子改了密码,将程序烧写进去了,查看OTP可以看到修改的DCSM数据
3、debug下报错的具体内容为:
28xx_CPU1: File Loader: Verification failed: Values at address 0x08000@Program do not match Please verify target memory and memory map.
C28xx_CPU1: GEL: File: E:\v10C2000code\xxxxxx\CPU1_RAM\xxxxxx_CPU1.out: a data verification error occurred, file load failed.
额,把OTP的boot pin也改了的话检查起程序来太麻烦了
需要注意的是,OTP只能修改一次,烧写进flash后就不能再更改了,你这是第一次修改OTP吗?
另外这个报错你可以参考这两个帖子的方案看看:
哦哦,这个是我第一次改OTP,我把CPU1的RAM和FLASH全部设置为了Secured by this Zone(Zone1)
然后我看了下Debug下报错的位置
28xx_CPU1: File Loader: Verification failed: Values at address 0x08000@Program do not match Please verify target memory and memory map.
C28xx_CPU1: GEL: File: E:\v10C2000code\xxxxxx\CPU1_RAM\xxxxxx_CPU1.out: a data verification error occurred, file load failed.
0x08000在Flash和Debug下对应的Map文件;
在debug下:0x08000对应的为 .text.1段 里面是我自己写的程序
在Flash下:0x08000对应的为 RamfuncsRunstart 请问和这个有关系吗?