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.

[参考译文] RTOS/AM5728:QSPI 闪存擦除

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/666342/rtos-am5728-qspi-flash-erase

器件型号:AM5728

工具/软件:TI-RTOS

您好!

我使用的是 IDK-AM5728板、并在无操作系统环境的上下文中参阅 diag 文件夹下的 QSPI_diag.c。

在 diag_qpsi.c 中找到用于擦除块的 API

 S25FLFlash_BlockErase (flashHandle、blockNumber);

但如何在特定偏移时擦除闪存? 假设我需要擦除0x40000和0x1E0000处的闪存。
我是否需要转换块编号中的偏移、或者是否存在将执行相同操作的 API。

Br、Abhinav

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    RTOS 团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Abhinav、

    我们使用名为 Board_eraseBlk 的电路板库中的 API 来实现擦除函数。 我建议您参考在 boot/SBL 文件夹内的以下位置找到的裸机 QSPI 闪存写入器。

    : \packages/ti\boot\SBL\tools\flashWriter\QSPI\src\ SBL_QSPI_writer.c

    \packages/ti\boot\sbl\soc\am57xx\sbl_soc.c

    请注意 、代码 SBL_QSPI_writer.c 中存在对 SBL_qspiFlashWrite 的调用 根据 QSPI 闪存规范、必须在对块进行编程之前擦除该块、因此在函数 SBL_qspiFlashWrite 中、我们读取偏移并将其转换为 blockNum、并在对块进行编程之前擦除这些块。 n`t 定义了一个特定的擦除函数、但是您可以对 SBL_qspiWrite 函数进行加密、并通过消除擦除后对块进行编程的代码来创建 SBL_qspiErase 函数。

    希望这对您有所帮助。

    此致、

    Rahul

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

    Abhinav、

     以下介绍了在 eAM57xx IDK 上使用 QSPI 闪存写入器的步骤:

    我已更新 SBL 闪存写入器、添加了擦除选项以供您参考。  请参阅以下软件包:

    e2e.ti.com/.../sbl_5F00_update.zip

    软件包中提供的文件来自 PDK 软件包中的以下位置。

    pdk_install_path/packages/ti/boot/sbl/soc/am57xx/sbl_soc.c
    pdk_install_path/packages/ti/boot/sbl/soc/sbl_soc.h
    pdk_install_path/packages/ti/boot/tools/flashWriter/QSPI/src/sbl_QSPI_writer.c

    擦除步骤:

    1. FAT 格式化 SD 卡并复制卡上的 ERASE_CONFIG。

    2.连接到 IDK 上的 A15内核、并在软件包中加载和运行.out。

    闪存写入器从 ERASE_CONFIG 中读取擦除配置、并在 擦除操作的指定偏移和指定大小下擦除 QSPI 闪存。

    如果您有任何问题、请告诉我。

    此致、

    Rahul

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

    您好、Rahul、

    我将介绍共享软件包和所需的文件。

    但是、要设置正确的上下文、我的要求是必须在 QSPI_diag.c 的特定偏移处擦除闪存
    由于我们已将此文件 a/c 修改为我们的目的、并且我们将在裸机情况下通过此实用程序代码将 MLO、u-boot 和内核文件写入闪存。
    基本而言、我们要将该二进制文件从 JTAG 加载到 idk 板。 方案中没有 SD 卡。

    现在、正如您还提到的、在写入闪存之前、我们必须首先擦除该扇区。 我们希望实现的同样目标。

    我认为这可能表明我们的目标。

    现在、您能不能用上述参考来告诉我哪些有用。 您的上述帖子是否与我的上下文一致?


    Br、Abhinav


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

    Abhinav、

    QSPI 诊断只是一项功能测试、旨在验证与电路板上 QSPI 闪存的接口。 它不是设计为闪存写入器实用程序。 您可以选择将其用作起点、但我建议使用 QSPI 闪存写入器、因为它也是裸机、 并已从闪存 和引导角度进行了测试。

    闪存写入器只需删除从 SD 卡读取的文件 IO、并用从不同接口读取输入文件的机制进行替换。

    此致、

    Rahul

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

    很抱歉耽误你的回答。

    当我从 SBL_SoC.c 中获取转换详细信息时、该问题得到解决
    为 qpsi_diag.c 及其工作模式移植了相同的实现方案。

    有关使用 QSPI_diag.c 而不是 SBL_QSPI_writer.c 的问题、请了解它们之间的差异、检查 QSPI_Read 和 qpsi_write API、并在内部发现这两个 API 都使用相同的 API。 如果是这种情况、那么我认为这两种情况几乎是相同的。

    Br、Abhinav