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.

[参考译文] TMS320F280033:DCSM /OTP 编程错误 (FMSTAT 0x30) 摇动器件

Guru**** 2779495 points

Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1611496/tms320f280033-dcsm-otp-programming-error-fmstat-0x30-bricking-device

器件型号: TMS320F280033
主题: SysConfig 中讨论的其他器件

您好:

我正在使用 F280033 器件、并尝试使用 SysConfig 配置 DCSM(区域 1)。 我的目标是保护器件、包括启用 JTAG 锁定(密码匹配模式)、配置链路指针和设置 CSM 密码。

但是、当我尝试刷写由 SysConfig 生成的配置时、编程操作会失败并显示错误、并且器件似乎发生故障(我无法再连接或恢复它)。

错误:

[28/1/2026, 17:35:03] [ERROR] C28xx_CPU1: Error during Flash Programming. Address 0x00078020, FMSTAT (STATCMD on some devices) 0x00000030
[28/1/2026, 17:35:03] [ERROR] C28xx_CPU1: File Loader: Memory write failed: Unknown error

.syscfg下面的我的设置(已编辑密码)。

我正在配置:



DCSM1.$name = "DCSM0";
DCSM1.ZONE1_OTP.configureBoot = true;
DCSM1.ZONE1_OTP.BOOTDEF0 = "0x23"; // Flash Entry
DCSM1.ZONE1_OTP.JTAGLOCK = true;   // Enable JTAG Lock
DCSM1.ZONE1_OTP.bootPinCount = 0;

/* JTAG Passwords (High) - Masks applied */
DCSM1.ZONE1_OTP.JTAGPSWDH0 = "0x4BXXXXXX"; // Redacted
DCSM1.ZONE1_OTP.JTAGPSWDH1 = "0x3FXXXXXX"; // Redacted

/* CSM Passwords & JTAG Low - Masks applied where necessary */
DCSM1.ZONE1.PASSWORD0 = "0xXXXXXXXX";
DCSM1.ZONE1.PASSWORD1 = "0x4DXXXXXX"; // Mask applied for LinkPointer
DCSM1.ZONE1.PASSWORD2 = "0xXXXXXXXX";
DCSM1.ZONE1.PASSWORD3 = "0xXXXXXXXX";

DCSM1.ZONE1.JTAGPSWDL0 = "0xXXXXXXXX";
DCSM1.ZONE1.JTAGPSWDL1 = "0x2BXXXXXX"; // Mask applied

/* Memory Security */
DCSM1.ZONE1.RAMLS0 = "SECURE";
// ... (All RAMLS and Flash Sectors set to SECURE)

由于这是一个 OTP 编程操作、我怀疑我可能会触发安全违例或尝试覆盖一个已编程的位、但这是一个全新的器件。

请提供以下建议:

  1. 什么因素会在0x78020 F28003x 上的地址处专门触发 FMSTAT 0x30?

  2. 此状态下的器件是否有任何恢复方法(JTAG 锁定、但 OTP 写入可能失败)?

  3. 您可以查看我的 SysConfig 设置吗? 具体来说、我是否在掩码(针对 LinkPointer 和 JTAG 锁定位)的配置中犯了任何可能导致编程工具拒绝写入命令的错误?

感谢您的支持。

此致、

Luca.

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

    您好 Luca、

    ]什么特别触发0x78020 F28003x 上地址处的 FMSTAT 0x30?

    FMSTAT 0x30 表示 用户尝试在已经存在“0"的“的情况下对“1"进行“进行编程。  

    此状态下的器件是否有任何恢复方法(JTAG 锁定但 OTP 写入可能失败)?

    请将器件配置为等待引导、并尝试解锁 JTAG(通过在 ccxml 中输入默认 JTAG 密码)。 有关详细信息、您可以参阅以下应用手册: https://www.ti.com/lit/an/spracs4/spracs4

    可能只有 JTAGPSWDH0/JTAGPSWDH1 被编程(因为 JTAGPSWDL0/JTAGPSWDL1 位于 ZSB 中)、因此您 可以 仅尝试使用密码的上半部分。

    您能查看我的 SysConfig 设置吗? 具体来说、我是否在掩码(针对 LinkPointer 和 JTAG 锁定位)的配置中犯了任何可能导致编程工具拒绝写入命令的错误?

    问题可能是由于 CCS 中闪存工具的“Verify"设置“设置、JTAGLOCK 在编程期间正在启用。 在较旧的器件(F28x7x、F28002x、F28004x 等)上、JTAGLOCK 在复位后激活。 对于较新的器件(包括 F28P55x/P551x)、JTAGLOCK 在后续读取到 OTP 中的 Z1OTP_JLM_ENABLE 寄存器时激活。

    请参阅 TRM:

    CCS 对 Z1OTP_JLM_ENABLE 寄存器进行编程后、会验证数据是否已正确编程、从而发出对 Z1OTP_JLM_ENABLE 的读取操作。 因此、JTAGLOCK 被激活并且编程被中断。

     在尝试对 DCSM 配置进行编程之前、请尝试在片上闪存工具中禁用“编程后验证闪存“:

    1. 取消选中“Verify Flash after Program“

    在禁用闪存验证的情况下、客户成功对其 JTAGLOCK 配置进行编程后、可以使用目标配置.ccxml 中的 JTAG 密码重新连接(因此禁用 JTAGLOCK)并对同一固件重新编程 启用闪存验证 。 这允许客户验证其编程是否已成功编程。 这现在是可以实现的、因为 JTAGLOCK 在调试会话中已禁用(通过 ccxml)。

    我将 在本周剩余时间内离职、因此我将请我的同事处理任何进一步的问题。

    此致、
    马特

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

    您好:

    关闭此主题、因为已经是一个月、没有回复、假设已解决。

    此致、
    马特