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