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/TMS320F2.8377万S:使用DCSM时停止CPU时出现问题

Guru**** 2487425 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/641889/ccs-tms320f28377s-trouble-halting-cpu-when-using-dcsm

部件号:TMS320F2.8377万S
主题中讨论的其他部件:C2000WARE

工具/软件:Code Composer Studio

我使用的是LAUNCHTXL-F2.8377万S。 我的代码使用2837xS_Generic_flash_lnk.cmd的修改版本,并使用#pragma data_section()和#pragma code_section()指令复制函数和变量。 我还在100kHz运行一个中断调用,运行ISR中的代码后,剩下的周期40 % 约为-我确定了在ISR开始和结束时切换的GPIO的范围。 此时,我可以连接到主板并正常刷新它。 重置后,该板也会运行。

我通过修改c2000ware blink_band_dcSM目录中提供的样例DCSM_Z1_ZoneSelectBlock.asm来保护闪存和ram部分。 在"项目属性">"调试">"闪存设置">"安全设置">"区域1"部分中添加相关信息可让我对主板进行编程并浏览受保护区域中的内存,但在重置后内存不再运行。 在重置后,使其恢复运行的正确方法是什么?  

-阅读技术参考手册2.13 .3.3 (http://www.ti.com/lit/ug/spruhx5e/spruhx5e.pdf)部分后,我发现我可以从C代码中取消区域的安全/保护。 如果我运行csmUnlock(),然后重新执行,则代码将在重置后运行。 这是使用DCSM从闪存启动的正确方式吗? 如果使用此方法,我会间歇性地收到CPU停止错误:  

C28xx_CPU1:停止目标CPU时出现故障:(错误-1156 @ 0x0)设备可能在低功耗模式下运行。 是否要使其退出此模式? 选择'是'强制设备唤醒,然后重试此操作。 选择'No'(否)在不唤醒设备的情况下重试此操作。 (仿真软件包7.0 .48.0)  

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

    即使在保护闪存和RAM部分之后,您也应该能够运行代码。 您不必解锁和锁定它。 如何解锁设备? 您需要检查是否有任何代码从不安全的存储器运行,即从安全闪存/RAM访问任何数据/变量,这样就不起作用。 您必须清楚地对安全代码和非安全代码进行分区。

    当代码从安全内存运行时,不能停止CPU,因为在这种情况下,ECSL会跳闸JTAG连接。 如果要在设备安全时连接CCS,则应解锁ECSL (在KEY0/KEY1寄存器中输入较低的64位匹配密码)。

    此致,

    Vivek Singh