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 请问和这个有关系吗?