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.

[参考译文] TMDS64EVM:闪存驱动程序 API (Flase_eraseSector)无法正常工作。

Guru**** 2455560 points
Other Parts Discussed in Thread: TMDS64EVM

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1479375/tmds64evm-flash-driver-api-flase_erasesector-is-not-working-correctly

器件型号:TMDS64EVM

工具与软件:

我导入了 ospi_flash_io 应用程序并在 TMDS64EVM 板中成功运行。

在此应用中、要写入闪存、顺序如下。

flash_offsetToBlkPage (gFlashHandle[CONFIG_FLASH0]、offset、&blk、&page);
Status = Flash_eraseBlk (gFlashHandle[CONFIG_FLASH0]、blk);

STATUS = Flash_WRITE (gFlashHandle[CONFIG_FLASH0]、OFFSET、gOspiTxBuf、APP_OSPI_DATA_SIZE);

我必须写入闪存只擦除扇区而不是块。

因此、我按如下方式更新了上述内容、

Flash_offsetToSectorPage (gFlashHandle[CONFIG_FLASH0]、OFFSET、&SECTOR、&PAGE);
状态= Flash_eraseSector (gFlashHandle[CONFIG_FLASH0]、扇区);

STATUS = Flash_WRITE (gFlashHandle[CONFIG_FLASH0]、OFFSET、gOspiTxBuf、APP_OSPI_DATA_SIZE);

当我运行上述代码时、闪存写入错误发生。 我发现 Flase_eraseSector 工作不正常。 当我在执行 Flash_eraseSector 之后读取闪存时、几个值不是0xFF。

请告诉我如何写入仅擦除扇区的闪存。

此致、

Sangjoon

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

    您好!

    感谢您的提问。

    论坛上也出现了类似的问题、我一直在努力使另一位客户能够执行擦除扇区。

    我已经制定了启用扇区擦除的权变措施、但这在具有 QSPI 闪存器件 S25HL512T: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1433720/am62a3-norflash-s28hs512t-sector-erase-failed/5677911#5677911的 TI EVM AM243-LP 上

    您可以查看上面的答案作为参考、但我将快速总结一下为什么这不起作用

    因此、在我们的 SDK 中、默认情况下会初始化闪存驱动程序以使闪存部分(在本例中为 S28HS512T)在均匀模式下工作。

    统一模式意味着、闪存具有256KB 的块大小、且闪存中没有大小为4KB 的扇区。 因此、4KB 的扇区擦除命令失败。

    我将在其他论坛中修改该代码、一旦该代码完成、将在此处告知您。

    此致、

    Vaibhav

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

    您好!

    以下是有关如何为闪存器件 S28HS512T 启用扇区擦除的步骤。

    请按照此处提到的简单步骤操作: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1433720/am62a3-norflash-s28hs512t-sector-erase-failed/5687747#5687747

    这应该会解析您的查询。

    此致、
    Vaibhav

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

    您好、Valbhav

    我标记了"已解决我的问题"、但实际上并没有完全解决。

    我使用 ospi_flash_io 示例应用程序进行了测试。

    这是函数调用的序列。

    Flash_offsetToSectorPage (gFlashHandle[CONFIG_FLASH0]、OFFSET、&SECTOR、&PAGE);
    状态= Flash_eraseSector (gFlashHandle[CONFIG_FLASH0]、扇区);

    STATUS = Flash_WRITE (gFlashHandle[CONFIG_FLASH0]、OFFSET、gOspiTxBuf、APP_OSPI_DATA_SIZE);

    我也将偏移地址定义为 0x03FE0000

    当我第一次运行此应用程序时、我可以看到"所有测试都已通过!!"

    并关闭电路板电源、然后将其转回并再次运行、应用程序一直处于 Flash_eraseSector 函数的挂起状态。

    然后断电,并运行它的第三次,我可以看到"所有测试都通过了!!"

    测试结果是交替出现的。 奇怪的时间,过去,甚至有时它永远挂起。

    我应该在哪个部分进行查看?

    如果您有任何可疑器件、请告知我。

    谢谢!

    Sangjoon

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

    您好!

    我在 TI EVM 设置中看不到这种行为、因此如果不知道很少的值、我就无法进行评论。

    因此、我需要您与我分享以下陈述在工作和非工作案例中的价值:

    您可以在我要求您实现的详细步骤中找到它的定义。 我在上面对 S28HS512T 的回答之一中提到了这一点。

    请填写:  

    #include

    以确保日志记录语句输出到控制台。

     我还假设您在重新编译应用之前正在重新编译库、以确保包含并考虑 flash_nor_ospi.c 中的更改。

    [报价 userid="617191" url="~/support/processors-group/processors/f/processors-forum/1479375/tmds64evm-flash-driver-api-flase_erasesector-is-not-working-correctly/5692388 #5692388"]APP_OSPI_DATA_SIZE [/QUOT]

    我假设这是2048字节?

    此致、

    Vaibhav

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

    我 在这方面还有一个猜测。

    您是否碰巧使用 ospi_flash_io、但您的文件 ospi_flash_io.c 中仍存在以下逻辑?

    offset = APP_OSPI_FLASH_OFFSET_BASE +(flashAttrs->blocksize*2);

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

    这是我的第一个试验结果。

    配置寄存器1的新值:6
    配置寄存器2的值:11
    配置寄存器3的值:0
    配置寄存器4的值:168
    所有测试均已通过!!

    以下是第二个结果。

    [MAIN_Cortex_R5_0_0]配置寄存器1的新值:6.
    配置寄存器2的值:11
    配置寄存器3的值:8
    配置寄存器4的值:168

    看起来寄存器3值从0变为8。

    请告诉我我必须查看代码的哪个部分?

    结果来自以下修改。 我将 blocksize 修改为 sectorSize。

    offset = APP_OSPI_FLASH_OFFSET_BASE +(flashAttrs->blocksize*2);to

    offset = APP_OSPI_FLASH_OFFSET_BASE +(flashAttrs->sectorSize*2);

    如前所述、APP_OSPI_DATA_SIZE 为2048

    谢谢你

    Sangjoon

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

    非常感谢您提供这些值。 您似乎已经按照我针对闪存部件 S25HL512T 所述的步骤操作。

    我确实提到了 S28HS512T 的步骤、您需要遵循这些步骤、而不是另一个步骤。 这里也是: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1433720/am62a3-norflash-s28hs512t-sector-erase-failed/5687747#5687747

    由于您使用的是 S28HS512T、因此请勿遵循 S25HL512T 的步骤。  

    希望这对您有所帮助。

    此致、

    Vaibhav