Linux驱动:系统分配设备号、杂项设备驱动、编译模块(动态加载)、驱动和设备分离
一、自动在内核注册设备号和自动在用户层注册设备号
二、杂项设备驱动框架(字符设备驱动)
struct miscdevice miscdev
//主设备号 10
misc_register();
misc_deregister();
三、编译模块(动态加载)
(一)在Kconfig中配置定义类型为 tristate(三态有 y n m)
(二)make menuconfig 选项为M
make //编译所有模块
make zImage //静态编译内核,只编译配置为y的
(三)make modules 编译内核模块 //编译所有被配置为M的模块
(四)会在驱动文件的同层目录下生成xxx.ko的内核模块
(五)使用
1.insmod led_misc.ko //加载到内核
2.lsmod //查看module
3.rmmod led_misc //从内核移除
四、ioctl函数使用
(一)简介
1._IO合并cmd
2.定义
(二)使用
五、驱动和设备分离
(一)设备资源和操作方法独立注册
(二)关键函数
1.驱动
2.设备(定义资源结构体,在驱动函数调用即可)
3.资源函数