目录
一、Linux哲学
二、如何把字符设备抽象成文件
三、硬件层原理
四、驱动层原理
五、文件系统原理
一切皆文件
open函数,在文件系统中找到指定文件的操作接口,绑定到进程task_struct->file_struct->fd_array[]->file_operations
思路:
把底层寄存器配置操作放在文件操作接口里面,新建一个文件绑定该文件操作接口,应用程序通过操作指定文件来设置寄存器。
基本接口实现
struct file_operations
/home/geralt/linux_driver/kernel/ebf_linux_kernel_6ull_depth1/include/linux/fs.h
把file_operations文件操作接口注册到内核,内核通过主次设备号来登记记录它(这是因为文件操作接口是我们自己构建出来的,内核并不知道)
cdev_init()
chrdevs:登记设备号
_register_chrdev_region()
cdev map->probe:保存驱动基本对象struct cdev
cdev_add()
mknod指令+主从设备号
到这里,应用程序就可以使用open()、write()、read()等函数来控制设备文件了。
上一篇:docker的基本管理