Linux设备驱动框架总结以及私有数据

目录

NO1.私有数据

NO2.Linux驱动框架总结(非设备树)

01  设备框架的特点

02  设备开发流程


 

NO1.私有数据

Linux驱动文件指针中有一个结构体struct file *filp,例如:

static int test_open(struct inode *inode, struct file *filp);其中结构体filp可用于文件私有数据的保护,我们可以在open 函数里面设置好私有数据以后,在 write、 read、 close 等函数中直接读取private_data即可得到设备结构体。例如下图所示的用法。

NO2.Linux驱动框架总结(非设备树)

        总结一下Linux中设备框架的特点、设备开发的流程。

01  设备框架的特点

        Linux是一个成熟的操作系统,设备驱动开发必须基于Linux下的设备框架进行开发!

        Linux在设备驱动编写的时候,完整的部分应该包括驱动具体器件(操作寄存器)、获取系统分配的设备号、根据设备号注册字符设备驱动、自动创建设备节点、注销设备号、注销节点

        Linux在板卡的命令中的常见操作有depmod(第一次加载设备)、modprobe + ...(加载具体的设备驱动模块)、lsmod(查看加载的设备模块)、mknodc + ...(手动创建设备节点,通常用自动创建设备节点)。

        Linux中,驱动模块源文件以及APP文件的目录一般放在 /lib/modules/4.1.15/目录下面,当节点创建后,一般  /dev/***  会出现设备的名字

02  设备开发流程

1、C语言源文件中,使用函数alloc_chrdev_region()获取系统分配的设备号。

2、C语言源文件中,进行设备注册,涉及到函数cdev_init()和函数cdev_add()。

3、C语言源文件中,进行节点的注册,涉及到函数class_create()和函数device_create()。

4、C语言源文件中,退出函数进行设备的注销和节点的注销,包括节点删除函数cdev_del()和函数unregister_chrdev_region()、函数device_destroy()和函数class_destroy()。

5、C语言源文件中,完成设备操作函数结构体,并且实现设备操作函数结构体的操作函数。

6、编写Makefile--自动编译,编写.vscode--指定头文件

7、执行make

8、复制.ko文件到linux文件系统,例如

sudo cp chrdevbase.ko /home/xiaowen/linux/nfs/rootfs/lib/modules/4.1.15/ -f

9、第一次加载模块使用depmod

10、使用modprobe加载模块,例如modprobe chrdevbase.ko

11、使用lsmod查看当前系统中存在的模块

12、查看设备节点是否正确创建,命令为 ls /dev/       或者   ls /dev/设备名 -l

13、APP函数运行测试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

芯心智库

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值