对嵌入式linux驱动开发的理解

做嵌入式linux驱动开发,首先要搞明白大致框架。
linux的驱动通常分为字符设备驱动块设备驱动网络设备驱动三大块。字符设备是最普遍的应用,用于简单控制、读写、传输数据等等,块设备主要与硬盘、EMMC等存储设备有关,网络设备驱动则是与以太网、wifi相关的驱动。块设备驱动和网络设备驱动一般由原厂提供,可以直接使用,我们开发人员只需要根据具体应用需求编写相应的字符设备驱动即可。
linux一切皆文件,我们开发字符设备驱动就是要实现对该设备的read write open release等函数。一般以设备节点作为目标设备在linux系统中的具体表现形式,然后上层应用程序通过对该设备节点进行read write等操作,实现对目标设备的控制。简而言之,设备节点是驱动程序和应用程序之间的桥梁,并以文件的形式存在与linux系统之中。
所以,字符设备驱动的开发流程可以总结如下:
1.分配主、次设备号,实现字符设备驱动函数read write open release等函数。
2.把设备注册到linux内核
3.创建设备节点
4.编写应用程序测试,对设备节点进行read write等操作

linux有一种misc设备驱动,相当于简化版的字符设备驱动,其主设备号默认为10,并能动态获取次设备号、自动生成设备节点,这整个过程都封装成一个misc_register函数,极大简化了开发过程。

普通字符设备驱动涉及到的一些结构体:
设备号结构体dev_t<----自动或手动分配设备号
操作函数结构体file_operations<----实现操作函数集合
字符设备结构体cdev<----用操作函数结构体初始化字符设备
向linux添加该字符设备<----用设备号结构体dev_t、字符设备结构体cdev来注册
class结构体<----新建一个class
device结构体<----依托class并以设备号dev_t建立一个设备节点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

chvngzhvng

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

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

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

打赏作者

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

抵扣说明:

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

余额充值