iTOP-4412开发板设备节点意外消失

最近把iTOP-4412开发板重新刷机,挂在我的驱动后,意外发现/dev/目录下没生成我的设备节点。通过调试发现,驱动的probe函数已经正常执行了。so,问题出在哪里呢?
我反复重启板子,重新挂载驱动,但我的设备节点始终无法出现。想到内核文件中默认会挂在led的驱动,且会生成/dev/leds节点,我试着使用rm命令删除了此节点,发现居然也可以删除!!!而且板子重启后,/dev/leds节点并没有还原!!!
由此我得出结论,/dev/下的设备节点,是可以被rm命令删除的,且不会自动还原。所以,我们得手动将这些设备节点添加回来。
我先尝试了手动创建一个普通的文件:

touch /dev/leds

测试后发现,这仅仅是一个普通文件,根本不能用来驱动硬件~~~(囧)。从网上查了资料,发现可以使用mknod命令手动创建设备节点:

# c表示杂项设备,同样的b表示块设备,我们这里操作的都是杂项设备
mknod /dev/leds  c  主设备号  从设备号

那我的主设备号和从设备号我如何知道呢?我们可以查看/proc/misc来获取所有杂项设备的从设备号:

cat  /proc/misc

此文件内容有两列,第一列为从设备号,第二列为设备名称(只要驱动注册成功,就可以在此文件中看到设备,而且在此文件中我可以看到我那意外消失的设备就安安稳稳的在这里待着)。我们可以看到我们的leds从设备号为60。

那主设备号如何获取呢,我想到我还有一个设备buzzer,我是不是可以使用它的主设备号。使用如下命令可以查看设备的主设备号:

root@localhost:~# ls -lL /dev/buzzer
crw------- 1 root root 10, 59 Mar  1 19:06 /dev/buzzer

其中10,59分别为主设备号和从设备号,这里我们将使用10作为我的主设备号:

# 别忘了删除之前touch命令创建的文件
mknod /dev/leds  c  10  60

然后测试下/dev/leds节点,发现可以正常使用!!!

结论:/dev/下的设备节点不能随便删,如果不小心删了,只能使用这种方式手动添加回来。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值