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.

[参考译文] TMS320F280049C:卡在 oFlashStatus = Fapi_getFsmStatus ();但编程的数据看起来正确

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

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1456332/tms320f280049c-stuck-at-oflashstatus-fapi_getfsmstatus-but-programmed-data-look-correct

器件型号:TMS320F280049C
Thread 中讨论的其他器件:C2000WARE

工具与软件:

hi champs、

我是为我们的客户提出这个问题。

参考的文档  

C:\ti\c2000\C2000Ware_5_04_00_00\driverlib\f28004x\examples\flash\flashapi_ex1_program_autoecc.c

用户在其应用代码中专门引用了该器件。

PS。 用户确认 u32Index 在闪存0x90000上为128位对齐、而 Buffer 在用户代码中的 RAM 上也为128位对齐。

void Example_Call API(void)

...

oReturnCheck = Fapi_issueProgrammingCommand ((UINT32 *) u32Index、Buffer+I、8、
0、0、Fapi_Auto EccGeneration);

//等待闪存编程操作结束
while (Fapi_checkFsmForReady()== Fapi_Status_Fsm y);

if (oReturnCheck!= Fapi_Status_Success)

//检查闪存 API 文档以了解可能的错误
Example_Error (oReturnCheck);
}

//读取 FMSTAT 寄存器内容以了解 FSM 的状态
//编程命令以查看是否存在与编程操作相关的错误
oFlashStatus = Fapi_getFsmStatus ();

...

}

用户在 RAM/bank0上运行所有闪存 API、在这种情况下、将对 bank1进行擦除/编程、从而在复位后进行实时固件更新。

当问题发生时、用户发现他们的代码始终卡在"oFlashStatus = Fapi_getFsmStatus ();"。

在查看它的汇编代码后,用户发现它卡在 "oFlashStatus = Fapi_getFsmStatus ();"时,它卡在 Estop 处。

在查看 CCS 监视窗口后、用户会在以下情况下发现闪存错误(当它卡在 Estop 上时)。

FMSTAT。 PGV = 1

FMSTAT。 CSTAT = 1

不过、在查看"Memory Browser"之后、128位数据按照预期正确地编程在闪存位置0x90000中。

因此、用户感到困惑。

编程的数据看起来不错、但 PGV 和 CSTAT 中存在错误、这会导致代码卡在"oFlashStatus = Fapi_getFsmStatus ();"中的 Estop 处。

通过注释掉"oFlashStatus = Fapi_getFsmStatus ();"、用户发现代码可以正常工作。

问题:

1.为什么即使数据编程正确, PGV 和 Cstat 也有错误?

2.在这种情况下、如何建议用户进行调试?

3.与闪存 API 相关的代码最初在 F28003x 上运行良好。 然后、用户通过更改闪存 API 库/相关 driverlib、将代码从 F28003x 迁移到 F28004x 上。 F28003x 和 F28004x 有什么主要区别?

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

    您好!

    我们的专家将于1月初离职。 请预计响应会延迟。

    此致、

    Ben Collier

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

    您好!

    是、F28003x 和 F28004x 器件库存在差异、因为器件不同、无法使用相同的库。

    您使用的是 F28004x 器件还是 F28003x 器件?

    此致、

    Rajeshwary

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

    尊敬的 Ben:

    他们使用的是 F280049、并且使用了 F28004x 闪存 API 和 driverlib。 他们只是不会更改 API 名称、因为不存在构建错误或警告、因此我想问在使用相同名称调用这些闪存 API 时是否有任何差异或顾虑。

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

    FMSTAT。 PGV = 1、 FMSTAT。 CSTAT = 1表示编程命令失败。 您是否能够正确擦除器件?

    此致、

    Rajeshwary

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

    尊敬的 Rajeshwary:

    擦除操作没有看到任何错误。

    仅此程序部分错误、代码卡住。

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

    Wayne、

    它们可能是器件可能出现故障。 他们是否在其他设备上尝试过?

    此致、

    Rajeshwary