TI E2E™ 设计支持论坛将于 5 月 30 日至 6 月 1 日进行维护。如果您在此期间需要技术支持,请联系 TI 的客户支持中心寻求帮助。

This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F28035:TMS320F28035

Guru**** 2048030 points
Other Parts Discussed in Thread: TMS320F28035
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/967173/tms320f28035-tms320f28035

器件型号:TMS320F28035

我正在开发 TMS320F28035 SCI 引导加载程序、一切都运行良好、但如果我使用修复密码锁定器件、则 csmUnlock 不工作。 我在内核文件中进行了更改

uint16 CsmUnlock()


/*volatile int *csm =(volatile int *) 0x000AE0;//csm 寄存器文件
volatile int * PWL =(volatile int *) 0x003F7FF8;//密码位置
volatile int tmp;
int i;
//读取128位密码位置(PWL)
//在地址0x3F 7FF8-0x3F 7FFF 处的闪存中
//如果器件是安全的、则读取的值将是
//实际上没有加载到 temp 变量中,所以
//这称为虚拟读取。
对于(i=0;i<8;i++) tmp =* PWL++;
//如果密码地址(PWL)都为1 (0xFFFF),
//则器件现在将不安全。 如果是密码
//不是全1 (0xFFFF)、则需要以下代码
//取消 CSM 的安全保护。
//将128位密码写入密钥寄存器
//如果此密码与中存储的密码匹配
// PWL 则 CSM 将变得不安全。 如果没有
//匹配、则器件将保持安全。
//示例密码为:
//使用0x111122223344455556677778888。
asm (" EALLOW");//密钥寄存器受 EALLOW 保护
*CSM++= 0x1234;//在0xAE0处注册 KEY0
*CSM++= 0xFFFF;//在0xE1处注册密钥1
*CSM++= 0xFFFF;//在0xAE2处注册密钥2
*CSM++= 0xFFFF;//在0xAE3处注册密钥3
*CSM++= 0xFFFF;//在0xAE4上注册 KEY4
*CSM++= 0xFFFF;//在0xAE5上注册 KEY5
*CSM++= 0xFFFF;//在0xAE6上注册 KEY6
*CSM++= 0xFFFF;//在0xAE7上注册 KEY7
asm (" EDIS");*
易失性 uint16温度;



//使用当前密码加载密钥寄存器。 0xFFFF 是虚拟的
//密码。 用户应将其替换为正确的 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;
CsmRegs.KEY0 = 0x1234;
CsmRegs.key1 = 0xFFFF;
CsmRegs.key2 = 0x5678;
CsmRegs.key3 = 0xFFFF;
CsmRegs.KEY4 = 0x4321;
CsmRegs.KEY5=0xFFFF;
CsmRegs.KEY6 = 0x8765;
CsmRegs.KEY7=0xFFFF;
EDIS;

//执行密码位置的虚拟读取
//如果它们与密钥值匹配,CSM 将解锁

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

//如果 CSM 未锁定,则返回成功,否则返回
//失败。
if (CsmRegs.CSMSCR.bit.SECURE_=0)返回 STATUS_SUCCESS;
否则返回 STATUS_FAIL;



我已锁定设备的修复密码

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    由于年终假期、分配给此主题帖的主题专家本周已不在办公室、因此您在1月第一周之前可能无法获得合格答案。  很抱歉耽误你的时间。

     

    此致、

    Himanshu

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!  

    在发布简短的代码段时、请使用代码格式语法突出显示器。  它看起来是什么样的 编辑栏上。  这将使代码更易于阅读。

    在这个代码中、我看到 KEY0被修改、所有其它的为0xFFFF  

    asm (" EALLOW");//密钥寄存器受 EALLOW 保护
    *:csm++= 0xE3;//在0xAE0上注册 KEY0
    *:csm++= 0x1234;//在0xAE1
    上注册 key1 *:csm++= 0xFFFF;//在0xAE2上注册 key2
    *:csm++= 0xFFFF;//在0xAFFFF = 0xC++寄存器
    = 0xFFFF;//在0xA3+= 0xEFFFF; //在0xAE4 *
    CSM++= 0xFFFF 上注册 KEY4;//在0xAE5上注册 KEY5
    * CSM++= 0xFFFF;//在0xAE6上注册 KEY6
    * CSM++= 0xFFFF;//在0xAE7
    asm (" EDIS")上注册 KEY7;*/
    易失性 UINT16温度; 

    但在这里、我看到其他所有密钥都被修改了。   您是否尝试在所有密钥匹配的情况下解锁设备?  

    …
    CsmRegs.KEY0 = 0x1234;<--
    CsmRegs.key1 = 0xFFFF;
    CsmRegs.key2 = 0x5678;<--
    CsmRegs.key3 = 0xFFFF;
    CsmRegs.KEY4 = 0x4321;<--
    CsmRegs.KEY5 = 0xFFFF;CsmRegs.KEY6
    
    = 0xFFFF;CsmRegs.KEY4 = 0x4321;CsmRegs.KEY6 = 0xFFFF
    ;CsmRegs.KEFFFF 

    此致

    Lori