linux驱动程序编写过程中常用的命令

insmod  xxx.ko 加载模块

lsmod 查看模块

rmmod xxx.ko 卸载模块

ls /dev/xxx  查看dev下是否安装了此设备  xxx为设备名

如 ls /dev/led*

# ls /dev/led*
/dev/led1  /dev/led2  /dev/led3  /dev/leds
 

cat proc/devices  查看主设备号

mknod /dev/xxx c  250 0   手动指定主设备号和次设备号,也可以在代码中调用函数创建

ls /sys/class    查看sys中是否有该设备命名的类

ls /sys/class/xxx -l  查看该类下的设备

例如
# ls /sys/class/leds -l

看到的信息如下,其中leds是设备名
drwxr-xr-x    2 0        0               0 Jan  1 01:19 led1
drwxr-xr-x    2 0        0               0 Jan  1 01:19 led2
drwxr-xr-x    2 0        0               0 Jan  1 01:19 led3
drwxr-xr-x    2 0        0               0 Jan  1 01:19 leds

进一步查看

# ls /sys/class/leds/led1
dev        subsystem  uevent

继续查看

# cat /sys/class/leds/led1/dev
231:1
# cat /sys/class/leds/led2/dev
231:2
# cat /sys/class/leds/led3/dev
231:3

# cat /sys/class/leds/leds/dev
231:0

其中leds设备可以是三个led合在一起操作,而led1,led2,led3可以分别操作每个led
为什么在代码中调用MKDEV就会自动生成这些设备呢?是因为下面的脚本文件

vi /etc/init.d/rcS

可以看到该脚本内容

#!/bin/sh
ifconfig eth0 192.168.1.17

mount -a
mkdir /dev/pts
mount -t devpts devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
if [ ! -e /etc/pointercal ]
then
/bin/ts_cal.sh
fi
/bin/qpe.sh &
~
~
~
~
~
~
~
~
~
~
- /etc/init.d/rcS 13/13 100%

insmod和rmmod时相当于热插拔,根据该脚本,热插拔就会调用/sbin/mkdev创建设备和卸载设备

 

man 2 open  查看调用open函数必须用到的头文件 

注意设备名和模块名是不一样的.

 

register_chrdev(LED_MAJOR, "device_name", &s3c24xx_leds_fops);

"device_name" 在cat /proc/devices中可以看到

leds_class = class_create(THIS_MODULE, "led_class");

"led_class"在ls /sys/class 中可以看到,是一个目录名

leds_class_devs[0] = class_device_create(leds_class, NULL, MKDEV(LED_MAJOR, 0), NULL, "leds"); /* /dev/leds */

"leds"在 ls /dev/leds -l 中可以看到,并且可以看到主设备号次设备号

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值