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.

[参考译文] CCS/TMS320F28035:解锁 ECSL 保护

Guru**** 2540720 points
Other Parts Discussed in Thread: UNIFLASH

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/613919/ccs-tms320f28035-unlock-ecsl-protection

器件型号:TMS320F28035
主题中讨论的其他器件:UNIFLASH

工具/软件:Code Composer Studio

您好!

我使用了 ECSL (CSM 密钥的低64位)保护来禁用 JTAG 仿真。

如何解锁器件、从代码中启用仿真?

我使用从安全 SARAM 运行的解锁示例函数以及.asm 文件中的正确密钥、但它不起作用。

我出了什么问题?

此致、

Tom

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

    Tom、

    您需要在密钥寄存器中写入正确的 ECAL 密码以解锁 ECSL。 它可以通过代码或 CCS GEL 文件来完成。 如果要通过 CCS GEL 文件执行此操作、则必须按如下所示更改引导引脚设置-

    此致、

    Vivek Singh  

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

    它无法通过代码工作。

    我所做的就是:

    我编写了使用此函数的代码-"Status = Example_CsmUnlock()"来解锁器件。
    2.我将"expample_Flash2803x_Csmkeys.asm"文件上的默认密钥更改为0xFFF1 (_PRG_key0 -_PRG_key7)
    3.我在 CCS Uniflash 3上锁定了我的器件(Key0 - Key7 = 0xFFF1)

    此致、

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

    您能否共享 example_CsmUnlock()函数代码。

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

    这是我的代码(我从 L0 SARAM 运行它):


    if (GpioDataRegs.GPADD.bit.GPIO10 ==1)

    status = example_CsmUnlock();


    ///-------------------------------------------------------
    //示例:CsmUnlock:
    ///-------------------------------------------------------
    //此函数解锁 CSM。 用户必须用当前值替换0xFFFF
    // DSP 的密码。 如果解锁成功、则返回1。

    uint16 example_CsmUnlock()

    易失性 uint16温度;

    //使用当前密码加载密钥寄存器。 0xFFFF 是虚拟的
    //密码。 用户应将其替换为正确的 DSP 密码。

    EALLOW;
    CsmRegs.KEY0 = 0xFFF1;
    CsmRegs.key1 = 0xFFF1;
    CsmRegs.key2 = 0xFFF1;
    CsmRegs.key3 = 0xFFF1;
    CsmRegs.KEY4 = 0xFFF1;
    CsmRegs.KEY5 = 0xFFF1;
    CsmRegs.KEY6 = 0xFFF1;
    CsmRegs.KEY7 = 0xFFF1;
    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;




    此致、

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

    很抱歉耽误你的回答。 请检查汇编代码以确保密码读取部分未优化。 由于在代码中的任何位置都不使用 temp、因此编译器可能会对其进行优化。

    此致、

    Vivek Singh