目录
一、目的
- 描述如何看待驱动框架。
- 注册驱动
- 删除驱动
二、linux对于文件的概念
linux中认为一切都是文件。那么文件就有三个操作:读写和擦除。
所以我们对于文件的操作,也是统一的要求:
使用这些函数
open
write
| 名称 | 概念 |
|---|---|
| .ko | 驱动文件 |
| 设备号 | 主设备号和次设备号统称为设备号。主设备号用来表示一个特定的驱动程序。次设备号用来表示使用该驱动程序的各设备 |
三、驱动框架
我们使用系统的目的就是让系统帮我们做事,那么我们就要把一些东西和模块交给系统来进行管理,例如一个灯的驱动程序,我们如果还像以前那样直接使用C函数来调用,那采用系统又有什么意义。所以我们需要按照驱动框架来,主要有三步。
- 上层采用标准打开方式来打开对应的驱动。
- 驱动程序直接沟通硬件。
- 驱动程序注册到系统中。
四、第一个驱动编写流程
4.1、编写驱动函数:
这边,我们先写两个空白的函数来测试:
static int first_drv_open(struct inode *inode, struct file *file)
{
}
static ssize_t first_drv_write(struct file *file, const char __user *buf, size_t count, loff_t * ppos)
{
}
4.2、编写初始化函数:
注意,我们要采用官方的函数来实现注册:
就是这个函数
//注册
register_chrdev();
//删除
unregister_chrdev();
这是我们的启动函数,也就是用来初始化的:
static int first_drv_init(

本文详细介绍了Linux驱动开发的过程,从理解Linux文件概念到遵循驱动框架编写、注册和删除驱动,再到编写第一个驱动的详细步骤,包括初始化函数、makefile和测试。还探讨了驱动加载、设备号管理以及使用udev/mdev优化设备创建。最后强调了驱动编写中的注意事项和设备查看方法。
最低0.47元/天 解锁文章
2749

被折叠的 条评论
为什么被折叠?



