一、显性加密
1)选中“Debug”下拉菜单中“Debug Configurations”。
2)依次选择“Program”—“Load symbols only”—“Apply”— “Debug”。
3)选择“On-chip Flash”,在“Key 0 ~ Key 7”中写入密码。注意:密码如果都为“0”,则无法解密。如果密码都为“F”,则加密无效。
4)点击“Program Passwrod”。CCS会提示如下窗口。
5)点击“Lock”。CCS会提示如下窗口。此时加密成功。
加密之后无法通过JTAG、串口调试。必须解密之后才可以调试。
二、显性解密
1)首先通过硬件跳线,将Boot Mode Selection选择为“Wait”。
2)与加密方式第1)、2)步相同,在”Key 0 ~ Key 7”写入相应密码。
3)输入密码之后,点击“Unlock”。CCS会弹出如下窗口。
4)点击“Erase Flash”,CCS会弹出如下窗口,则解密成功。
三、隐性加密
优点:可以直接带密码烧录,省去CCS配置问题。
1.添加汇编文件“F2806x_CSMPasswords.asm”。
2.在“F28069_flash.cmd”当中,
- PAGE 0中添加如下:
CSM_RSVD : origin = 0x3F7F80, length = 0x000076
CSM_PWL_P0 : origin = 0x3F7FF8, length = 0x000008 - SECTIONS中添加:
csmpasswds : > CSM_PWL_P0, PAGE = 0
csm_rsvd : > CSM_RSVD, PAGE = 0
生成已加密.out文件,可直接烧录。
四、加密芯片:
1.算法加密:MCU发送明文给加密芯片,加密芯片通过算法运算得到密钥,密钥返回MCU验证密码正确与否。
由于工作原理问题,不管用哪种加密算法,MCU及加密芯片上都要存储一致的密钥,才能保证双方协同工作,而MCU被破解,理论上都可以拿到密钥。且容易跟踪。
增加随机数芯片(ZW20U6x),则每次产生的明文不同,增加破译难度。
2.将MCU的一部分功能程序移植到加密芯片当中执行,MCU与加密芯片通过数据通讯传递关键参数与计算结果。例如SMEC98SP。
五、脱机烧写方式:
1.量产少:串口(C2 Prog)烧写,无脱机烧写方式。
1)通过串口连接目标板,Boot-Mode设置如下表。
2)打开C2 Prog,添加hex文件,设置如下图,若烧写完成,如下下图。