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.

[参考译文] TMS320F28374S:区域1 OTP 闪存和 ECC 程序的使用

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/589764/tms320f28374s-usage-of-zone-1-otp-flash-and-ecc-program

器件型号:TMS320F28374S

您好!

下面有一张显示区域1 OTP 映射的图片。请参阅。

问题1:如何在将(烧烤)数据加载到 OTP 中时处理 OTP 中的已接收位置?

问题2和3:如何计算 Z1-LINKPOINTER 的最终值 、请参阅 Z1-LINKPOINTER1、 Z1-LINKPOINTER2和 Z1-LINKPOINTER3? 你会告诉我阿尔哥里特姆吗?

问题4:ECC 组合为64位数据+ 8位 ECC。技术参考手册中的 Z1-LINKPOINTER 1、Z1-LINKPOINTER 2、Z1-LINKPOINTER 3不受 ECC 保护。但位置0x78002、0x78006

和0x7800A 在 Zx-LINKPOINTERx ECC 组合的范围内。我认为这些保留位置也不受 ECC 保护。对吗?

问题5:代码或数据预取是否 会触发 ECC 错误中断?例如:闪存部分1是已编程的数据和 ECC。但闪存部分2不是。当 在闪存部分1的边界位置运行时、CPU 可能会预取闪存部分2。

您好!

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

    您好 XIN、

    1.不要将任何内容分配/编程到这些保留位置。  

    2/3. 我将请我们的安全专家为您回答这个问题。  希望您浏览了 TRM 章节。  

    4、用户不能对地址0x78000 - 0x7800B 的 ECC 进行编程。  F2837xS 闪存 API 还阻止针对链路指针位置(包括此范围内的非链路指针位置)对 ECC 进行编程。  无论如何、用户不应在保留位置对任何内容进行编程。

    5.是的,你是对的。  预取机制可能会在您介绍的情况下导致 ECC 错误。

    谢谢、此致、

    Vamsi

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

    以下问题-

    [引用]问题2和3:如何计算 Z1-LINKPOINTER 的最终值 请参阅 Z1-LINKPOINTER1、 Z1-LINKPOINTER2和 Z1-LINKPOINTER3? 你会告诉我阿尔哥里特姆吗? [/报价]

    在 ZX_LINKPOINTER 寄存器中捕获最终(已解析)链接指针值。 使用此选项、用户需要计算有效区域选择块的地址。 请参阅 TRM 中的"2.13.1.5.1 C 代码示例以获取 Zone1的区域选择块 Addr "部分 、了解相同的算法。

    此致、

    Vivek Singh

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Vamsi、
    谢谢~
    XIN
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大家好、Vivek、
    我已经知道如何通过虚拟读取某些位置来更新 ZX_LINKPOINTER 寄存器。然后、我可以获取 ZX_LINKPOINTER 寄存器。此外、已知用户需要使用 ZX_LINKPOINTER 寄存器的值计算有效区域选择块的地址。
    但对我来说、信息不足。
    我想使用 F2837xS 闪存 API 来执行一个刻录工具。有时、我将获得一个应用程序映像(hex 文件或.out 文件) 已链接 Zx-LinkPointer 段(Z1-LINKPOINTER1、Z1-LINKPOINTER2、Z1-LINKPOINTER3)、已链接多组 ZONESelectBlock (16x16OTP)。对于重新编程的器件(已编程某些 ZONESelectBlock (16x16Bits)组)、也许我应该知道哪些 Z16x1ONESelectBlock (16Bits)应加载到 Z161组中。
    因此、我应该使用用户 Zx-linkpointerx 设置(Z1-LINKPOINTER1、Z1-LINKPOINTER2、Z1-LINKPOINTER3)计算编程器中的最终(已解析)链接指针值。
    您能告诉我如何在编程器中实现它吗?
    谢谢~
    XIN
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 XIN:

    我不理解您的疑问-

    您是否询问如何对已经编程了链接指针和安全设置的器件进行编程? 如果是、则需要注意两个事项-

    如果需要更改安全设置(例如、对新密码值或存储器配置进行编程)、则需要解锁器件、然后将链接指针值更改为下一个区域选择块、并 在新的区域选择块位置对新的安全设置进行编程。

    如果您想在不更改安全设置的情况下对闪存进行编程、则有两个选项:

    1. 解锁器件并对闪存进行编程。
    2. 如果解锁器件不是选项、则需要让编程器在 其中一 个安全闪存扇区中进行编程、并 根据软件启动选项复制相同内容以保护 RAM、然后运行该选项以将新映像编程到安全闪存中。

    希望这对您有所帮助。

    此致、

    Vivek Singh

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