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.

[参考译文] 编译器/TMDSRM48HDK:FFE 异步读取问题

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/844786/compiler-tmdsrm48hdk-ffe-async-read-issue

器件型号:TMDSRM48HDK
主题中讨论的其他器件:TMS570LS1224HALCOGEN

工具/软件:TI C/C++编译器

您好、TI、

我对 TI_fee_read -函数有疑问:

STD_ReturnType TI_fee_read (
uint16 BlockNumber、
UINT16时钟偏移、
uint8* DataBufferPtr、
uint16长度)

我无法读取特定块编号的数据。 例如、我配置了10个 FEE 块、这些块具有不同的数据大小、可以在 ti_fee_cfg.h 中指定 通过使用异步写入作业并在存储器浏览器上进行评估、在不同的块上写入几次后、我想回读我已经写入到 FEE 块中的所有虚拟数据。

但现在、我始终从用于存储数据内容的最新块中读取数据内容。 我是说 TI_FEE 读取的签名是直接的、但在读取作业后更改"BlockNumber"不会导致任何结果。 我总是能得到已写入费用的最新数据。

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

    您好!

    您是否定期致电 TI_FEE 维护?

    TI_fee_read 和 TI_fee_WriteAsync 异步读取和写入数据、应定期调用 TI_fee_MainFunctino 以完成读取/写入异步操作。

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

    您好、Miro、

    是的、它被定期调用。已实现的代码基于 TI 示例。

    oResult=TI_fee_read (1U、0U、READ_DATA[0U]、10U);
    操作

    TI_fee_MainFunction();
    delay();
    STATUS=TI_FEE _GetStatus (0);

    while (状态!=空闲);

    我希望在 FEE 中从块编号1读取10个字节、但我始终会获得 FEE 中写入的最新数据、即使我使用不同的块编号执行相同的步骤(这里的块编号2)

    oResult=TI_fee_read (2U、0U、READ_DATA[10U]、10U);
    操作

    TI_fee_MainFunction();
    delay();
    STATUS=TI_FEE _GetStatus (0);

    while (状态!=空闲);

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

    您好!

    遗憾的是、我的位置没有相同的 MCU、但我使用 TMS570LS1224进行了测试、一切都按预期工作。 是否可以共享您的项目以便我查看您的设置和代码?

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

    您好、Miro、

    我从头开始创建了一个新项目、并将其与以前的项目设置进行了比较。 看起来我在 TI FEE 块配置中接触过几个参数(例如,TI FEE 指南声称的数据集当您不处理 Autosar 时(这是情况),您可以将其置为零,因此我使用了其他几个参数) 与 Halcogen 创建的模板不对齐。  

    现在、当我围绕模板开发时、一切都按预期工作。

    我有另一个与此主题相关的问题。 当应用程序返回到需要重新写入已编程的块的时间点时,我是否可以使用任何 API 来抽象出该问题,或者我是否需要遵循 TI 的特定和推荐顺序,例如:

    1) 1)失效/擦除

    2) 2)再次将新数据写入块

    当我尝试将 Direct AppeloceWrite 作业执行到已 编程的块编号时、我可以在 Memory 浏览器中看到预期的数据内容 未写入、预期相应块的标头状态会更改为"0xFFFFFF000000000000"-这意味着无效块。

    TI 建议采用哪种程序来解决此问题?

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

    有关以下问题的任何更新

    当应用程序返回到需要重新写入已编程的块的时间点时,我是否可以使用任何 API 来抽象出该问题,或者我是否需要遵循 TI 的特定和推荐顺序,例如:

    1) 1)失效/擦除

    2) 2)再次将新数据写入块

    当我尝试将 Direct AppeloceWrite 作业执行到已 编程的块编号时、我可以在 Memory 浏览器中看到预期的数据内容 未写入、预期相应块的标头状态会更改为"0xFFFFFF000000000000"-这意味着无效块。

    TI 建议采用哪种程序来解决此问题?

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

    您好!

    TI_fee_WriteSync 和 TI_fee_WriteAsync 将数据块写入 FEE。 当您更新块时、它不一定会擦除闪存。 它可以制作块的第二个副本、然后使旧副本无效。 它将执行此操作、直到它使用虚拟扇区内的所有闪存。 当您填充虚拟扇区时、FEE 仅将最新(有效)块复制到新的虚拟扇区、然后它可以擦除另一个块、以便可以再次使用。
    当您“更新”数据块费用时,驱动程序将在具有相同数据块编号的不同物理地址写入数据块费用。

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

    感谢您、这是一个缺失的链接