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.

[参考译文] TMS320F2800137:闪存写入和擦除安全存储器

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1525297/tms320f2800137-flash-write-and-erase-secure-memory

器件型号:TMS320F2800137

工具/软件:

我在写入和擦除安全闪存存储器时遇到问题。 我的所有闪存和 RAM 扇区都属于区域 1(通过查看相应的 sect/RAMSTAT 寄存器进行验证)、并且我的闪存功能通过 RAMLS1(我已经检查过该扇区是安全 RAM 块)运行。 Fapi_issueProgrammingCommand 返回成功结果 、但 Fapi_doVerify 返回通用错误。 如果我在写入/擦除之前解锁该区域、则闪存写入和擦除函数会按预期工作。 读取访问似乎可以在未解锁的情况下正常工作。 这是预期行为吗?  技术参考手册的第 5.3 节似乎建议、只要代码从同一安全区域执行、它就应该具有完全的读取/写入/擦除访问权限。  

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

    您好 Liam、

    您能否显示链接器 cmd 文件? 对于您的示例、段是否映射到 LS RAM 或 GS RAM?

    谢谢。此致、

    Charles

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

    尊敬的 Charles:

    感谢您的答复。 据我所知、这个 MCU 没有 GS RAM、因此它映射到 LS RAM。 我的闪存函数在闪存存储器的第 32-34 段中排序、并加载到 LS1 RAM 中(我已将其均匀地溢出到链接器文件的 A 和 B 中)origin = 0x0000B000、length = 0x00000FF8

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

    您好 Liam、

    执行 Fapi_doVerify 时、传递什么地址用于验证? 它是否与上一个程序序列相同?

    谢谢。此致、

    Charles

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

    尊敬的 Charles:

    由于处理器在闪存写入失败期间被锁定、我无法准确确认、但当我在写入和验证命令之后插入解锁代码时、地址是相同的。

    非常感谢、

    Liam

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Fapi_issueProgrammingCommand 返回成功、但 Fapi_doVerify 返回通用错误。 如果我在写入/擦除之前解锁该区域、则闪存写入和擦除函数将按预期工作。

    您是否看到在“Memory Window“中编程的代码?  此外、编程命令之后、您是否 使用 Fapi_getFsmStatus () 读取了 STATCMD 寄存器、从而查看是否有错误?

    Fapi_doVerify 遇到什么通用错误?

    此致、

    Rajeshwary

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

    嗨、 Rajeshwary、

    可以在器件被解锁时看到程序存储器、如果我在解锁时写入闪存、则可以对存储器进行编程。 如果锁定、则不会对其进行编程。 一般错误是 Fapi_Error_Fail = 500、        /*通用函数失败代码*/“
    我们确实调用了 Fapi_getFsmStatus ();但我没有检查它返回了什么错误,我会返回给你。

    非常感谢、

    Liam

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

    您好 Liam、

    另外,你可以检查 poFlashStatusWord 的内容后, 它无法验证,这是 Fapi_doVerify () 的参数之一?

    此致、

    Rajeshwary

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

    嗨、 Rajeshwary、

    这是 poFlashStatusWord 的内容。

    Fapi_getFsmStatus 返回 81

    非常感谢、

    Liam

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

    您好 Liam、

    摘自闪存 API 用户指南:

    您是否在写入该扇区以设置写保护掩码之前调用此函数?

    谢谢。此致、

    Charles

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

    您好 Liam、

    [报价 userid=“577401" url="“ url="~“~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1525297/tms320f2800137-flash-write-and-erase-secure-memory/5885812 #5885812“]Fapi_getFsmStatus 返回 81

    这表示您的编程命令由于写入/擦除保护违例而失败。 有关更多详细信息、请参阅闪存 API 用户指南。

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

    尊敬的 Charles:

    是的、我确实调用了这些函数。

    正如我说过的、当 MCU 解锁后、代码可以写入和擦除就可以正常进行。

    MCU 锁定时、这些功能可能是否受到保护? 或者、他们是否需要以不同的方式进行称呼?

    非常感谢、

    Liam

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

    您好 Liam、

    这些保护是否适用于同一区域? 是否正在写入另一个区域?

    谢谢。此致、

    Charles

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

    尊敬的 Charles:

    仅区域 1 和 2 受到保护。 我正在尝试使用测试功能写入区域 55。

    当我尝试写入时、一切都是相同的。 我只需在测试用例之间添加一行代码来解锁或锁定处理器。

    非常感谢、

    Liam

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

    您能否在 闪存 API 函数失败之前检查 FLSEM.SEM 的值?

    --卢克