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.

[参考译文] AM4377:以 XIP 模式在 NOR 闪存中保存数据

Guru**** 2551110 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/604048/am4377-saving-data-in-nor-flash-in-xip-mode

器件型号:AM4377

工具/软件:TI-RTOS

您好!

我制作了一个定制板、可与 XIP 上的 SYS/BIOS 配合使用(但与 IDK 完全相同、但器件后缀除外。。。(我使用的是 MX66L51235F'Z2I'。)

因为我使用 XIP、所以我不能使用 Board_readFlashStorage()、Board_writeFlashStorage()和 QSPI_lib.c 中的说明

我需要在电路板中保存一些数据、因此我测试了该代码。

MAIN ()

(笑声)
      *(volatile int*)(0x3001F000)+= 1;

(笑声)

BIOS_start();

(笑声)

task()

while (1)
      CONSOLEUtilsPrintf ("%4U\t"、*(volatile int*)(0x3001F000));

(笑声)

重新加电时、我预期的计数值会增加、但它的值为0。

我应该在闪存写入之前执行一些操作吗? 如果是这样、如果没有库函数、我该怎么做?

我读了3/4字节地址模式设置的内容、但这让我感到困惑。(目标地址低于0xFFFFFF..)

(如何向闪存发送命令? 我一直在使用闪存、代码位于闪存中、是否没有问题?)

我使用了类似这样的 memcpy()函数,但数据未保存(但在断电前似乎成功了,数据在上电后消失了。)

memcpy (volatile int*) destination、(char*) data、datasize);

我无法使用 L3构建、因为应用程序大小超过 RAM 大小。

谢谢、

黄。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    RTOS 团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    您能否弄清楚如何在 XIP 应用中使用 QSPI 闪存?
    如果我可以在 XIP 应用中使用它、如何擦除块?
    我如何在闪存中写入数据以永久使用它?
    或者、请给我一些您想知道的东西。
    谢谢你。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    IDK AM437x EVM 将 MX66L51235FMI-10G 用于 QSPI。 有 QSPI 驱动程序示例项目 QSPI_FlashReadWrite 示例应用程序。 该测试按顺序调用 SPI_INIT_v1、SPI_PARAMS_INIT (默认)、SF25FL_OPEN。

    然后、 它后面跟随 S25FLFlash_BlockErase、SF25FL_bufferWrite、SF25FL_bufferRead API 调用、以将模式写入 QSPI 并读回。 这些函数在源代码中的 packages/ti\drv\spi\examples\QSPI_flash\src\Flash_S25FL 中实现、而不是 QSPI 库。

    我不知道 MX66L51235FMI 和 MX66L51235F'Z2I'之间的区别、但它看起来几乎相同。 因此、我希望 Flash_S25FL.c 代码也可以在您的电路板上使用。

    我不知道您是如何知道数据被写入 QSPI 的。 然后进行下电上电、您发现数据为零。 数据是真的写入到那里、但回读问题还是根本没有发生数据写入?

    对于这里的 IDK、我知道图形如下所示。 然后对电路板进行下电上电、再次运行相同的程序、并在 SF25FL_open()之后停止 A9内核。 然后、我在 CCS 窗口中查看了地址0x30000000、以确保该模式仍然存在。

    您是否能够执行同样的操作来回读?

    此致、Eric