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.

求组C2000-GANG烧录软件中的Memory Option问题

Other Parts Discussed in Thread: C2000-GANG, CONTROLSUITE

各位好,本人现在使用28M35H52C双核芯片,使用C2000-GANG Programmer进行烧写。考虑到程序加密后的安全性,需要对OTP中地址为0x680800的PasswordLock寄存器进行烧写以将其密码设置为不可见,但是C2000-GANG软件中的Memory Option里对28M35H52C的OTP烧写地址范围只支持0x681000 - 0x68101F。因此,当我选择含有0x680800地址的code file时会报错,提示超出地址范围。请问该如何解决呢?谢谢!

  • 隐性法
    为了避免上述情况的发生,让更少的人知道程序的密码,甚至只让一个人知道程序的密码,可以将密码嵌入到程序中,与其他程序一起编译好后,生成.out文件,这个时候,你只需要将.out文件给FLASH烧写人员就可以,不需要再让FLASH烧写人员自己设置密码,我们把这种方法叫做隐性法,在使用串口烧写FLASH的时候,也需要采用这种方法进行程序加密。
    将下面的程序保存为.asm文件,添加到工程中,与其他文件一起编译。


    .sect "csmpasswds"
    .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

    .sect "csm_rsvd"
    .loop (3F7FF5h - 3F7F80h + 1)
    .int 0x0000
    .endloop

    将下面的语句写入CMD中,

    MEMORY
    {


    CSM_RSVD : origin = 0x3F7F80, length = 0x000076

    CSM_PWL : origin = 0x3F7FF8, length = 0x000008

    }
    SECTIONS
    {

    csmpasswds : > CSM_PWL PAGE = 0


    csm_rsvd : > CSM_RSVD PAGE = 0

    }
    按照上面的方法编译好后,你的程序已经加密好了,你只需要将生成的.out交给Flash烧写人员就可以了

  • 谢谢楼上的详细回复。

    您可以在对应的CSMPasswords.asm中填写密码,密码会伴随.out文件烧入
  • 感谢您的及时回复!可能我的问题没有完全表达清楚,抱歉。我现在并不是直接用C2000-GANG软件来设置密码,我的密码目前确实是包含在.asm程序里的,就如您建议的那样。现在的问题是无法在C2000-GANG软件中选择一个带有PasswordLock寄存器地址的.hex输出文件来烧写(同样是通过.asm文件来设置的),因为这个地址超出了软件所允许的OTP烧写地址的范围,但是为了保护密码又不得不烧写这个寄存器地址。

  • 感谢您的及时回复!可能我的问题没有完全表达清楚,抱歉。我现在并不是直接用C2000-GANG软件来设置密码,我的密码目前确实是包含在.asm程序里的,就如您建议的那样。现在的问题是无法在C2000-GANG软件中选择一个带有PasswordLock寄存器地址的.hex输出文件来烧写(同样是通过.asm文件来设置的),因为这个地址超出了软件所允许的OTP烧写地址的范围,但是为了保护密码又不得不烧写这个寄存器地址。
  • 很抱歉,目前手边没有C200-GANG

    请问您能给一下您设置的截图以及相关的错误信息吗?谢谢!
  • Susan:

    您好。目前受条件所限,实际操作时的错误信息截图无法上传,当选择含有0x680800地址的code file时它报错的内容是“Code from file is out of range in selected MCU”。设置的截图请看下图。谢谢!


  • 28M36是从0x681000 开始的,而28M35则是从0x680800开始的

    确实很奇怪

    在C:\ti\controlSUITE\device_support\f28m35x\v207\MWare\cmd 也有相关说明

    OTPSECLOCK       : origin = 0x00680800, length = 0x0004
        OTP_Reserved1    : origin = 0x00680804, length = 0x0004
        OTP_Reserved2    : origin = 0x00680808, length = 0x0004
        OTP_Z2_FLASH_START_ADDR             : origin = 0x0068080C, length = 0x0004
        OTP_EMACID       : origin = 0x00680810, length = 0x0008
        OTP_Reserved3    : origin = 0x00680818, length = 0x0004
        CUSTOMER_OTP_MAIN_OSC_CLK_FREQ      : origin = 0x0068081C, length = 0x0004
        OTP_Reserved4    : origin = 0x00680820, length = 0x0004
        OTP_BOOT_MODE_GPIO_CONFIGURE        : origin = 0x00680824, length = 0x0004
        OTP_Reserved5    : origin = 0x00680828, length = 0x0004
        OTP_ENTRY_POINT  : origin = 0x0068082C, length = 0x0004
        OTP_Reserved6    : origin = 0x00680830, length = 0x0010

    我去问一下有C200-gang的同事吧,请您等待回复

  • OTP的起始地址在TI的数据手册和CMD文件内都是正确的。

    我们已经联系了 support@elprotronic.com 进行修改,其之后会发给我修改后的测试版本,我会请您帮忙测试一下,谢谢
  • 非常感谢您的帮助,等收到测试版本后我会立刻开展测试,并将结果反馈给您。

  • 我收到测试版本了并在论坛添加您为好友,请您通过验证一下。

    您可以通过私信的方式将您的联系方式发送给我。
  • 好的,我已经私信您了,谢谢
  • 我已经私信给您了,请看一下您在论坛的新消息
  • 请问您是否有收到测试版的软件?
  • Susan,您好!抱歉,我从9月28日就开始外出休假了,所以没能及时回复您。我刚才已经将使用测试版后发现的问题私信给您了,谢谢。