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.

[参考译文] TMS570LC4357:TMS570LC4357:F021 OTP 编程示例代码

Guru**** 2390755 points
Other Parts Discussed in Thread: HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1280308/tms570lc4357-tms570lc4357-example-code-for-f021-otp-programming

器件型号:TMS570LC4357
主题中讨论的其他器件:HALCOGEN

我能够对组0和组1中的闪存以及 EEPROM 进行编程、但无法对 OTP 进行编程。   我需要启用哪一个银行、0、1或7 (似乎都与此无关)?  我需要启用一些扇区、还是足够使用 Fapi_enableBanksForOtpWrite?  我没有找到对 OTP 进行实际编程的示例。  我有一个示例吗?  

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

    尊敬的 Darryl:

    它与仅进行组写入类似、但不同之处在于 、您无需在写入之前进行任何先初始化或擦除操作。  

    我从来没这么做、但据我了解、您可以直接向"Fapi_issueProgrammingCommand"提供 OTP 区域地址和数据。

    但是、在写入 OTP 区域时、您必须确保以下内容:

    1.如果您进行写入以对客户 OTP 进行编程、请确保您没有错误地写入 AJSM (高级 JTAG 安全模块)的位置(0xF0000000-0xF000000F)、 因为这 会锁定器件。 您可以写入从地址0xF0000010开始的数据。

    2.每个闪存存储体的客户 OTP 大小为4K。
    3、用户 OTP 不能 被擦除。
    --
    谢谢。此致、
    Jagadish。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    1.是否需要 Fapi_initializeFlahsBanks(SSYS_CLK_FREQ)?

    2.我需要 Fapi_setActiveFlashBank( ) ,如果是,那是什么银行?

    3.我需要从 RAM 执行该代码还是从特定的闪存组执行该代码?

    这就是为什么一个示例会如此有用的原因。

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

    尊敬的 Darryl:

    就像我说的,我以前从来没有这样做过。 请给我时间、我将尝试为客户 OTP 写入创建一个示例。

    --
    谢谢。此致、
    Jagadish。

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

    尊敬的 Darryl:

    使用以下线程创建了一个示例项目:

    (+) CCS/RM46L852:OTP 编程-基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛

    我成功地写入了客户 OTP、这里是我的项目:

    e2e.ti.com/.../Customer_5F00_OTP_5F00_Write_5F00_Test_5F00_LC4357.zip

    --
    谢谢。此致、
    Jagadish。

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

    1.根据项目的 HalCoGen 文件、你运行在300MHz 上、但是 SYS_CLK_FREQ 被设定为150。  对 OTP 的写入速度过快是否存在问题?

    2.我的代码正在150MHz 运行,如果我使用您的示例代码,它会在 Fapi_Initialize Banks(150 )中挂起。  如果我改为指定75MHz、则对 OTP 的写入有效、但代码在等待 Fapi_Status_Fsm 45y 时挂起。  是否有一些其它匹配 tor OTP 的 HalCoGen 设置?

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

    尊敬的 Darryl:

    1. 根据您项目的 HalCoGen 文件、您在300MHz 上运行、但是 SYS_CLK_FREQ 被设定为150。  对 OTP 的写入速度太快是否存在问题?

    Fapi_initializeFlashBanks 函数的参数是 HCLK 频率、而不是 GCLK 频率。

    因此、我通过了150摄氏度的测试。

    2. 我的代码在150MHz 运行、如果我使用您的示例代码、它会在 Fapi_Initialize Banks(150 )中挂起。  如果我改为指定75MHz、则对 OTP 的写入有效、但代码在等待 Fapi_Status_Fsm 45y 时挂起。  是否有其它一些与 tor OTP 匹配的 HalCoGen 设置?

    您应该传递 HCLK 频率。

    --
    谢谢。此致、
    Jagadish。

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

    为了重新迭代#2, 我的代码正在150MHz 运行,如果我指定75MHz (HCLK 频率),则对 OTP 进行写入工作,但代码会挂起。  实际上结束在未定义的指令陷阱中、但 OTP 被写入。  使用另一个示例中的这些函数、闪存编程代码从 RAM 运行

    _APIcopy2RAM_(&apiLoadStart、&apiRunStart、&apiLoadSize);
    _copyAPI2RAM_(&constLoadStart、&constRunStart、&constLoadSize);

    我能够在 Bank0和 Bank1以及 EEPROM 部分对代码闪存进行编程、不会有任何问题。  未使能 MPU。  访问 OTP 还需要执行其他操作吗?

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

    如果我在 RAM 中单步执行 Fapi_issueProgrammingCommand 函数、则该函数会成功并成功返回。  如果我让它运行、我会得到非法指令陷阱。 这似乎是高速缓存问题、但高速缓存未启用。

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

    尊敬的 Darryl:

    您说得对、如果我们进行了分步调试、它会正常工作、在连续运行期间、它会以"prefetchEntry"结束。

    我尝试了不同的方法来更改 MPU 设置、但这些方法都没有帮助、也不知道为什么会发生这种情况。

    让我与我的高层管理人员讨论一次,并提供有关的最新资料。

    --

    谢谢。此致、
    Jagadish。

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

    尊敬的 Darryl:

    还没有机会讨论、我会尽快讨论。

    --

    谢谢。此致、
    Jagadish。

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

    尊敬的 Darryl:

    我与我的高层管理人员讨论过,甚至他也不知道为什么这一问题会发生。

    --

    谢谢。此致、
    Jagadish。

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

    Jagadish、

      我也遇到了与安全库类似的问题 、在这里、用于测试闪存的 RAM 代码 sl_Sel4573 Test_Flash 看上去与调试器一起工作、但是在没有调试器的情况下、从冷复位运行时会发生故障(或崩溃)。  这可能是相关的问题吗?   sl_Selevn Test_Flash 从 HL_sys_startup 内部运行、无 MPU 或缓存。

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

    尊敬的 Darryl:

    您能提供一个最简单的项目来在我结束时触发问题吗?

    您能否同时提供您所讨论问题的一些屏幕截图?

    --

    谢谢。此致、
    Jagadish。