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:闪存损坏问题

Guru**** 2589280 points
Other Parts Discussed in Thread: TMS320F28035

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/661520/tms320f28035-flash-corruption-issue

器件型号:TMS320F28035

您好!

我们在使用 TMS320F28035闪存时遇到了一个奇怪的问题。 我们偶尔会在程序存储器中使用一个或两个损坏的数据块将器件从现场恢复。 对于损坏的存储器部分、似乎发生了这样的情况:

首先、一个33字节的数据块已从闪存中读出、然后由闪存移位几个字节。 这会导致"从块中移出"的第一个字节丢失。 然后、将特定的数据模式附加到剩余的块、该块最多可再次填充33个字节。 然后、数据被写回闪存。 下图显示了与有效固件和右侧损坏的固件的比较。

程序闪存中损坏块的位置会因器件而异、似乎没有模式。 附加到块的数据模式似乎总是相同的、只是长度不同以补充块。

这些器件通过 JTAG 进行闪存、我们在将其发送给客户之前对所有器件进行了功能测试。 因此,当他们离开我们的家时,不应有任何错误。

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

    罗马

    您的应用中是否嵌入了闪存 API? 您是否尝试更新应用程序代码中的闪存内容?

    此致、

    曼诺伊

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

    应用本身不使用闪存 API 来执行软件更新。 它只是将 InitFlash()例程复制到 RAM 中并执行它来配置闪存控制寄存器。

    现场更新任务由我们的引导加载程序完成、引导加载程序链接到其自己的闪存扇区。 在将内容写入闪存之前、它会执行闪存擦除、以1覆盖所有应用程序扇区=>当更新中断时、我们看到剩余的存储器填充了 FS (与上述问题的 symptomes 不同)。 此外、还会比较校验和以验证更新过程。

    正如我之前所写的那样、这个问题似乎发生在最初通过 JTAG 对器件进行编程之后。 此时、引导加载程序尚未调用闪存 API 例程。

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

    鉴于图中所示的故障特征(移位存储器内容)、我最初的怀疑是当闪存被重新编程时可能会发生这种情况。 我不认为这是器件问题。

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

    实际上、问题不是器件问题。 无论如何感谢您的参与!

    此致、

    罗马