因为部分企业需求对芯片内部的程序进行加密处理,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暗码。该功用能够阻挠未授权人员拜访加密内容,从而有用避免您的代码被重复或逆向编译;与此同时,需求保护与晋级的代码能够存储于另一个独立区域内,并授权给相关人员运用。