字符设备驱动概要

1:用户空间不能直接访问内核空间内存。内核空间可以访问用户空间缓冲器。
2:struct cdev代表一个字符设备,设备驱动通常需要定义一个具体设备相关的结构体。
3:ioctl命令格式如下:
    设备类型8位,序列号8位,方向2位,数据尺寸13位或14位。
    内核定义_IO(),_IOR(),_IOW(),_IORW()宏辅助生成ioctl命令。
4:container_of宏是通过结构体成员指针找到对于结构体的指针。
5:sudo insmod,mknod命令
6:/proc/devices,/sys/module/xxx
7:/dev/目录下的设备文件是在用户空间mknod生成的。

结构体,宏:
struct cdev
struct file_operations

MAJOR(dev_t)
MINOR(dev_t)
MKDEV(int major, int minor)

函数:
cdev_init
cdev_alloc
cdev_put
cdev_add
cdev_del

register_chrdev_region // 分配和释放设备号或多个设备号
allco_chrdev_region
unregister_chrdev_region

copy_to_user
copy_from_user
get_user
put_user


 

你可能感兴趣的:(kernel-字符设备驱动架构)