• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

没有办法自动生成设备节点

石头 2017-02-23 浏览量:1161
       我写了一个linux下的hsi总线的驱动程序,需要静态加载,但是没有办法自动生成设备节点,即在/dev目录下没有生成我想要的节点。查资料说采用class_creat()函数创建类后,再device_create()来生成设备节点。我也采用同样的方法,只在/sys/class/hsc目录下生成hsi0,哪位大神帮忙解释下,多谢多谢!代码如下:
hsc_class = class_create(THIS_MODULE, hsc);
device_create(hsc_class, NULL, MKDEV(major, minor), NULL, "hsi%d", 0);
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 嗨,您可以Debug下看出錯在哪個函數

    hsc_class = class_create(THIS_MODULE, hsc);
    if(IS_ERR(hsc_class))
    {
        err = PTR_ERR(hsc_class);    
        printk(KERN_ALERT "Failed to create class.\n");  
    }
    
    hsc_dev = device_create(hsc_class, NULL, MKDEV(major, minor), NULL, "hsi%d", 0);
    if(IS_ERR(hsc_dev)) {    
        err = PTR_ERR(hsc_dev);    
        printk(KERN_ALERT "Failed to create device.\n");       
    }  
    不過我這樣看起來猜測

    1. class_create(THIS_MODULE, hsc)的hsc是字元陣列嗎?

    2. MKDEV(major, minor) 不是這樣用才對, 應該是使用alloc_chrdev_region來產生devt, 但不知道您的major和minor變數實際產生方式

    以上供參考


    • 发布于 2017-02-23
    • 举报
    • 评论 1
    • 1
    • 0
石头 回复了 MOP:Debug这个我在试试了,不过没找到 回复

其他答案 数量:3
石头 回复了 东方青 :很实用呀 回复

相关问题

问题达人换一批

没有办法自动生成设备节点