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.

[参考译文] AM6442:在同步模式下、从 Linux 下的 GPMC 窗口读取确实会返回全零(但不在异步模式下)

Guru**** 2460850 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1550938/am6442-reading-from-gpmc-window-under-linux-does-return-all-zero-in-synchronous-mode-but-not-in-asynchronous-mode

器件型号:AM6442


工具/软件:

您好:

我看到了在同步模式下从 GPMC 读取时返回全零的问题、但当同步模式未激活时、我正在读取我预期读取的内容。 此外、通过示波器观察 GPMC 线路时、显然会返回从零不同的预期数据。 在同步模式下写入效果很好。  

这与此处报告和解决的相当老的问题非常相似:

 GPMC SYNC 也不会始终读取零 

实际上、我之前已将 GPMC 时钟焊盘配置为输出。 我的理解是、这里必须将 GPMC 时钟焊盘配置为输入(尽管它实际上在输出时钟信号)。 因此、我在器件树文件中相应地更改了 GPMC 时钟焊盘的 PADCONFIG:

AM64X_IOPAD (0x007c、PIN_INPUT、4)

遗憾的是、这无法解决问题。

我可以在引导后读取 PADCONFIG 寄存器来验证 PAD 的接收器是否已启用。 例如通过

devmem2 0xf407c

该器件报告值 0x00050004 然后(其中设置了位 18 并且接收器已启用)。

那么、这里还有什么问题呢?

Im 不确定是否存在关系、但我的配置的特殊之处在于、我需要一个自由运行的 GPMC 时钟输出、因此 MUXMODE 为 4(直接将时钟馈送到焊盘上,绕过 GPMC 模块)。

我应该注意的是、我暂时没有看到针对单个事务使用同步模式的要点。 也就是说、无论使用的是非同步模式还是同步模式、时序都是相同的、采用异步模式似乎没有缺点。 但是、最终我还需要运行突发模式、这在异步模式下不可用。 此外、启用突发后、我会确定性地观察到对 GPMC 窗口进行写入访问的内核错误、或在读取时仅观察到总线错误。 我会尽量把这点整理得更好一点,可能会单独发布一个帖子。 但我不确定这是否与我在这里报告的这个问题有关。  

谢谢、

Mario

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

    这方面的最新情况:

    事实证明、与我上面所写的相反、GPMC 模块也会在异步模式下生成突发传输。 事实上、尽管使用 GPMC RESP、但我能够以同步方式以突发方式读取可信的数据。 其 ChipSelect 已配置为异步通道。  

    我不太清楚将通道配置为“同步“的点在哪里。 也许它真的只是为了在不需要自由运行时钟的情况下进行这样的设置。

    无论如何,将一个通道视为“异步“通道的解决办法到目前为止似乎工作正常。 因此、这一问题可以被视为“已解决“。  

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

    似乎我需要重新思考一下。

    当将通道的写入部分配置为“异步“时、我不再看到突发写入事务。 因此,现在,将读取部分配置为“异步“,将写入部分配置为同步似乎是明智的。 即在设备树设置方面:

            GPMC、同步写入;
            GPMC、突发读取;
            GPMC、突发写入;

    对于  CONFIG1_I 寄存器中的 WRITEMULTIPLE 标志、TRM 规定:“如果是同步、则突发、如果是异步、则视为单个突发“

    对于 READMULTIPLE、TRM 指出:“如果同步、则为页面(如果异步)“。 AFAIK 术语“BURST"和“和“PAGE"在“在这里指的是相同的。

    尽管如此、我认为在同步模式下的读取不会向处理器返回数据、这仍然有问题。