本文共 907 字,大约阅读时间需要 3 分钟。
一 字符驱动设备
- dev_t类型是32位数据类型,其中高12位表示主设备号,低20位表示次设备号。
- MAJOR和MINOR从dev_t分别获得主设备号和次设备号。
- MKDEV 组合主设备号和次设备号而获得dev_t类型设备号。
- 静态分配设备号:在事先知道主设备号的情况下使用register_chrdev_region()函数
- 动态分配设备号:在事先不知道在事先不知道主设备号的情况下,使用alloc_chrdev_region()
- 释放已分配的设备号:unregister_chrdev_region(),无论是静态分配还是动态分配都使用它。
- 通过内核注册字符设备:
- 打开设备及其设备的读写
- 数据交换
- 配置和控制
- 申请内存
- 以字节为单位获取内存kmalloc(),长度是2的整次方,并且不会对所获取的内存空间清零。
- 以页为单位分配内存的函数如下所示: get_zeroed_page():获得一个已清零页面。 get_free_page():获得一个或几个连续页面。 get_dma_pages():获得用于DMA传输的页面。 与之相对应的释放内存用也有kfree()或free_page函数族。
- 打印信息内核空间要用函数printk(),printk()还可以定义打印消息的优先级
- 伪文件系统,/proc存在于内存之中而不是在硬盘上,获取有关系统和进程的有用信息,在运行时通过改变内核参数来改变设置。ls查看其内容。
二、块设备驱动程序
- 块设备驱动程序的编写流程同字符设备驱动程序的编写流程很类似,也包括了注册和使用两部分。但与字符驱动设备所不同的是,块设备驱动程序包括一个request请求队列。
- 可以通过cat /proc/devices查看已经使用了的设备号。
- 手动创建设备节点:# mknod /dev/led c 231 0 在这里插入图片描述
三、UDEV设备管理方法
- udev根据sysfs系统提供的设备信息实现对/dev目录下设备节点的动态管理,包括设备节点的创建、删除等。
- 是用户空间的设备管理器
- sysfs是2.6内核引入的用于管理设备的一种虚拟文件系统,挂载在/sys目录下。
转载地址:http://zzbtb.baihongyu.com/