linux驱动
(刘*牛)
这个作者很懒,什么都没留下…
展开
-
linux设备驱动详解
第九章 异步通知机制主要说下代码::我测试的内核环境是 5.4.311.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 · 203 阅读 · 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 · 1051 阅读 · 0 评论 -
linux内核makefile概览
linux内核makefile概览本博客参照内核官方英文文档linux的内核makefile主要用于编译整个内核源码,按照用户的需求生成各种目标文件,对于用户来说,编译内核时非常简单的,只需要几个指令就可以做到,但是对于一个驱动开发者而言,了解内核源码的编译机制是非常必要的。make 和 makefile需要了解的是:make是linux下的一个程序软件,makefile相当于针对make程序的配置文件,当我们执行make命令时,make将会在当前目录寻找Makefile文件,然后根据Makefil转载 2020-07-15 11:19:49 · 1397 阅读 · 0 评论 -
linux内核模块编译makefile
linux内核可加载模块的makefile在开发linux内核驱动时,免不了要接触到makefile的编写和修改,尽管网上的makefile模板一大堆,做一些简单的修改就能用到自己的项目上,但是,对于这些基础的东西,更应该做到知其然并知其所以然。本篇文章中只讨论linux内核模块编译的makefile,linux内核makefile总览可以参考另一篇博客:linux内核makefile概览本篇博客参考官方文档。linux内核使用的是kbuild编译系统,在编译可加载模块时,其makefile的风格和转载 2020-07-15 11:18:38 · 1821 阅读 · 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 · 1598 阅读 · 0 评论