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.
我使用的是F28027F芯片,首先将文件CSMPasswords.asm加进工程,然后修改enableCSM .set 1,使能加密,然后在工程里预定义宏CSM_ENABLE,编译后提示*econst_end、*econst_start、*switch_end和*switch_start这些符号没有定义。然后我修改F28027F.cmd,从RAM的M0-M1里的0x500地址开始划分0x100大小空间到PAGE0,命名P_RAMM0_M1,接着设置.econst和.switch的拷贝加载地址:
.econst : LOAD = D_FLASHA,
RUN = P_RAMM0_M1,
LOAD_START(_econst_start),
LOAD_END(_econst_end),
RUN_START(_econst_ram_load),
PAGE = 0
.switch : LOAD = D_FLASHA,
RUN = P_RAMM0_M1,
LOAD_START(_switch_start),
LOAD_END(_switch_end),
RUN_START(_switch_ram_load),
PAGE = 0
程序编译通过,使用XDS100v2仿真器烧到芯片后,通过仿真器在线调试,能正常运行,中断服务函数里的闪灯正常闪烁。但问题是,将仿真器脱开后重新上电,程序感觉死掉了,灯也不闪烁。我再次将enableCSM .set 0,去除加密功能后烧进Flash,这时仿真器脱开也能正常运行。
我想请问下这是什么原因?另外,TI的FOC例程有没有测试过加密功能是否能用?我谨慎怀疑源程序存在Bug
谢谢大家!
你好,是例程里自带的CSMPasswords.asm文件
;// TI File $Revision: /main/1 $
;// Checkin $Date: August 14, 2008 16:58:11 $
;//###########################################################################
;//
;// FILE: DSP2802x_CSMPasswords.asm
;//
;// TITLE: DSP2802x Code Security Module Passwords.
;//
;// DESCRIPTION:
;//
;// This file is used to specify password values to
;// program into the CSM password locations in Flash
;// at 0x3F7FF8 - 0x3F7FFF.
;//
;// In addition, the reserved locations 0x3F7F80 - 0X3f7ff5 are
;// all programmed to 0x0000
;//
;//###########################################################################
;//
;// Original source based on D.A.
;//
;// $TI Release: 2802x Header Files V1.00 $
;// $Release Date: November 10, 2008 $
;//###########################################################################
; The "csmpasswords" section contains the actual CSM passwords that will be
; linked and programmed into to the CSM password locations (PWL) in flash.
; These passwords must be known in order to unlock the CSM module.
; All 0xFFFF's (erased) is the default value for the password locations (PWL).
; It is recommended that all passwords be left as 0xFFFF during code
; development. Passwords of 0xFFFF do not activate code security and dummy
; reads of the CSM PWL registers is all that is required to unlock the CSM.
; When code development is complete, modify the passwords to activate the
; code security module.
enableCSM .set 0 ;0-disable CSM, 1-enable CSM
.sect "csmpasswds"
.if enableCSM == 1 ; enableCSM=1
.int 0xFFFF ;PWL0 (LSW of 128-bit password)
.int 0xFFFF ;PWL1
.int 0xFFFF ;PWL2
.int 0xFFFF ;PWL3
.int 0xFFF4 ;PWL4
.int 0xFFF5 ;PWL5
.int 0xFFF6 ;PWL6
.int 0xFFF7 ;PWL7 (MSW of 128-bit password)
.else ; enableCSM=0
.int 0xFFFF ;PWL0 (LSW of 128-bit password)
.int 0xFFFF ;PWL1
.int 0xFFFF ;PWL2
.int 0xFFFF ;PWL3
.int 0xFFFF ;PWL4
.int 0xFFFF ;PWL5
.int 0xFFFF ;PWL6
.int 0xFFFF ;PWL7 (MSW of 128-bit password)
.endif
;----------------------------------------------------------------------
; For code security operation, all addresses between 0x3F7F80 and
; 0X3f7ff5 cannot be used as program code or data. These locations
; must be programmed to 0x0000 when the code security password locations
; (PWL) are programmed. If security is not a concern, then these addresses
; can be used for code or data.
; The section "csm_rsvd" can be used to program these locations to 0x0000.
.sect "csm_rsvd"
.loop (3F7FF5h - 3F7F80h + 1)
.int 0x0000
.endloop
;//===========================================================================
;// End of file.
;//===========================================================================