linux驱动开发需要哪些知识(linux驱动程序开发)

linux驱动开发需要哪些知识(linux驱动程序开发)文章福利 小编推荐自己的 Linux 内核技术交流群 整理了一些个人觉得比较好的学习书籍 视频资料共享在群文件里面 有需要的可以自行添加哦 含视频教程 电子书 实战项目及代码 nbsp nbsp nbsp 1 1 分配 cdev 1 2 初始化 cdev 1 3 注册 cdev 1 4 硬件初始化 2 1 open 函数 2 2 read 函数 2 3 write 函数 2 4 close 函数 2 5 ioctl 函数 2 5 补充说明 1





【文章福利】小编推荐自己的Linux内核技术交流群:【891587639】整理了一些个人觉得比较好的学习书籍、视频资料共享在群文件里面,有需要的可以自行添加哦!!!(含视频教程、电子书、实战项目及代码)     

1.1分配cdev

1.2.初始化cdev

1.3.注册cdev

1.4.硬件初始化

2.1. open()函数

2.2. read( )函数

2.3. write( )函数

2.4. close( )函数

2.5 ioctl( )函数




2.5. 补充说明

1. 在Linux字符设备驱动程序设计中,有3种非常重要的数据结构:struct file、struct inode、struct file_operations。


2. 在read( )和write( )中的buff 参数是用户空间指针。因此,它不能被内核代码直接引用,因为用户空间指针在内核空间时可能根本是无效的——没有那个地址的映射。因此,内核提供了专门的函数用于访问用户空间的指针:

3.1. 删除cdev

在字符设备驱动模块卸载函数中通过cdev_del()函数向系统删除一个cdev,完成字符设备的注销。

3.2. 释放设备号

编辑

5:int register_chrdev_region(dev_t from,unsigned count,const char *name)

6:int alloc_chrdev_region(dev_t *dev,unsigned baseminor,unsigned count,const char *name);

7:void unregister_chrdev_region(dev_t from,unsigned count);

4.8字符设备驱动的 file_operations 结构体重成员函数

4.9、字符设备驱动文件操作结构体模板


class_create(…)在/drivers/base/class.c中实现

class_destroy(...)函数

device_create(…)函数在/drivers/base/core.c中实现

相比devfs,udev有很多优势,在此就不罗嗦了,提醒一点,udev是应用层的东东,不要试图在内核的配置选项里找到它;加入对udev的支持很简单,以字符设备驱动为例,在驱动初始化的代码里调用class_create为该设备创建一个class,再为每个设备调用 class_device_create创建对应的设备。大致用法如下:

加载结果:


编程小号
上一篇 2025-03-25 18:21
下一篇 2025-03-26 14:11

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/44288.html