欢迎来到查IC网

C2000芯片的加锁和解锁

来源:电子工程世界   2020-08-21 阅读:91

由于部分企业需要对芯片内部的程序进行加密处理,C2000提供了两种加密方式:一种是在工程中添加DSP28***_CSMPasswords.asm,一种是直接在CCS的on-chip flash中修改密码。这里以F28335为例,详细描述两种方式的操作方法:

添加CSM加密文件的方法

该方法是直接使用controlSUITE中提供的DSP28***_CSMPasswords.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中。

On – chip flash加密法

这个方法比较简单,烧写完毕.out文件后,在debug界面点击Tools - On-Chip Flash,在弹出的窗口中下拉找到Code Security Password的Key 1~7位置填入你要加密的密码,然后点击Program Password再点击lock就加密了,相当于对密码区写入你上面.asm文件中的内容。

关于解密:

同样以F28335为例:

1、配置芯片的GPIO 84~87引脚的电平状态为1100(也有说只针对key4~key7加密,即只加密高64位密码,则可以不用修改boot模式,直接连接JTAG解密,但本人没有验证过),使芯片进入Branch to check boot mode模式(详情可参考芯片Datasheet第106页,6.1.9 Boot ROM )。如果是TI购买的F28335 controlCARD(以R2.2版本为例),那么把controlCARD上SW2开关的1~4分别配置为1100即可。

2、打开CCS,连接芯片和PC,上电。配置target configuration(View - Target Configuration),配置完成后Test Connection一下,测试成功后进入下一步。(本来以为直接点击debug就可以了,但实验了几次发现一定要做一下这个步骤才行,否则没办法进入debug模式)

3、点击小虫子图标进入debug模式,进入之后如果显示没有连接JTAG的话先点击Connect Target连接JTAG,然后点击Tools - On Chip Flash,在On Chip Flash中的Code Security Password – Key 0~7中输入正确的密码,然后点击Unlock。这样就解锁了,系统会提示:

C28xx: GEL Output:

ADC Calibration not complete, check if devICe is unlocked and recalibrate.C28xx: Flash Programmer: Warning: The configured device (TMS320F28335), does not match the detected device (). Flash Programming operations could be affected. Please consider modifying your target configuration file.

C28xx: Starting device unlocking...

C28xx: Device unlocked. To clear the programmed password, please erase Sector A of Flash memory.

解锁成功后你就可以正常使用芯片进行烧写flash了。

4、如果你希望不更换程序但需要彻底解锁芯片(以后启动都不需要输入密码解锁),那么按照上述系统提示的“To clear the programmed password, please erase Sector A of Flash memory.”操作。接着刚才的步骤,跳到On Chip Flash中的Erase Sector Selection,选择Sector A(默认是全选的),然后点击“Erase Flash”。这样就去掉密码了,系统会提示:

C28xx: Erasing Flash memory...

C28xx: GEL Output:

ADC Calibration not complete, check if device is unlocked and recalibrate.C28xx: Operation completed successfully.

或者也可以把Code Security Password - Key0~7全部改为F,默认就是不加密状态。

以上就完成了芯片的解锁和清除密码操作了。

加密注意事项:

将128-bit全部设为1意味着不加密,即所谓的”unsecure”。

将128-bit全部设为0意味着永久加密,此时芯片不可被解密,即无法再操作flash,也无法读取其中的程序和数据。一般情况下,不要进行此设置。

DSP烧写过程中如果密码区被写入密码、烧写过程中受到干扰、电源不稳定、时钟不稳定等等原因都会导致芯片锁死。以上情况即为意外上锁,即你不知道密码的情况下,几乎是没有办法解锁的,只能考虑更换芯片。

PS:

最新的28004x、2837x等芯片中增加了双代码安全模块(DCSM),该功能支持将芯片中的memory划为两个独立区域,并设置各自独立的的128位CSM密码。该功能可以阻止未授权人员访问加密内容,进而有效防止您的代码被重复或逆向编译;与此同时,需要维护与升级的代码可以存储于另一个独立区域内,并授权给相关人员使用。

免责声明:
以上相关内容来自互联网公开信息分享;如涉及内容、版权、图片等问题,请联系我们。会第一时间删除!

查IC网

服务热线

400-861-9258

客服企业微信