1、字符驱动模型
1)创建cdev
2) 申请设备号,若使用静态的设备号,查看内核文档Documentation/devices.txt;
3)实现file_operation
read
write
ioctl
定义魔术,查看ioctl-number.txt,已经使用的魔术
定义命令
常用函数
copy_to_user(void *dst,void*src,size_t len);
copy_from_user(void*dst,void*src,size_t len);
4)创建设备文件
cat /proc/devices 查看当前系统注册的设备
a.手动创建 mknode /dev/testchar c major minor
可以通过cat /proc/devices查看主设备号,从源码中找到次设备号;
b.自动创建
首先,需要在编译内核时候,在 Device Drivers-->
Generic Driver Options--->
[*] Maintain a devtmpfs
[*] Automount devtmpfs
或者 制作根文件系统的启动脚本中输入
mount -t sysfs none sysfs /sys
mdev -s
其次,在加载设备的将设备信息导出到“/sys”
在 /sys 中导出设备类信息
cls = class_create(THIS_MOUDLE,DEV_NAME);
/在cls指向类中创建一组(个)设备文件
fori(i=minor;i<(minor+cnt);i++)
devp = device_create(cls,NUll,MKDEV(major,i),NULL,"%s%d",DEV_NAME,i)
2、按照以上要点,一个简单的字符设备驱动就搭建完成了。
这样就可以编写用户程序进行测试。