![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux驱动
(刘*牛)
这个作者很懒,什么都没留下…
展开
-
linux设备驱动详解
第九章 异步通知机制 主要说下代码:: 我测试的内核环境是 5.4.31 1.globalfifo程序代码实现如下: #include <linux/module.h> #include <linux/types.h> #include <linux/fs.h> #include <linux/errno.h> #include <linux/mm.h> #include <linux/sched.h> #include <lin原创 2021-02-21 08:16:25 · 440 阅读 · 0 评论 -
linux设备驱动开发详解
第七章 linux设备驱动中的并发控制 在linux驱动中,涉及两个应用程序读写一个进程设备的情况,这个时候就需要进行相关操作,因为设备是临界区资源,如果不进行相关保护,就可能出现错误。提供的保护就是设置对linux设备的并发控制。 linux提供的并发控制如下: 1.自旋锁 自旋锁不能用于出现阻塞的情况下,容易出现死锁的问题。 2.信号量 信号量可以使用在大部分情况下,但是 3. ...原创 2021-02-20 07:47:04 · 143 阅读 · 0 评论 -
第八章 linux设备驱动驱中的阻塞与非阻塞
1.驱动程序中的阻塞与非阻塞的概念 阻塞机制:当当前设备不可用的时候,驱动程序设置当前进程进行休眠状态,同时添加当前进程当等待队列中去,然后让出CPU,让其他的进程进行执行。当当前进程执行的条件满足以后,通过一个唤醒信号,将等待队列中等待的进程唤醒,然后继续执行当前进程。 非阻塞机制:当当前设备不可用的时候,驱动程序设置当前进程一直轮询当前的设备状态,一直到设备状态可以执行操作为止。 这个里面要参照书里面关于阻塞和非阻塞的程序样例,书里面说的很重要,所以就要搞懂哪个样例。 2.等待队列 参照书里面的内容即可原创 2021-02-20 07:43:06 · 204 阅读 · 0 评论 -
linux设备驱动开发详解
第六章 字符设备驱动 cdev结构体是描述一个设备,同时该结构体用于设备注册,进行设备注册有专门的接口 file_operations结构体是用来描述操作该设备驱动提供的操作接口的集合,linux所有文件操作,open,read,write和close最终都会调用到file_operations结构体中 ...原创 2021-01-08 07:21:55 · 354 阅读 · 0 评论 -
linux设备驱动开发详解
第五章 linux文件系统与设备文件系统 1.linux系统提供的文件操作接口 creat 是文件创建接口 open 可以进行文件打开,打开文件以后返回文件操作符,也可以进行文件创建,创建成功以后返回创建成功的文件操作符,同时设置读写权限 write 是通过文件操作符将内容写入文件 read 是通过文件操作符读取文件中的内容 lseek是进行文件读写位置定位 close是通过文件操作符关闭文件 2.C语言标准库中包含的文件操作接口 fopen是可以打开指定文件或者创建指定文件,返回文件操作符,需要设置读写权原创 2020-12-25 07:16:46 · 525 阅读 · 0 评论 -
linux设备驱动开发详解
第四章 linux内核模块 1.linux内核模块的优点 1)模块可以不用编译linux内核,在开发调试的时候,通过动态加载命令加载进内核就可以运行,大大提升了开发调试效率,同时也控制了linux内核的大小 2)模块一旦被加载,它就和linux内核其他的部分一样,直接运行。 2.linux内核模块基本结构 linux内核包含主要的几个基本功能函数和声明函数,具体如下: module_init()是模块的初始化(即加载)接口声明函数,通过传入自己编写的设备初始化接口,对模块进行初始化。 module_exit原创 2020-12-23 07:47:09 · 1052 阅读 · 0 评论 -
linux内核makefile概览
linux内核makefile概览 本博客参照内核官方英文文档 linux的内核makefile主要用于编译整个内核源码,按照用户的需求生成各种目标文件,对于用户来说,编译内核时非常简单的,只需要几个指令就可以做到,但是对于一个驱动开发者而言,了解内核源码的编译机制是非常必要的。 make 和 makefile 需要了解的是:make是linux下的一个程序软件,makefile相当于针对make程序的配置文件,当我们执行make命令时,make将会在当前目录寻找Makefile文件,然后根据Makefil转载 2020-07-15 11:19:49 · 1399 阅读 · 0 评论 -
linux内核模块编译makefile
linux内核可加载模块的makefile 在开发linux内核驱动时,免不了要接触到makefile的编写和修改,尽管网上的makefile模板一大堆,做一些简单的修改就能用到自己的项目上,但是,对于这些基础的东西,更应该做到知其然并知其所以然。 本篇文章中只讨论linux内核模块编译的makefile,linux内核makefile总览可以参考另一篇博客:linux内核makefile概览 本篇博客参考官方文档。 linux内核使用的是kbuild编译系统,在编译可加载模块时,其makefile的风格和转载 2020-07-15 11:18:38 · 1824 阅读 · 0 评论 -
Linux下编写和加载 .ko 文件(驱动模块文件)
一、.ko 文件介绍 .ko文件是kernel object文件(内核模块),该文件的意义就是把内核的一些功能移动到内核外边, 需要的时候插入内核,不需要时卸载。 二、优点 (1)这样可以缩小内核体积; (2)使用方便。 三、.ko文件一般的用处 (1)作为一个功能模块,需要使用时,直接插入运行就行。如在imx6上连接模拟摄像头,先运行模拟摄像头对应的驱动模块 camera.ko文件,然后对应的工程执行文件运行就行。 四、使用.ko 文件 1、加载驱动模块test.ko (1)方法一 进入test.ko驱动转载 2020-07-10 09:50:02 · 1609 阅读 · 0 评论