关于linux驱动管理笔记
前言
最近研究linux驱动,感觉有点心得,可是不够系统,但是我做应用的,基本了解原理,就已经足够了,这里主要讲解一些个人感悟,有机会写一些整体笔记,这里我还是记录下主要的看驱动的思路,可以让人更加快速的了解驱动的流程,加深记忆
正文
linux的所有东西都是以文件形式存在的,当然我们驱动也是这样出来的,基本文件当然是在文件系统,也就是硬盘中有一个目录项,让后存储所有目录,和文件。但是对于驱动,这种当然是靠注册来的,也就是我们通过一些特定的函数,吧我们文件挂在特定节点,比如、/dev/,/proc/之类的,这里我们暂时不要纠结挂在这个函数的如何实现,这个太难,我们只要知道在父目录中,也就是/dev/或者/proc/这里面试一个数据结构,里面有个队列,这些队列保存了所有的子目录,或者文件,这里我们只要在开机或者特定时候,直接添加到这个对列中,就好了。
但是有个问题,我们如何操作这些文件呢?你们会发现,当这是一个文件目录时候,我们需求显示所有的子文件,当是文件时候,我们需求显示内容,可是对于驱动呢?鼠标,网卡等等,我们需要一套特定的处理函数,这里也是我们需要挂入的,这里还算简单,我们最好的方法对于同一种介质,我们只用使用根目录的方法表即可。这里我们不用关注。
那么我们如何编写驱动呢,
这里我也不太懂,这里是用的是注册机制。貌似通过声明来注册,
module_init(你的init方法);
module_exit(你的注销方法);
这里的注册方法需要一些特定的函数,吧file_ops方法函数注册进去,并且分出驱动号等等,这个file_ops里面有至少应该有open()和read(),write()方法,这里到底处理什么东西,当然是我们驱动的寄存器,可是我们只用挂入系统一些全局的东西,我们只用在内存中申请一片空间即可,log和binder就是这个道理。
在我们系统读取文件的时候,我们仅仅知道一个目录,可是我们通过目录,可以找到需要的目录项,刚才我们知道我们挂入的是一个目录项这里有操作函数列表,当我们open(path)的时候,首先找到path对应的目录项,然后调用方法列表中的open函数,这里我们有一个file的结构体。这里我们应该知道file_ops中open函数的参数其实就是你找到的结构体,这里记住呦!!
后记
这里很简单,但是道理就是这样。好多具体实现都没有写,有机会我在好好补充!!
关于linux驱动管理笔记相关推荐
- Linux 驱动学习笔记 - beep(九)
Linux 驱动学习笔记 - beep(九) 本系列均为正点原子 Linux 驱动的学习笔记, 以便加深笔者记忆.如读者想进一步学习,可以到正点原子官网中下载资料进行学习. 添加 pinctrl 节点 ...
- Linux驱动学习笔记
驱动学习笔记 1.字符设备驱动 Linux 驱动有两种运行方式 第一种就是将驱动编译进 Linux 内核中,这样当 Linux 内核启 动的时候就会自动运行驱动程序. 第二种就是将驱动编译成模块(Li ...
- 讯为4412开发板Linux驱动学习笔记
驱动理论专题一 Linux驱动程序的基本认识 有了内存管理单元,就有虚拟地址,物理地址. 驱动理论专题二 学会查看原理图 以LED2为示例 通过原理图查看到KP_COL0,赋予高电平则能点亮LED2, ...
- IMX6ULL嵌入式Linux驱动学习笔记(二)
IMX6ULL嵌入式Linux驱动学习 一.字符设备驱动 二.驱动模块的加载与卸载 三.字符设备的注册与注销 四.设备号 五.file_operations的具体实现 六.字符设备驱动框架 七.编写应 ...
- Linux nor flash分区,Linux驱动开发笔记:NOR FLASH编写实例
1. 背景介绍 板子上的zynq通过emc外接一块nor flash,地址分配如下: Nor flash的起始地址为0x80000000.当zynq上运行Linux后可以通过对该地址起始的区域进行擦除 ...
- linux内存管理笔记(三十九)----kswapd内存回收
在linux操作系统中,当内存充足的时候,内核会尽量使用内存作为文件缓存(page cache),从而提高系统的性能.例如page cache缓冲硬盘中的内容,dcache.icache缓存文件系统的 ...
- 嵌入式Linux驱动开发笔记(未完待续。。。)
零.嵌入式Linux驱动编程思想 1.面向对象(把一个事件抽象成一个结构体) 2.分层 3.分离 一.Git仓库用法 1.linu终端输入下面命令安装 git clone https://e.codi ...
- ip核在linux的驱动,Linux驱动开发笔记:对zynq PL部分IP核的驱动开发过程
reg_addr = (((hopcount+1) #include * Xilinx RapidIO 3. 驱动设计 } #include Amba_pl对应PL部分的amba,devicetree ...
- linux驱动开发笔记 一 基本流程
linux驱动开发, 有特定的模式, 在我看来linux驱动只做了一件事, 将设备统一转换成了统一的3类虚拟设备 分别是: 1. 字符设备 2. 块设备 3. 网络设备 linux驱动开发, 需要在U ...
- linux驱动学习笔记(三)阻塞与非阻塞IO
Linux驱动中阻塞与非阻塞IO 前言 阻塞 非阻塞 一.等待队列 1.等待队列头 2.等待队列 模板 二.轮询 模板 总结 前言 阻塞和非阻塞io是两种不同的设备访问方式. 阻塞 阻塞IO表示在执行 ...
最新文章
- [bzoj2259][Oibh]新型计算机_Dijkstra
- linux下vim编辑器的基本使用
- sharepoint指定的人可以看到列表项
- 数据中心新认证出现,UPTIME面临挑战
- std::get(std::tuple)
- ubuntu 安装自动解决依赖冲突
- 我是机器人布里茨_9.19机器人钩子范围增加,这些位置阴人无敌,一Q一个小朋友...
- Andoird自定义ViewGroup实现竖向引导界面
- css3缩放 transform: scale() 使用缩放之后顶点对齐问题
- 用python写一个telnet另一台电脑并开启某个应用程序_Python-Anaconda的安装和配置
- 设置CMD窗口为UTF-8编码
- 第 19 次 CCF CSP 认证 202006-2 稀疏向量(svector)
- 在Spring+Hibernate项目中使用原生SQL进行查询和执行SQL处理
- ios首次加载web_iOS预加载Web页面方案
- 管理感悟:工作管理的两大要点
- sql依据单个字段去重_Java面试之常用SQL
- 时间服务器端口协议,ntp时间服务器
- qt toggled trigger clicked区别
- 微信指纹支付提示java6_苹果6微信指纹支付每次提示请验证已有的指纹用于支付,怎样才能支付?...
- win7命令设置自动关机
热门文章
- 网络攻防技术——端口扫描
- 软件开发中的EJB是什么?
- 浙江大学黄杨思博计算机学院,浙江大学节能减排社会实践与科技竞赛成功举行.DOC...
- 分享四款H5怀旧小游戏魔塔+伏魔记+三国霸业+寻仙纪
- CommandName属性和CommandArgument属性
- 文字输入效率神器:输入法辅助工具 KeyboardHolder
- C++ DNF脚本源码模板开源
- 《善用佳软:高效能人士的软件应用之道》一第2章 办公软件:核心应用,实用技巧...
- ExtJS2.0实用简明教程——可编辑表格EditorGridPanel
- canvas实现动态小球碰撞