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:FEE 驱动器:大于4040字节的块大小会导致数据损坏

Guru**** 2451970 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/1266173/tms570lc4357-fee-driver-block-size-greater-than-4040-bytes-results-in-corrupted-data

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

您好!

我遇到了一个问题,当块大小配置为大于4040读取导致数据损坏. 在4040字节后,数据被损坏。 当块大小配置为最高4040时、一切都正常工作。 在本例中、每个虚拟扇区都分配给一个闪存扇区(4KB)。 我有32个虚拟扇区和16个大小为4095的块。 因此、我猜我处于部门规模之内。 任何帮助都会被感激.  

此致

乌沙·约加帕奈克

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

    尊敬的 Usha:

    这是唯一预期的行为。

    实际上、将会有一个虚拟扇区标头字节、并且还会存在数据块标头字节。  

    虚拟扇区标头字节的大小为32个字节、数据块标头大小为24个字节 、因此总共为56个字节。 如果将其添加到4040个字节、则它将与4096个字节完全匹配(这是一个物理扇区大小)。

    --

    谢谢。此致、
    Jagadish。

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

    Jagadish、您好!

    谢谢你的答复。 您的解释会将其清除。 但我仍然遇到问题、要将大数据写入/读取到多个块中。

    我目前的配置是32个虚拟扇区, 16个大小2048块。

    但是、每当我尝试写入10个或更多个块时、读取数据会失败、并且随机块的错误代码 block_invalid。 尽管首次尝试始终失败、但多达9个块的读取/写入工作正常。 我已经附加了 ti_fe_cfg.c 和 ti_fe_cfg.h。 您能看一下吗?

    e2e.ti.com/.../6237.ti_5F00_fee_5F00_cfg.he2e.ti.com/.../6237.ti_5F00_fee_5F00_cfg.c

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

    尊敬的 Usha:

    您能否提供完整的项目来在我结束时触发和调试该问题?

    --

    谢谢。此致、
    Jagadish。

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

    e2e.ti.com/.../8524.eeprom_5F00_bank_5F00_rw_5F00_example.zipI已附加了项目文件。 我正在使用 TMS570LC43x LaunchPad 进行测试。 您能看一下吗?  

    此致

    宇沙

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

    尊敬的 Usha:

    您的项目看起来非常混乱。

    首先、在 HALCoGen 中、您配置了一个大小为32字节的块

    2.但在代码中创建了一个2048字节的缓冲区

    3.再说一次、在代码中、即使您在 HALCoGen 中声明了一个块、也会尝试写入10个块。

    --

    谢谢。此致、
    Jagadish。

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

    Jagadish、您好!

    某个操作。 这些是我的初始配置。 后来我手动配置了/edited ti_fee_cfg.h 并且 ti_fe_cfg.c 没有使用 halcogen 来重新生成代码。 无论如何、我已经添加了更新的项目文件。 这应该会有所帮助。

    诚挚的问候,谢谢

    宇沙  

    e2e.ti.com/.../5344.eeprom_5F00_bank_5F00_rw_5F00_example.zip

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

    尊敬的 Usha:

    我将不在办公室、直到这个星期一、因此请预计会有一些延迟、以便进行进一步更新。

    --

    谢谢。此致、
    Jagadish。

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

    Jagadish、您好!

    是否有关于此问题的任何更新?

    此致

    宇沙

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

    尊敬的 Usha:

    我了解了问题的根本原因!

    所有数据块的大小不能超过虚拟扇区长度。 这意味着所有数据块的大小应小于一个虚拟扇区大小。

    在您的代码中、我们没有遵循此条件。 这意味着如果我们计算每个线性调频脉冲的

    所有数据块的大小=(数据块数*一个数据块的大小)+(数据块数*数据块标头的大小)

                      =(16 * 2048)+(16 * 24)= 33152字节= 32.375KB

    但是、我们的配置中的一个虚拟扇区大小等于一个物理扇区大小、即4KB。

    您还可以在下面看到类似的问题主题:
    (+) TMS570LS3137:TI FEE 驱动器将大数据读取/写入多个块的问题-基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛

    此处客户也执行了相同的操作、他声明了16个块、每个块2048字节、4个虚拟扇区、每个虚拟扇区大小为32KB。 由于总块大小大于虚拟扇区大小(32.375KB >32KB)、他最终会出现相同的问题。

    后来、他减小了数据块大小、同时将两个物理扇区映射到一个虚拟扇区(在他的器件中、每个 物理扇区的大小为32KB)、现在、虚拟扇区的总大小变为64KB、远远大于块总大小、然后他的代码运行良好。

    因此、请在您的代码中也执行相同的操作。 请记住、对于 LC4357、物理扇区大小非常小、即 e.4KB。 因此、请在进行配置时确保所有数据块大小都应小于虚拟扇区大小。

    --
    谢谢。此致、
    Jagadish。

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

    Jagadish、您好!

    谢谢详细的解释。 它有助于解决我的问题。

    此致

    宇沙