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.

[参考译文] AM2432:将数据从 MCSPI 上的辅助闪存复制到 OSPI 上的主闪存时出现问题。

Guru**** 2985280 points

Other Parts Discussed in Thread: UNIFLASH, SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1660231/am2432-issue-during-copy-of-data-from-secondary-flash-on-mcspi-to-primary-flash-on-ospi

器件型号: AM2432
Thread 中讨论的其他器件: UNIFLASH、 SYSCONFIG

您好、

我们在 OSPI 接口上将 AM243x 与定制的 QSPI 闪存 A (GigaDevice GD25Q64E) 搭配使用。 我们已经创建了一个自定义 flasher_JTAG_uniflash 工程、用于使用 uniflash 工具对闪存进行编程、并创建一个自定义 SBL 用于将应用程序从自定义闪存复制到 RAM。 这种方法已经很好了。 此外、在 SBL 中写入闪存也是可以的。

在第一步中、对于固件升级过程、我将固件映像从闪存 A 中的某个位置复制到闪存 A 中的另一个位置、反之亦然。 这是按部门进行的、没有任何问题。

第二步、我们在 MCSPI (SPI2) 上连接了第二个相同类型的自定义闪存 B (GigaDevice GD25Q64E)。 目标是将固件映像从闪存 B 中的位置复制到闪存 A 中的位置、反之亦然。 对于复制、我使用相同的代码、但驱动程序用于对闪存 B 进行读取/写入、因为它通过 MCSPI 而不是通过 OSPI 接口进行连接。

现在、在上述设置中、我在写入闪存 A (OSPI) 期间遇到以下问题:
在 OSPI_waitIndWriteComplete() 中、代码无法检测进程的完成并返回错误。 现在、我怀疑 MCSPI 的通信会以某种方式干扰到与 OSPI 的通信。 但我无法理解。 MCSPI 和 OSPI 绝不会并行。 您是否认为此设置中可能会出现什么问题? 两个外设之间共享什么? DMA?

为了便于参考、我添加了 syscfg 文件。

谨提前感谢。
Peta

example.zip 

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

    尊敬的 Peta:

    我已将您的线程分配给我们的领域专家。 请在一天或两天内回复。

    此致、

    Tushar

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

    您好、

    我想知道是否采用了您提到的以下配置:

    第二步、我们在 MCSPI (SPI2) 上连接了第二个相同类型 (GigaDevice GD25Q64E) 的自定义闪存 B。

    问题 1:  当从闪存 B 读取到本地 RX 缓冲区时、MCSPI 读取是否正常?

    问题 2:  考虑到 QSPI 协议格式与 MCSPI 协议不同、我认为不应该这样做。 如果可以、请告诉我您是如何成功完成读取的?

    您有什么想法在这个设置中可能会出现什么问题吗? 两个外设之间共享什么? DMA?

    请允许我检查随附的 SysConfig 文件、并在稍后更新您。

    此致、

    Vaibhav

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

    尊敬的 Vaibhav:

    感谢您的答复。
    Q1:是的。 通过 MCSPI 从闪存 B 读取工作正常。
    问题 2:我使用自己的具有适用于 GD25Q64E 的闪存命令 的例程、如“读取数据“(0x03)。
        这些例程使用 
    TI 驱动程序代码的 MCSPI_TRANSFER ()。

    此致、
    彼得

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

    尊敬的 Peta:

    我看到、在 SysConfig 文件中、GPIO 中有某些引脚、它们也在 MCSPI 部分下声明。 你知道同样的吗? 这将导致引脚的资源分配问题。

    请告诉我您的想法。

    此致、

    Vaibhav

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

    尊敬的 Vaibhav:

    您是指 CS? 我通过软件控制 CS。 到目前为止、我不了解如何通过 MCSPI 外设使 CS 激活超过数百字节。 但这是另一个故事。 也许你也可以在这里给我一个提示。 但我认为这与上述问题无关。

    我认为我发现了 OSPI/QSPI 问题:我认为在 MCSPI 传输期间有缓冲器溢出、这会覆盖一些与 OSPI(例如 gOspiObjects)相关的东西。 我想你可以停止你的调查。 感谢你的帮助。  

    此致、
    Peta