DSP28335加密的两种方法及加密后仿真器连接不上的解决办法

1 显性法

Tools,On chip Flash,将OSCCLK修改成DSP外部实际的晶振。下面保留默认时为DSP的最高频率,最好默认。最后点Remeber My Settings,保存设置。

在密码区修改密码,不能全改为0,否则,DSP芯片锁死。点击 “Program Password”,点击LOCK。采用这种显性方法设置密码,在生产产品的时候,你需要将密码告诉生产线上的Flash烧写人员,以至于除了公司核心人员外,还会有更多的人知道你的程序密码,给保密性带来不利。


2 隐性法

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

将 DSP2833x_CSMPasswords.asm加入工程,然后在密码区编辑密码,将与其他文件一起编译。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
.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中,若28335.cmd已经有此程序段可以不加。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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
...
}

3 28335加密后无法连接

当加密后,程序可以正常运行。再连接仿真器进入css后在debug菜单下进行连接时,可能出现无法连接目标板现象。

  1. 重新配置 boot mode pins,将boot引脚配置为Branch to check boot mode,然后再连接仿真器。
  2. 如果板子不想改动而造成管脚无法重新配置,可以用这个方法尝试。板子断电,连接仿真器,启动CCS,在CCS中点击connect target,稍等0.x秒随后很快给板子上电。具体时间差自己尝试,大致在1s之内。多试几次总可以连接上的。然后可以点击菜单Tools -> Flash programming,弹出输入密码窗口,输入正确的密码,点击unlock即可。

4 关于DSP28335芯片锁死的解决办法