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.

[参考译文] PROCESSOR-SDK-AM335X:GPMC 通信

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1514440/processor-sdk-am335x-gpmc-communication

器件型号:PROCESSOR-SDK-AM335X
《Thread 中讨论的其他器件:AM3359》

工具/软件:

AM3359处理器通过 GPMC 与 FPGA 连接、该 GPMC 设置为16突发模式、允许读取和写入32字节的数据。

一旦以这种方式配置 GPMC、处理器就可以使用"logibon_R1_DMA"驱动程序与 FPGA 有效通信。

我们观察到、当地址是32的倍数时、GPMC 总线上的通信功能正常。

否则、它从32的倍数且小于指定地址的最接近地址开始、然后继续按如下方式传输数据。

32的倍数:

存储器地址 数据                    
0x10004000 0xa5a5                    
有用 C1 C2 C3. C4 C5. C6 C7 C8 …μ s …μ s …μ s
低功耗通信 2000 a5a5. 0

32的非倍数:

存储器地址 数据                    
0x10004004 0xa5a5                    
有用 C1 C2 C3. C4 C5. C6 C7 C8 …μ s …μ s …μ s
低功耗通信 2000 FFFF a5a5. 0

注意:GPMC 总线上的0x10004000 0x4000>>1 = 0x2000

对于32的非倍数、我打算按以下方式通过 GPMC 总线传输数据:

存储器地址 数据                    
0x10004004 0xa5a5                    
有用 C1 C2 C3. C4 C5. C6 C7 C8 …μ s …μ s …μ s
低功耗通信 2002年 a5a5. 0

--> 0x4004>>1 = 0x2002

如果能就是否需要进一步配置提供任何指导、我将不胜感激。

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

    尊敬的 Madhan:

    AM335x 上运行的是什么操作系统?

    Unknown 说:
    处理器可使用"logibone_R1_dma"驱动程序与 FPGA 有效通信。 [/报价]

    这个"logibone_R1_DMA"是否是您从 GPMC 读取数据的自定义驱动程序? 驱动程序名称表明使用了 DMA、如果使用了 DMA、是否也会发生这种对齐行为?

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

    尊敬的 Bin:

    1.适用于 Linux 的 Linux SDK 版本4.19.59。
    2.该驱动程序来自与"BeagleBone Black"代码相关的在线资源。

    注意:地址是16的倍数、正如我之前所指出的32的倍数一样。

    当地址为0x10004004时、GPMC 总线将地址发送为0x2000 (0x4000>>1)。 但是、所需地址为0x2002 (0x4004>>1)。

    同样、对于地址0x10004014、GPMC 总线发送0x2008 (0x4010>>>1)、而实际要求为0x200A (0x4014>>1)。

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

    尊敬的 Madhan:

    2. 该驱动程序来源于与"BeagleBone Black"代码相关的在线资源。

    请分享代码的位置?

    您是否可以运行命令' devmem2 0x10004004 h "而是查看 GPMC 总线是否具有相同的行为?

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

    尊敬的 Bin:  

     主 fpga-Logi/Logi-kernel github 中的 Logi-kernel/Beaglebone-black/common/Logi_dma.c 找到驱动程序源代码 ··

    我已经用 devmem2命令确认了它的功能、并且它工作正常。

    我们已经使用 devmem2命令成功识别了 GPMC 总线上的准确地址。

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

    尊敬的 Bin:

    以下是正在写入 FPGA 的 Vivado Chipscope 图像。

    地址:0x10004000

    地址:0x10004004

    地址:0x10004008

    地址:0x1000400C

    地址:0x10004010

    地址:0x10004014

    地址:0x10004020

    地址:0x10004024

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

    尊敬的 Madhan:

    我无法判断 Logi DMA 代码是否正确配置 DMA、但通读 AM335x TRM 中的 EDMA 一章、SRC 和 DST 缓冲区地址没有对齐限制。

    您可能需要让 Logi DMA 项目了解导致问题的原因。