沉默着的莉 2023-01-12 16:44 采纳率: 0%
浏览 70

zynq板子axidma

使用axidma驱动,在zynq得linux操作系统中实现PS接收PL得数据,
驱动:https://github.com/bperez77/xilinx_axidma
但是在测试得时候发现,axidma_oneway_transfer函数wait设置为true的时候就会提示
axidma_start_transfer:301:DMA receive transation timed out
Fialed to perform the AXI DMA transfer:TImer expired
axidma_oneway_transfer函数wait设置为true的时候接收没有任何反应

(两种xilinx得板子,一个就通信正常,一个就不行)
请问各位,这个驱动与硬件配置啥的有关系吗?有什么解决思路没?

  • 写回答

1条回答 默认 最新

  • 月下独码 Java领域新星创作者 2024-09-22 17:47
    关注
    1. 驱动与硬件配置的关系分析
      • 硬件差异影响
        • 在不同的Xilinx板子上出现不同的结果,很可能与硬件配置有关。例如,不同板子可能在时钟配置上存在差异。AXI DMA的正常工作依赖于正确的时钟信号,如果时钟频率设置不正确,可能导致数据传输的时序问题。在一个板子上时钟频率能够满足数据传输的要求,而在另一个板子上可能过高或过低,导致传输超时。
        • 硬件的布线和连接也可能是一个因素。如果在PL(可编程逻辑)到PS(处理系统)的数据传输路径上存在布线错误或者连接不稳定的情况,可能会导致数据传输失败。例如,信号完整性问题,如信号的串扰、反射等,可能在一个板子上由于布线的微小差异而不存在,但在另一个板子上却影响了数据的正确传输。
      • 驱动与硬件的适配性
        • 驱动程序是基于对硬件的特定假设编写的。如果硬件的某些特性与驱动程序的预期不匹配,就会出现问题。例如,驱动程序可能假设了特定的AXI(高级可扩展接口)总线宽度或者数据对齐方式,而不同的板子可能在这些方面有细微的差异。如果一个板子的AXI总线宽度为32位,而驱动程序假设为64位,当进行数据传输时就可能出现错误,尤其是在数据量大或者传输速度快的情况下。
    2. 解决思路
      • 时钟配置检查
        • 首先,检查两个板子的时钟配置。查看时钟频率、时钟源以及时钟的使能情况。在Zynq的Linux操作系统中,可以通过设备树(Device Tree)来配置时钟。确保两个板子的AXI DMA相关时钟的配置一致。例如,如果在正常工作的板子上AXI DMA的时钟频率为100MHz,尝试将有问题的板子的时钟频率也设置为100MHz。
        • 验证时钟的稳定性。可以使用示波器等工具来测量时钟信号的波形,确保没有时钟抖动或者其他异常情况。如果发现时钟不稳定,可以尝试调整时钟源或者添加时钟缓冲器等措施来提高时钟的稳定性。
      • 硬件连接和布线检查
        • 仔细检查PL到PS的数据传输线路。查看是否存在断路、短路或者虚焊等问题。对于高速信号传输线路,要特别注意信号的完整性。可以使用信号完整性分析工具来检查布线是否符合要求。如果发现布线存在问题,可以重新布线或者添加信号匹配电阻等措施来改善信号质量。
        • 检查AXI DMA相关的硬件模块在PL中的配置。确保在两个板子上AXI DMA的配置参数相同,如数据宽度、突发长度等。例如,在Vivado(Xilinx的设计工具)中查看AXI DMA的IP核配置,确保数据宽度都是32位,突发长度都是8等。
      • 驱动程序调试
        • 在驱动程序中添加更多的调试信息。例如,在axidma_start_transfer函数中添加打印语句,输出与传输相关的关键参数,如传输地址、传输大小等。这样可以帮助确定在传输过程中是否存在参数错误。
        • 检查驱动程序与硬件的适配性。查看驱动程序的文档或者源代码,了解驱动程序对硬件的要求。如果发现驱动程序假设的硬件特性与实际硬件不符,可以尝试修改驱动程序以适应硬件的差异。例如,如果驱动程序假设了特定的中断处理方式,而硬件的中断机制不同,可以修改驱动程序中的中断处理部分。

    注:以上内容源于对ChatGPT多次询问后的详细整理,实用性请自行斟酌,如OK,请采纳,谢谢

    评论

报告相同问题?

问题事件

  • 创建了问题 1月12日

悬赏问题

  • ¥20 微信小程序 canvas 问题
  • ¥15 系统 24h2 专业工作站版,浏览文件夹的图库,视频,图片之类的怎样删除?
  • ¥15 怎么把512还原为520格式
  • ¥15 MATLAB的动态模态分解出现错误,以CFX非定常模拟结果为快照
  • ¥15 求高通平台Softsim调试经验
  • ¥15 canal如何实现将mysql多张表(月表)采集入库到目标表中(一张表)?
  • ¥15 wpf ScrollViewer实现冻结左侧宽度w范围内的视图
  • ¥15 栅极驱动低侧烧毁MOSFET
  • ¥30 写segy数据时出错3
  • ¥100 linux下qt运行QCefView demo报错