前言

最近研究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驱动管理笔记相关推荐

  1. Linux 驱动学习笔记 - beep(九)

    Linux 驱动学习笔记 - beep(九) 本系列均为正点原子 Linux 驱动的学习笔记, 以便加深笔者记忆.如读者想进一步学习,可以到正点原子官网中下载资料进行学习. 添加 pinctrl 节点 ...

  2. Linux驱动学习笔记

    驱动学习笔记 1.字符设备驱动 Linux 驱动有两种运行方式 第一种就是将驱动编译进 Linux 内核中,这样当 Linux 内核启 动的时候就会自动运行驱动程序. 第二种就是将驱动编译成模块(Li ...

  3. 讯为4412开发板Linux驱动学习笔记

    驱动理论专题一 Linux驱动程序的基本认识 有了内存管理单元,就有虚拟地址,物理地址. 驱动理论专题二 学会查看原理图 以LED2为示例 通过原理图查看到KP_COL0,赋予高电平则能点亮LED2, ...

  4. IMX6ULL嵌入式Linux驱动学习笔记(二)

    IMX6ULL嵌入式Linux驱动学习 一.字符设备驱动 二.驱动模块的加载与卸载 三.字符设备的注册与注销 四.设备号 五.file_operations的具体实现 六.字符设备驱动框架 七.编写应 ...

  5. Linux nor flash分区,Linux驱动开发笔记:NOR FLASH编写实例

    1. 背景介绍 板子上的zynq通过emc外接一块nor flash,地址分配如下: Nor flash的起始地址为0x80000000.当zynq上运行Linux后可以通过对该地址起始的区域进行擦除 ...

  6. linux内存管理笔记(三十九)----kswapd内存回收

    在linux操作系统中,当内存充足的时候,内核会尽量使用内存作为文件缓存(page cache),从而提高系统的性能.例如page cache缓冲硬盘中的内容,dcache.icache缓存文件系统的 ...

  7. 嵌入式Linux驱动开发笔记(未完待续。。。)

    零.嵌入式Linux驱动编程思想 1.面向对象(把一个事件抽象成一个结构体) 2.分层 3.分离 一.Git仓库用法 1.linu终端输入下面命令安装 git clone https://e.codi ...

  8. ip核在linux的驱动,Linux驱动开发笔记:对zynq PL部分IP核的驱动开发过程

    reg_addr = (((hopcount+1) #include * Xilinx RapidIO 3. 驱动设计 } #include Amba_pl对应PL部分的amba,devicetree ...

  9. linux驱动开发笔记 一 基本流程

    linux驱动开发, 有特定的模式, 在我看来linux驱动只做了一件事, 将设备统一转换成了统一的3类虚拟设备 分别是: 1. 字符设备 2. 块设备 3. 网络设备 linux驱动开发, 需要在U ...

  10. linux驱动学习笔记(三)阻塞与非阻塞IO

    Linux驱动中阻塞与非阻塞IO 前言 阻塞 非阻塞 一.等待队列 1.等待队列头 2.等待队列 模板 二.轮询 模板 总结 前言 阻塞和非阻塞io是两种不同的设备访问方式. 阻塞 阻塞IO表示在执行 ...

最新文章

  1. [bzoj2259][Oibh]新型计算机_Dijkstra
  2. linux下vim编辑器的基本使用
  3. sharepoint指定的人可以看到列表项
  4. 数据中心新认证出现,UPTIME面临挑战
  5. std::get(std::tuple)
  6. ubuntu 安装自动解决依赖冲突
  7. 我是机器人布里茨_9.19机器人钩子范围增加,这些位置阴人无敌,一Q一个小朋友...
  8. Andoird自定义ViewGroup实现竖向引导界面
  9. css3缩放 transform: scale() 使用缩放之后顶点对齐问题
  10. 用python写一个telnet另一台电脑并开启某个应用程序_Python-Anaconda的安装和配置
  11. 设置CMD窗口为UTF-8编码
  12. 第 19 次 CCF CSP 认证 202006-2 稀疏向量(svector)
  13. 在Spring+Hibernate项目中使用原生SQL进行查询和执行SQL处理
  14. ios首次加载web_iOS预加载Web页面方案
  15. 管理感悟:工作管理的两大要点
  16. sql依据单个字段去重_Java面试之常用SQL
  17. 时间服务器端口协议,ntp时间服务器
  18. qt toggled trigger clicked区别
  19. 微信指纹支付提示java6_苹果6微信指纹支付每次提示请验证已有的指纹用于支付,怎样才能支付?...
  20. win7命令设置自动关机

热门文章

  1. 网络攻防技术——端口扫描
  2. 软件开发中的EJB是什么?
  3. 浙江大学黄杨思博计算机学院,浙江大学节能减排社会实践与科技竞赛成功举行.DOC...
  4. 分享四款H5怀旧小游戏魔塔+伏魔记+三国霸业+寻仙纪
  5. CommandName属性和CommandArgument属性
  6. 文字输入效率神器:输入法辅助工具 KeyboardHolder
  7. C++ DNF脚本源码模板开源
  8. 《善用佳软:高效能人士的软件应用之道》一第2章 办公软件:核心应用,实用技巧...
  9. ExtJS2.0实用简明教程——可编辑表格EditorGridPanel
  10. canvas实现动态小球碰撞