ac3165 linux驱动_linux内核模块编程(四)----字符设备驱动开发框架整理

先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题

67e65df1e14f9351d3fde7875d7a8e2a.png

一 why

前一篇博客《linux内核模块编程(三)----字符驱动设备开发》,我们初步实现了一个linux内核字符设备驱动,主要是为了大家参照该驱动程序源码,学会如何进行字符设备驱动开发,不知道大家是否成功在自己的本地运行起来这个驱动。今天这篇文章,我们来谈谈字符设备驱动开发的框架套路,几个重要的概念和重要内核函数。

二 what

  1. 字符设备驱动框架

首先我们看一下字符设备驱动的软件框架,如下。字符设备驱动运行在kernel space,用户空间通过常规的open,write,read函数调用驱动中对应的xxx_open,xxx_write,xxx_read函数以实现对某个硬件设备的控制

b79f1d6f41684eb975c72584f8fe116d.png
1. 

2. 字符设备驱动几个关键函数

2.1 申请设备号

// 创建设备号

有创建就有注销

static 

2.2 创建设备节点

1. 

3. 总结

字符设备驱动开发的一般步骤如下,再次强调一下是在linux内核4.15版本下的总结,可能有些函数接口不一样。

初始化注册步骤

关于一个完整的字符设备驱动程序示例,还请参考《linux内核模块编程(三)----字符驱动设备开发》,该博客中有示例源码。后期有可能还是会参照这样的思路来写博文,先给出一个示例程序,编译运行,然后再出一篇博文分析它,或者有可能在一片博文中先给出示例,然后再分析,这样可能会造成一篇博文较长,不知道大家是否能看完。

三 to be continued

因为字符设备驱动的目的,是方便用户空间程序能够驱动硬件设备工作的,所以下一篇博文会给出如何在用户空间通过调用字符设备驱动,来控制我们的硬件。当然后期还会出一期,我们调用了上面几个内核函数之后,都发生了什么?或者说内核是如何管理这些设备驱动的。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部