C2000的CSM加密问题请教

2019-07-17 13:23发布

   最近看到C2000系列有一个CSM加密功能,看了下资料,好像是在烧录时先烧录程序,再把密码烧进去,然后别人就无法读取芯片的FLASH了,  如果自己想要重新编程烧录,就得先在软件里输入密码,unlock,才能重新烧录,我的理解正确吗?  然后有的是在程序里做了这个处理,这是如何做的呢?  请教各位
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
19条回答
xmuhwei
2019-07-17 21:11
309579471 发表于 2015-6-9 08:48
这里还有个问题,如果显性操作 可以在软件上解密,再重新烧录。但是如果是隐形操作,我需要重新烧录程序 ...

Uint16 CsmUnlock()
{
    volatile Uint16 temp;

    // Load the key registers with the current password. The 0xFFFF's are dummy
        // passwords.  User should replace them with the correct password for the DSP.

    EALLOW;
    CsmRegs.KEY0 = 0xFFFF;
    CsmRegs.KEY1 = 0xFFFF;
    CsmRegs.KEY2 = 0xFFFF;
    CsmRegs.KEY3 = 0xFFFF;
    CsmRegs.KEY4 = 0xFFFF;
    CsmRegs.KEY5 = 0xFFFF;
    CsmRegs.KEY6 = 0xFFFF;
    CsmRegs.KEY7 = 0xFFFF;
    EDIS;

    // Perform a dummy read of the password locations
    // if they match the key values, the CSM will unlock

    temp = CsmPwl.PSWD0;
    temp = CsmPwl.PSWD1;
    temp = CsmPwl.PSWD2;
    temp = CsmPwl.PSWD3;
    temp = CsmPwl.PSWD4;
    temp = CsmPwl.PSWD5;
    temp = CsmPwl.PSWD6;
    temp = CsmPwl.PSWD7;

    // If the CSM unlocked, return succes, otherwise return
    // failure.
    if (CsmRegs.CSMSCR.bit.SECURE == 0) return STATUS_SUCCESS;
    else return STATUS_FAIL;

}

一周热门 更多>