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.

[参考译文] TDA4VM:将 QSPI NOR 闪存连接到 MCSPI

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/924827/tda4vm-connecting-qspi-nor-flash-to-mcspi

器件型号:TDA4VM
主题中讨论的其他器件:AM4372

大家好、我们正在分析 TDA4 SoC QSPI 功能、目标是使用它连接到闪存。

我们注意到 TDA4器件上的多通道 SPI 有多个支持四通道数据通道的实例、并希望使用 MCSPI0或 MCU_MCSPI0连接到 FPGA 的闪存。闪存不支持八通道 SPI、因此我们决定不使用 TDA4 OSPI、而是常规(四通道) MCSPI 接口。

请注意:

  • Processor SDK 版本:06_02_00 -我们计划在不久的将来升级到7_01_00。
  • 我们正在尝试尽可能保持 EVM 板当前默认配置的引脚布局

通过查看处理器 SDK Linux 和 RTOS 用户指南、我们没有发现任何有关如何启用和使用 MCSPI 接口的有用信息。 不详细:

将 SPI 添加到器件树时、我们参考了 kenrel 文档 Documentation/devicetree/bindings/sie/ti_qspi.txt、以了解如何正确包含 SPI、但它看起来有点过时、因为它仅显示了使用 TI QSPI 的 am4372和 dra7xxx 器件的示例、但 TDA4已升级到 TI McSPI。

用户指南还说明了如何启用 Linux QSPI 驱动程序支持、但:

<*>DRA7xxx QSPI 控制器支持

不在哪里可以找到、我猜、对于 TDA4、它被替换为:

<*>  用于 OMAP 的 McSPI 驱动程序

默认情况下启用。
但是、我们在 Linux 启动时发现的唯一驱动程序是 cadence-QSPI 和模块 cxd2880-spi.ko:

根目录@J7-EVM:~# dmesg | grep SPI
[4.703505]   cadence-QSPI 47050000.SPI:n25q512A (65536 KB)
[4.723071]   cadence-QSPI 47050000.SPI:cadence QSPI NOR 探测器失败-517
[5.449308]   cadence-QSPI 47050000.SPI:n25q512a (65536 KB)

根目录@J7-EVM:~#查找/lib/modules -iname "*SPI*"
/lib/modules/4.19.94-g5a23bc00e0/kernel/drivers/media/spi
/lib/modules/4.19.94-g5a23bc00e0/kernel/drivers/media/spi/cxd2880-spi.ko
/lib/modules/4.19.94/kernel/drivers/media/spi
/lib/modules/4.19.94/kernel/drivers/media/spi/cxd2880-spi.ko

我们还无法确定我们要使用的驱动程序 API、我们注意到文档中提到了几个驱动程序 API、但没有明确的示例说明如何使用它们:

  • psdkra/pdk/packages/ti/drv/spi/src/spi_drv.c
  • psdkla/board-support/linux-4.19.94+gitAUTOINC+5a23bc00e0-g5a23bc00e0/drivers/spi/spi-ti-qspi.c

我们可以在此文档中看到一些有用的说明: software-dl.ti.com/.../spi.html
但此时此刻、我们还想知道我们是否可以使用 MCSPI 来连接 NOR 闪存?

您能帮助我们实现以下目标:

  1. 将 MCSPI 包含到 Linux 器件树中
  2. 确定我们可以使用哪个驱动程序和哪个 API 来执行闪存存储器的读取和写入
  3. 启用四通道 SPI 的驱动程序
  4. 如何为 TDA4x 编写某种 QSPI_FlashReadWrite 示例应用

此致。
Uros

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

    您好、Uros、

    没有提到支持四路模式的 McSPI。 您在 TRM 中找到了它吗?
    是否要将 QSPI NOR FLASH 用作主引导介质?

    什么是用例?

    -凯尔西

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

    你(们)好

    >>没有提到支持四路模式的 McSPI。 您在 TRM 中找到了它吗?<<
    -阅读用户指南、我们看到了 OSPI 和 QSPI 的文档、在技术文档中我们看到了 OSPI 和 MCSPI 接口、出于某种原因、我们在两者之间进行了并行处理。 这就是为什么我们错误地认为 MCSPI 支持四速、但现在、在我们仔细检查后、TRM 没有提到支持四速模式的 MCSPI。

    >>是否要将 QSPI 或闪存用作主引导介质?<<
    不需要,在这个阶段,我们不想从闪存引导。

    我将解释我们的目标是什么:

    我们正在开发的定制器件包括 FPGA 芯片。 根据设计、FPGA 的闪存通过 SPI 接口连接到 TDA4 SoC。
    使用的 SPI 接口为 MCSPI0和/或 MCU_MCSPI0

    目标是能够读取 FPGA 闪存的当前状态(数据)、并在必要时从 TDA4 SoC 向其刷写新数据。

    对于此版本的硬件、我们希望能够使用 MCSPI0或 MCU_MCSPI0作为正常 SPI、因此它不支持四路模式来连接到闪存。

    如果可能、您能支持我们实现这一目标吗?

    我们需要将 mcspi 器件包括在内核器件树中、并确定驱动程序以及如何使用它。

    此致。
    Uros

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

    您好、Uros、

    您可以查看此 e2e 线程中类似的内容: https://e2e.ti.com/support/processors/f/791/t/884031

    建议使用 spidev。 有关 spidev 的文档: https://pypi.org/project/spidev/

    此致、
    基尔西

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

    您好、Keerty、

    感谢您的答复和建议。
    我将继续进行有关 SPI 的工作、并提供您的建议、并将很快与您联系、以获取更多信息和结果。

    此致
    Uros

x 出现错误。请重试或与管理员联系。