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.

TMS320F280049C: 关于F280049C加密问题

Part Number: TMS320F280049C
Other Parts Discussed in Thread: SYSCONFIG, CONTROLSUITE, UNIFLASH

关于F280049C加密问题

1:ASM文件是用SYSCONFIG产生的ASM文件和CMD文件

  • ASM文件内容:

  文件说明内容只是修改了红色部分

        密码1,3,4修改为12345678

其它内容一字不改

; ----------------------------------------------------------------------

; Zone 1

;----------------------------------------------------------------------

     .sect "dcsm_otp_z1_linkpointer"

      .retain

      .long 0x1FFFFFFF

      .long 0xFFFFFFFF     ;Reserved

      .long 0x1FFFFFFF

      .long 0xFFFFFFFF     ;Reserved

      .long 0x1FFFFFFF

      .long 0xFFFFFFFF     ;Reserved

   

     .sect "dcsm_otp_z1_pswdlock"

      .retain

      .long 0xFB7FFFFF

      .long 0x7FFFFFFF     ;Reserved

     

     .sect "dcsm_otp_z1_crclock"

      .retain

      .long 0x4BFFFFFF

      .long 0x3FFFFFFF     ;Reserved

  

;;     .sect "dcsm_otp_z1_gpreg"

;;      .retain

;;      .long 0x5AFF1820     ;Z1OTP_BOOTPIN_CONFIG

;;      .long 0x5AFFFFfF     ;Z1OTP_GPREG2

;;     .sect "dcsm_otp_z1_bootctrl"

;;      .retain

;;      .long 0x00000000     ;Z1OTP_BOOTDEF_LOW

;;      .long 0xFFFFFFFF     ;Z1OTP_BOOTDEF_HIGH

     

     .sect "dcsm_zsel_z1"

      .retain

      .long 0x000000FF       ;Z1-EXEONLYRAM

      .long 0x0000FFFF      ;Z1-EXEONLYSECT

      .long 0x0000AAAA          ;Z1-GRABRAM

      .long 0xAAAAAAAA         ;Z1-GRABSECT     

      .long 0x12345678

      .long 0x47FFFFFF

      .long 0x12345678

      .long 0x12345678

 

     .sect "b1_dcsm_otp_z1_linkpointer"

      .retain

      .long 0x1FFFFFFF

      .long 0xFFFFFFFF     ;Reserved

      .long 0x1FFFFFFF

      .long 0xFFFFFFFF     ;Reserved

      .long 0x1FFFFFFF

      .long 0xFFFFFFFF     ;Reserved

 

     .sect "b1_dcsm_zsel_z1"

      .retain

      .long 0xFFFFFFFF               ;Reserved

      .long 0x0000FFFF      ;Bank 1 Z1-EXEONLYSECT

      .long 0xFFFFFFFF               ;Reserved

      .long 0xAAAAAAAA         ;Bank 1 Z1-GRABSECT

 

      .long 0xFFFFFFFF               ;Reserved

      .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_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 0x1FFFFFFF

      .long 0xFFFFFFFF     ;Reserved

      .long 0x1FFFFFFF

      .long 0xFFFFFFFF     ;Reserved

      .long 0x1FFFFFFF

      .long 0xFFFFFFFF     ;Reserved

 

     .sect "dcsm_otp_z2_pswdlock"

      .retain

      .long 0xBF7FFFFF

      .long 0x77FFFFFF     ;Reserved

     

     .sect "dcsm_otp_z2_crclock"

      .retain

      .long 0x0FFFFFFF

      .long 0x37FFFFFF     ;Reserved

           

;;     .sect "dcsm_otp_z2_gpreg"

;;      .retain

;;      .long 0x5AFF1820     ;Z2OTP_BOOTPIN_CONFIG

;;      .long 0x5AFFFFfF     ;Z2OTP_GPREG2

;;     .sect "dcsm_otp_z2_bootctrl"

;;      .retain

;;      .long 0x00000000     ;Z2OTP_BOOTDEF_LOW

;;      .long 0xFFFFFFFF     ;Z2OTP_BOOTDEF_HIGH

     

     .sect "dcsm_zsel_z2"

      .retain

      .long 0x000000FF       ;z2-EXEONLYRAM

      .long 0x0000FFFF      ;z2-EXEONLYSECT

      .long 0x0000AAAA          ;z2-GRABRAM

      .long 0xAAAAAAAA         ;z2-GRABSECT

     

      .long 0x12345678

      .long 0xE3FFFFFF

      .long 0x12345678

      .long 0x12345678

 

     .sect "b1_dcsm_otp_z2_linkpointer"

      .retain

      .long 0x1FFFFFFF

      .long 0xFFFFFFFF     ;Reserved

      .long 0x1FFFFFFF

      .long 0xFFFFFFFF     ;Reserved

      .long 0x1FFFFFFF

      .long 0xFFFFFFFF     ;Reserved

 

     .sect "b1_dcsm_zsel_z2"

      .retain

      .long 0xFFFFFFFF               ;Reserved

      .long 0x0000FFFF      ;Bank 1 Z2-EXEONLYSECT

      .long 0xFFFFFFFF               ;Reserved

      .long 0xAAAAAAAA         ;Bank 1 Z2-GRABSECT

 

      .long 0xFFFFFFFF               ;Reserved

      .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

;----------------------------------------------------------------------

 

 

1.2  CMD文件内容生成后没动过

 

1.3  然后进行编译,得到MAP文件和OUT文件

/* this linker command file is to be included if user wants to use the DCSM feature on the device

 * DCSM  means Dual Zone Code Security Module.

 * This linker command file works as an addendum ot the already existing Flash/RAM linker command file

 * that the project has.

 * The sections in the *_ZoneSelectBlock.asm source file is linked as per the commands given in the file

 * NOTE - please note fill=0xFFFF, this helps if users include this file in the project by mistake and

 * doesn't provide the needed proper *_ZoneSelectBlock.asm sources .

 * Please refer to the Blinky DCSM example in the controlsuite examples for proper usage of this.

 *

 * Once users are confident that they want to program the passwords in OTP, the DSECT section type can be removed.

 *

*/

 

MEMORY

{

PAGE 0 :  /* Program Memory */

 

   /* Z1 OTP.  LinkPointers */

   DCSM_OTP_Z1_LINKPOINTER   : origin = 0x78000, length = 0x00000C

   /* Z1 OTP.  GPREG1/GPREG2 */

   DCSM_OTP_Z1_GPREG         : origin = 0x7800C, length = 0x000004

   /* Z1 OTP.  PSWDLOCK/RESERVED */

   DCSM_OTP_Z1_PSWDLOCK       : origin = 0x78010, length = 0x000004

   /* Z1 OTP.  CRCLOCK/RESERVED */

   DCSM_OTP_Z1_CRCLOCK          : origin = 0x78014, length = 0x000004

   /* Z1 OTP.  RESERVED/BOOTCTRL */

   DCSM_OTP_Z1_BOOTCTRL        : origin = 0x7801C, length = 0x000004

 

   /* DCSM Z1 Zone Select Contents (!!Movable!!) */

   /* Z1 OTP.  Z1 password locations / Flash and RAM partitioning */

   DCSM_ZSEL_Z1_P0              : origin = 0x78020, length = 0x000010

 

   /* Z2 OTP.  LinkPointers */

   DCSM_OTP_Z2_LINKPOINTER         : origin = 0x78200, length = 0x00000C

   /* Z2 OTP.  GPREG1/GPREG2 */

   DCSM_OTP_Z2_GPREG                  : origin = 0x7820C, length = 0x000004

   /* Z2 OTP.  PSWDLOCK/RESERVED */

   DCSM_OTP_Z2_PSWDLOCK       : origin = 0x78210, length = 0x000004

   /* Z2 OTP.  CRCLOCK/RESERVED */

   DCSM_OTP_Z2_CRCLOCK          : origin = 0x78214, length = 0x000004

   /* Z2 OTP.  GPREG3/BOOTCTRL */

   DCSM_OTP_Z2_BOOTCTRL        : origin = 0x7821C, length = 0x000004

 

   /* DCSM Z2 Zone Select Contents (!!Movable!!) */

   /* Z2 OTP.  Z2 password locations / Flash and RAM partitioning  */

   DCSM_ZSEL_Z2_P0              : origin = 0x78220, length = 0x000010

 

   /* BANK1 */

   /* B1 Z1 OTP.  LinkPointers */

   B1_DCSM_OTP_Z1_LINKPOINTER    : origin = 0x78400, length = 0x00000C

 

   /* DCSM B1 Z1 Zone Select Contents (!!Movable!!) */

   /* B1 Z1 OTP.  Flash partitioning */

   B1_DCSM_ZSEL_Z1_P0         : origin = 0x78420, length = 0x000010

 

   /* B1 Z2 OTP.  LinkPointers */

   B1_DCSM_OTP_Z2_LINKPOINTER    : origin = 0x78600, length = 0x00000C

 

   /* DCSM B1 Z2 Zone Select Contents (!!Movable!!) */

   /* B1 Z2 OTP.  Flash partitioning  */

   B1_DCSM_ZSEL_Z2_P0         : origin = 0x78620, length = 0x000010

}

 

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_bootctrl            : > DCSM_OTP_Z1_BOOTCTRL             PAGE = 0, type = DSECT

   dcsm_zsel_z1                                  : > DCSM_ZSEL_Z1_P0                                 PAGE = 0

 

   dcsm_otp_z2_linkpointer        : > DCSM_OTP_Z2_LINKPOINTER                  PAGE = 0

   dcsm_otp_z2_gpreg        : > DCSM_OTP_Z2_GPREG                PAGE = 0, type = DSECT

   dcsm_otp_z2_pswdlock                   : > DCSM_OTP_Z2_PSWDLOCK           PAGE = 0

   dcsm_otp_z2_crclock             : > DCSM_OTP_Z2_CRCLOCK                        PAGE = 0

   dcsm_otp_z2_bootctrl            : > DCSM_OTP_Z2_BOOTCTRL             PAGE = 0, type = DSECT

   dcsm_zsel_z2                                  : > DCSM_ZSEL_Z2_P0                                 PAGE = 0

   b1_dcsm_otp_z1_linkpointer : > B1_DCSM_OTP_Z1_LINKPOINTER             PAGE = 0

   b1_dcsm_zsel_z1                             : > B1_DCSM_ZSEL_Z1_P0                                     PAGE = 0

 

   b1_dcsm_otp_z2_linkpointer   : > B1_DCSM_OTP_Z2_LINKPOINTER             PAGE = 0

   b1_dcsm_zsel_z2                             : > B1_DCSM_ZSEL_Z2_P0                                     PAGE = 0

}

 

/*

//===========================================================================

// End of file.

//===========================================================================

*/

 

 

 

 

1.3  然后进行编译,得到MAP文件和OUT文件

 

SyncSocRegsFile

*          1    00007940    00000006     UNINITIALIZED

                  00007940    00000006     f28004x_globalvariabledefs.obj (SyncSocRegsFile)

 

dcsm_otp_z1_gpreg

*          0    0007800c    00000000     DSECT

 

dcsm_otp_z1_pswdlock

*          0    00078010    00000004    

                  00078010    00000004     dcsm.obj (dcsm_otp_z1_pswdlock)

 

dcsm_otp_z1_crclock

*          0    00078014    00000004    

                  00078014    00000004     dcsm.obj (dcsm_otp_z1_crclock)

 

dcsm_otp_z1_bootctrl

*          0    0007801c    00000000     DSECT

 

dcsm_zsel_z1

*          0    00078020    00000010    

                  00078020    00000010     dcsm.obj (dcsm_zsel_z1)

 

dcsm_otp_z2_linkpointer

*          0    00078200    0000000c    

                  00078200    0000000c     dcsm.obj (dcsm_otp_z2_linkpointer)

 

dcsm_otp_z2_gpreg

*          0    0007820c    00000000     DSECT

 

dcsm_otp_z2_pswdlock

*          0    00078210    00000004    

                  00078210    00000004     dcsm.obj (dcsm_otp_z2_pswdlock)

 

dcsm_otp_z2_crclock

*          0    00078214    00000004    

                  00078214    00000004     dcsm.obj (dcsm_otp_z2_crclock)

 

dcsm_otp_z2_bootctrl

*          0    0007821c    00000000     DSECT

 

dcsm_zsel_z2

*          0    00078220    00000010    

                  00078220    00000010     dcsm.obj (dcsm_zsel_z2)

 

b1_dcsm_otp_z1_linkpointer

*          0    00078400    0000000c    

                  00078400    0000000c     dcsm.obj (b1_dcsm_otp_z1_linkpointer)

 

b1_dcsm_zsel_z1

*          0    00078420    00000010    

                  00078420    00000010     dcsm.obj (b1_dcsm_zsel_z1)

 

b1_dcsm_otp_z2_linkpointer

*          0    00078600    0000000c    

                  00078600    0000000c     dcsm.obj (b1_dcsm_otp_z2_linkpointer)

 

b1_dcsm_zsel_z2

*          0    00078620    00000010    

                  00078620    00000010     dcsm.obj (b1_dcsm_zsel_z2)

 

1.4  下载程序到FLASH,程序不运行了.

1.5   想再次下载程序,芯片锁死了

                   对应的CCS设置为下图

下载程序图

 

1.5   UNIFLASH软件

  • 程序不运行跟芯片是否加密没有直接关系,你的程序如果在没有加密的状态下能成功下载到flash并运行,那么加密后表现应该一样。

    芯片锁死后有进行解密处理吗?否则是无法再次下载程序的