免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: guanss2014
打印 上一主题 下一主题

linux驱动关于自动生成设备节点的问题 [复制链接]

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
11 [报告]
发表于 2014-02-13 09:55 |只看该作者
本帖最后由 arm-linux-gcc 于 2014-02-13 10:02 编辑

最简单的方法是直接用devtmpfs,这样就可以不用mdev或udev或mknod

CONFIG_DEVTMPFS
CONFIG_DEVTMPFS_MOUNT

论坛徽章:
0
12 [报告]
发表于 2014-02-14 10:22 |只看该作者
回复 9# CN薰様

是自己做的板子,但是和飞思卡尔的imx6q开发板差距不大,我们用的操作系统就是买这个开发板式带的imx6q的开发环境,但是我们的板子上了多了hsi总线,我现在就在写hsi驱动。我没什么工作经验,又是第一次接触驱动和操作系统,写代码时各种问题啊
   

论坛徽章:
0
13 [报告]
发表于 2014-02-14 10:25 |只看该作者
回复 11# arm-linux-gcc


   这个就更不懂了,求指教,说的清楚些,在什么位置加什么代码,本人菜菜鸟一枚,多谢多谢

论坛徽章:
0
14 [报告]
发表于 2014-02-14 10:28 |只看该作者
回复 10# humjb_1983


我在动态加载时用过这个命令,但是想要在系统启动后直接就生成设备节点的话,这个命令应该加在什么位置?
   

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
15 [报告]
发表于 2014-02-14 10:38 |只看该作者
可以在内核态触发uevent事件,然后设置相应的udev规则,在udev规则中调用mknod创建设备节点。

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
16 [报告]
发表于 2014-02-14 14:59 |只看该作者
回复 13# guanss2014


    什么都不用加,编译内核的时候把CONFIG_DEVTMPFS和CONFIG_DEVTMPFS_MOUNT打开就行了

但是就不要在启动脚本里面将其他类型的文件系统mount到/dev了,内核启动的时候会将devtmpfs自动mount到/dev去的

论坛徽章:
3
双鱼座
日期:2013-09-04 19:47:39天蝎座
日期:2013-12-11 20:30:532015年亚洲杯之澳大利亚
日期:2015-04-20 00:28:02
17 [报告]
发表于 2014-02-27 21:49 |只看该作者
回复 1# guanss2014


    楼主你看下你创建的设备,/sys/class/hsc的符号链接的设备目录有没有dev的属性文件!
    948 device_register()->device_add()
949         if (MAJOR(dev->devt)) {
950                 error = device_create_file(dev, &devt_attr);
951                 if (error)
952                         goto ueventattrError;
953
954                 error = device_create_sys_dev_entry(dev); //创建dev属性文件
955                 if (error)
956                         goto devtattrError;
957
958                 devtmpfs_create_node(dev);   //创建设备节点。。
959         }

   如果没有设备节点很有可能有两个原因:
1) MAJOR()条件语句进不去, 说明你的注册的设备号是有问题的
2) 第二种可能是:devtmpfs_create_node(dev)调用device_get_devnode函数失败。
    这个函数负责创建设备节点在devtmpfs文件系统的相对路径名.
  
如果没有dev属性文件很有可能是第一个原因。
我今天写的伪字符驱动也是因为第一个原因没有创建设备节点
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP