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 Fapi 使用问题

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1301682/tms570lc4357-tms570lc4357-f021-fapi-usage-questions

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

大家好!  

我已经尝试使用 TMS570LC4357及其闪存组7自定义 EEPROM 仿真。 我已阅读 TI 提供的有关 Fapi 的几个文档、例如 F021参考手册和 高级 F021闪存 API 擦除/编程使用

但我不清楚 Fapi_issueProgrammingCommand 函数的 OMode 参数有何差异。 我找不到一个文档对它进行了清楚的解释。 您能帮助我了解一下 Fapi_Data Fapi_Auto SceCalculation 和在这两种模式之间切换时必须获得的观察结果之间的区别吗? 这不是现在 Fapi_Data 所必需的,但如果你有这方面的知识,你也可以解释其他 oModes 如 Fapi_Ecc 和 arti cc。 很抱歉、如果已经有一份我没有注意到的文档  

此致

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

    Franklin、您好!

    FAPI 编程模式:

    1.  Fapi_Auto E.ccGeneration:
                            这将对闪存中提供的数据部分以及自动生成的 ECC 进行编程。 这意味着"Fapi_issueProgrammingCommand" API 将在内部计算所提供数据的 ECC 并将该 ECC 与我们提供的数据一同编程至相应的位置。

    2. Fapi_Data :  
                    这种模式将只对闪存中指定地址的数据部分进行编程。 这意味着 "Fapi_issueProgrammingCommand" API 不会为您的数据计算任何 ECC 并且仅对数据进行编程。

    3. Fapi_Ecc:  
                    这个模式将只在指定地址上编辑闪存中的 ECC 部分。 这意味着 "Fapi_issueProgrammingCommand" API 将仅采用 ECC 部分并在指定地址对相应的 ECC 进行编程、并且在此模式下不会对任何数据进行编程。

    4. Fapi_Data Ecc:  
                       这将在指定地址处对闪存中提供的数据和 ECC 进行编程。 这意味着与"Fapi_issueProgrammingCommand" API 内部计算提供数据和 Fapi_Auto 的"ECCGeneration"模式不同、我们需要手动为函数提供数据和相应的 ECC、该函数会将它们编程到指定的地址中。

    在所有模式中、最可取的模式是"ECCEGeneration"、因为在该模式下、将在内部计算 Fapi_Auto、并将程序设置为指定模式。 因此、在大多数情况下、客户仅使用此模式。

    --
    谢谢。此致、
    Jagadish。

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

    您好 Jagadish、感谢您的回复

    我希望能够针对每个可用地址以字节的形式将数据写入 EEPROM 组7。 例如、我想将0x45写入地址0xF02000000、然后将0x46写入地址0xF02000001。  当我尝试使用 AutoEccCalculation 模式实现这样的方案时、我只能以64位宽进行写入、例如 、当我将0x45写入0xF02000000时、我要写入的下一个数据可以写入0xF02000008。 但当我切换模式时、Fapi_Data I 可访问和写入闪存组7中的每个地址。 我不明白为什么会发生这种情况。 您能协助我完成吗?

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

    Franklin、您好!

    我也可以在我这边看到您提到的行为。

    给我更多的时间进行分析并向您提供最新情况。

    --
    谢谢。此致、
    Jagadish。

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

    Franklin、您好!

    这是由于 ECC、我们知道每个64位数据都将有一个8位 ECC。 这就是我们无法通过字节访问在该器件中写入字节访问的原因。

    我在 TMS570LS3137中测试了相同的场景、没有出现任何问题、因为此器件中的 ECC 在默认情况下不会启用。

    即使您可以按字节访问、但在这种模式下写入 Fapi_Data 也会造成问题。 您的数据将损坏、因为此器件中的 ECC 始终处于仅启用状态、我们无法将 其禁用。 因此即使我们使用"ECC"模式写入数据、我们的数据位也会发生翻转、因为 Fapi_Data 区域的右侧全部为 FF、与我们写入的数据不匹配。 这可能会导致单个位错误、并且我们的数据将损坏。

    --
    谢谢。此致、
    Jagadish。

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

    Jagadish、您好、感谢您的答复。

    我明白您提到的内容、并且我也估计过、这个问题源于 ECC 计算。 在我的自定义 EEPROM 仿真中、我将尝试改进通用驱动器、此驱动器同时适用于 TMS570LC4357和 TMS570LS3137、因此我必须克服这个问题。 是否有任何权变措施来解决此问题? 我在 Fapi 中看到的函数是 Fapi_Disable EccCalculation、但当我尝试在代码中添加此函数时、它无法帮助我解决此问题。 我真的需要通过某种方式解决这个问题、因为我的客户在他的产品中同时使用了这两个 MCU。 如果可以在 TMS570LC4357 (可能为汇编级)中关闭 ECC 计算、我真的需要知道如何操作。  

    谢谢、此致

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我在 Fapi 中看到的函数是 Fapi_Disable ccCalculation,但当我尝试在我的代码中添加此函数时,它无法帮助我解决此问题。 我真的需要通过某种方式解决这个问题、因为我的客户在他的产品中同时使用了这两个 MCU。 如果可以在 TMS570LC4357 (可能为汇编级)中关闭 ECC 计算、我真的需要知道如何操作。  [/报价]

    在 TMS570LC4357中无法禁用 ECC、因此它将始终仅处于已启用状态。