http://www.embeddedlinux.org.cn/ (不错的网站)
1、注册设备编号
使用register_chardev_region或alloc_chrdev_region(2.6内核最好使用此函数)。
2、注册设备
(1)使用struct cdev结构体,如果此结构体包含在自定义结构体中,可以通过函数container_of获得。
(2)使用register_chrdev函数
3、内存的分配和回收
(1)kmalloc
(2)kfree
4、inode结构体和file结构体
5、实现用户空间和内核空间数据的拷贝
copy_to_user()
copy_from_user()
6、module_int()
module_exit()
module_parameter()
MODULE_LICENSE(“GPL”)
7、加载内核模块函数
request_module()
8、用来获得设备的注册设备号
iminor()和imajor()
9、用户空间和内核空间简单数据类型的数据拷贝
put_user()
get_user()
10、MKDEV用法
dev_t MKDEV(major,minor)
11、使用copy_to_user()和copy_from_user()需包含头文件<asm/uaccess.h>
测试驱动的方法:
1、insmod后用lsmod可以查看加载模块的信息,同时在/proc/devices下查看模块的主设备号
2、使用mknod命令在dev目录下创建设备节点,例如:mknod /dev/mydevice c 254 0
3、echo 字符串>/dev/mydevice,测试写写功能的正确性。
4、cat /dev/mydevice,测试读功能的正确性。
linux设备驱动学习1(简单框架)
最新推荐文章于 2024-11-08 14:34:47 发布