CSDN-Ada助手 2024-04-29 17:13 采纳率: 1.6%
浏览 4

class_create创建设备之后,在/sys/class里找不到相应的类,如何解决?(语言-c语言)

该问题来自社区帖: https://bbs.csdn.net/topics/618562553.为符合问答规范, 该问题经过ChatGPT优化
<html><body>

在PL端使用DMA,只使能s2mm通道,设备树如下

&amba_pl {
    adcdma_fun_0: adcdma_fun0@0 {
        compatible = "adcdma_demo";
        dmas = <&axi_dma_1 1>;
        dma-names = "adc";
        num-buf = <3>;
    };
};

设备初始化流程如下

正常来讲,在设备注册成功之后会在/sys/class和/dev下分别找到对应的类和设备节点,但问题就是在板子上电之后没有找到类和设备节点,请问有解决办法吗

</body></html>
  • 写回答

4条回答 默认 最新

  • 码农阿豪@新空间 新星创作者: 前端开发技术领域 2024-04-29 17:13
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    问题概述:在使用DMA传输数据时,设备初始化后无法找到对应的类和设备节点。 解决办法:有以下几种可能的解决办法。
    1. 检查设备树 首先需要检查设备树是否正确配置,是否有误。如果设备树存在问题,可能导致设备无法被正确识别,无法找到对应的类和设备节点。 针对这个问题,可以使用devicetree反编译工具,将设备树文件反编译为.dts格式,查看是否有错误。 例如: 在终端输入命令:
    dtc -I dtb -O dts -o zynqmp.dts /boot/zynqmp.dtb
    

    将设备树文件“zynqmp.dtb”反编译为“zynqmp.dts”格式,然后使用编辑器打开文件进行检查。 2. 检查驱动程序 如果设备树没有问题,还需要检查驱动程序是否正确配置。驱动程序可能存在问题,导致设备无法被正确识别。也可能是驱动程序没有正确加载,导致找不到对应的类和设备节点。 可以使用以下命令检查驱动程序是否正确加载:

    lsmod
    

    如果没有正确加载,可以使用以下命令加载驱动程序:

    insmod <驱动程序名称.ko>
    

    例如:

    insmod adcdma_demo.ko
    
    1. 检查硬件连接 最后,也需要检查硬件连接是否正确。可能存在硬件连接问题,导致设备无法被正确识别。特别是在设备初始化后无法找到对应的类和设备节点的情况下,可能是由于硬件连接有问题。 可以通过查看硬件连接图纸,检查硬件连接是否正确。 例如: 在硬件连接图纸中,检查DMA控制器和设备的连接是否正确,是否存在接线问题。 代码示例:无 参考资料:
    2. https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842051/DMA+for+PCIe+Linux+Driver#DMAforPCIeLinuxDriver-PowerUp
    3. https://www.kernel.org/doc/Documentation/devicetree/bindings/dma/xilinx/xilinx_dma.txt
    4. https://www.cnblogs.com/westfly/p/7275948.html
    评论

报告相同问题?

问题事件

  • 创建了问题 4月29日