各位好,本人现在使用28M35H52C双核芯片,使用C2000-GANG Programmer进行烧写。考虑到程序加密后的安全性,需要对OTP中地址为0x680800的PasswordLock寄存器进行烧写以将其密码设置为不可见,但是C2000-GANG软件中的Memory Option里对28M35H52C的OTP烧写地址范围只支持0x681000 – 0x68101F。因此,当我选择含有0x680800地址的code file时会报错,提示超出地址范围。请问该如何解决呢?谢谢!
mangui zhang:
隐性法为了避免上述情况的发生,让更少的人知道程序的密码,甚至只让一个人知道程序的密码,可以将密码嵌入到程序中,与其他程序一起编译好后,生成.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烧写人员就可以了
各位好,本人现在使用28M35H52C双核芯片,使用C2000-GANG Programmer进行烧写。考虑到程序加密后的安全性,需要对OTP中地址为0x680800的PasswordLock寄存器进行烧写以将其密码设置为不可见,但是C2000-GANG软件中的Memory Option里对28M35H52C的OTP烧写地址范围只支持0x681000 – 0x68101F。因此,当我选择含有0x680800地址的code file时会报错,提示超出地址范围。请问该如何解决呢?谢谢!
Susan Yang:谢谢楼上的详细回复。
您可以在对应的CSMPasswords.asm中填写密码,密码会伴随.out文件烧入
各位好,本人现在使用28M35H52C双核芯片,使用C2000-GANG Programmer进行烧写。考虑到程序加密后的安全性,需要对OTP中地址为0x680800的PasswordLock寄存器进行烧写以将其密码设置为不可见,但是C2000-GANG软件中的Memory Option里对28M35H52C的OTP烧写地址范围只支持0x681000 – 0x68101F。因此,当我选择含有0x680800地址的code file时会报错,提示超出地址范围。请问该如何解决呢?谢谢!
Lu Jun:
回复 Susan Yang:
感谢您的及时回复!可能我的问题没有完全表达清楚,抱歉。我现在并不是直接用C2000-GANG软件来设置密码,我的密码目前确实是包含在.asm程序里的,就如您建议的那样。现在的问题是无法在C2000-GANG软件中选择一个带有PasswordLock寄存器地址的.hex输出文件来烧写(同样是通过.asm文件来设置的),因为这个地址超出了软件所允许的OTP烧写地址的范围,但是为了保护密码又不得不烧写这个寄存器地址。
各位好,本人现在使用28M35H52C双核芯片,使用C2000-GANG Programmer进行烧写。考虑到程序加密后的安全性,需要对OTP中地址为0x680800的PasswordLock寄存器进行烧写以将其密码设置为不可见,但是C2000-GANG软件中的Memory Option里对28M35H52C的OTP烧写地址范围只支持0x681000 – 0x68101F。因此,当我选择含有0x680800地址的code file时会报错,提示超出地址范围。请问该如何解决呢?谢谢!
Lu Jun:
回复 mangui zhang:
感谢您的及时回复!可能我的问题没有完全表达清楚,抱歉。我现在并不是直接用C2000-GANG软件来设置密码,我的密码目前确实是包含在.asm程序里的,就如您建议的那样。现在的问题是无法在C2000-GANG软件中选择一个带有PasswordLock寄存器地址的.hex输出文件来烧写(同样是通过.asm文件来设置的),因为这个地址超出了软件所允许的OTP烧写地址的范围,但是为了保护密码又不得不烧写这个寄存器地址。
各位好,本人现在使用28M35H52C双核芯片,使用C2000-GANG Programmer进行烧写。考虑到程序加密后的安全性,需要对OTP中地址为0x680800的PasswordLock寄存器进行烧写以将其密码设置为不可见,但是C2000-GANG软件中的Memory Option里对28M35H52C的OTP烧写地址范围只支持0x681000 – 0x68101F。因此,当我选择含有0x680800地址的code file时会报错,提示超出地址范围。请问该如何解决呢?谢谢!
Susan Yang:
回复 Lu Jun:
很抱歉,目前手边没有C200-GANG
请问您能给一下您设置的截图以及相关的错误信息吗?谢谢!
各位好,本人现在使用28M35H52C双核芯片,使用C2000-GANG Programmer进行烧写。考虑到程序加密后的安全性,需要对OTP中地址为0x680800的PasswordLock寄存器进行烧写以将其密码设置为不可见,但是C2000-GANG软件中的Memory Option里对28M35H52C的OTP烧写地址范围只支持0x681000 – 0x68101F。因此,当我选择含有0x680800地址的code file时会报错,提示超出地址范围。请问该如何解决呢?谢谢!
Lu Jun:
回复 Susan Yang:
Susan:
您好。目前受条件所限,实际操作时的错误信息截图无法上传,当选择含有0x680800地址的code file时它报错的内容是“Code from file is out of range in selected MCU”。设置的截图请看下图。谢谢!
各位好,本人现在使用28M35H52C双核芯片,使用C2000-GANG Programmer进行烧写。考虑到程序加密后的安全性,需要对OTP中地址为0x680800的PasswordLock寄存器进行烧写以将其密码设置为不可见,但是C2000-GANG软件中的Memory Option里对28M35H52C的OTP烧写地址范围只支持0x681000 – 0x68101F。因此,当我选择含有0x680800地址的code file时会报错,提示超出地址范围。请问该如何解决呢?谢谢!
Susan Yang:
回复 Lu Jun:
28M36是从0x681000 开始的,而28M35则是从0x680800开始的
确实很奇怪
在C:\ti\controlSUITE\device_support\f28m35x\v207\MWare\cmd 也有相关说明
OTPSECLOCK: origin = 0x00680800, length = 0x0004OTP_Reserved1: origin = 0x00680804, length = 0x0004OTP_Reserved2: origin = 0x00680808, length = 0x0004OTP_Z2_FLASH_START_ADDR: origin = 0x0068080C, length = 0x0004OTP_EMACID: origin = 0x00680810, length = 0x0008OTP_Reserved3: origin = 0x00680818, length = 0x0004CUSTOMER_OTP_MAIN_OSC_CLK_FREQ: origin = 0x0068081C, length = 0x0004OTP_Reserved4: origin = 0x00680820, length = 0x0004OTP_BOOT_MODE_GPIO_CONFIGURE: origin = 0x00680824, length = 0x0004OTP_Reserved5: origin = 0x00680828, length = 0x0004OTP_ENTRY_POINT: origin = 0x0068082C, length = 0x0004OTP_Reserved6: origin = 0x00680830, length = 0x0010
我去问一下有C200-gang的同事吧,请您等待回复
各位好,本人现在使用28M35H52C双核芯片,使用C2000-GANG Programmer进行烧写。考虑到程序加密后的安全性,需要对OTP中地址为0x680800的PasswordLock寄存器进行烧写以将其密码设置为不可见,但是C2000-GANG软件中的Memory Option里对28M35H52C的OTP烧写地址范围只支持0x681000 – 0x68101F。因此,当我选择含有0x680800地址的code file时会报错,提示超出地址范围。请问该如何解决呢?谢谢!
Susan Yang:
回复 Lu Jun:
OTP的起始地址在TI的数据手册和CMD文件内都是正确的。
我们已经联系了 support@elprotronic.com 进行修改,其之后会发给我修改后的测试版本,我会请您帮忙测试一下,谢谢
各位好,本人现在使用28M35H52C双核芯片,使用C2000-GANG Programmer进行烧写。考虑到程序加密后的安全性,需要对OTP中地址为0x680800的PasswordLock寄存器进行烧写以将其密码设置为不可见,但是C2000-GANG软件中的Memory Option里对28M35H52C的OTP烧写地址范围只支持0x681000 – 0x68101F。因此,当我选择含有0x680800地址的code file时会报错,提示超出地址范围。请问该如何解决呢?谢谢!
Lu Jun:
回复 Susan Yang:
非常感谢您的帮助,等收到测试版本后我会立刻开展测试,并将结果反馈给您。