Linux系统将每一个驱动都映射成一个文件.这些文件称为设备文件或驱动文件,都保存在/dev目中。这种设计理念使得与Linux驱动进行交互就像与普通文件进行交互一样容易。

由于大多数Linux驱动都有与其对应的设备文件, 因此与Linux驱动交换数据就变成了与

设备文件交换数据。例如,向Linux打印机驱动发送一个打印命令,可以直接使用C语言函数open打开设备文件, 使肝 函数 oc tl 向该驱 的设备文件发送打印命令.

编写linux驱动的步骤

第一步:建 Linu 驱动骨架 装载和卸载 Linux驱动)

任何类型的 序都有 个基本的结构,例如, 谣言需要有一个入口函数 ma •. inux 驱动程

序也不例外。 Linux 内核在使用驱动时首先需要装载驱动 在装载过程中需要进行 初始

例如,建立设 文件 分配内存地址 等。当 nux 系统退出时需要卸载 inux 驱动,在

卸载的过程中需要 放由 linux 驱动占用的资源

第二步:注册和注销设备文件

以分别使用 misc gi mis dere ter 函数创建和移除设备文件。

第三步:制定与驱动相关的东西‘

MOD ULE_A UTHORMODULE CE SE MOD ULE LI MODUL DES RIPT IO 等宏可以指定与驱动相关的信息。

第四步:指定回调函数

个驱动程序并不 定要指定所有的困调函数.回调函数会通过相关机制进行注册

第五步:编写业务逻辑

linux驱动的核心部分。光有骨架和回调函数的 Linux 驱动是没有任何意义的。任何一个完整的 Li nux驱动都会做一些与其功能相关的工作.

第六步:编写Makefile文件

第七步:编译Linux驱动程序

第八步:安装和卸载linux驱动

编写一个统计单词个数驱动

  1. 命令建立存放 inux 驱动程序的目录
  2. 建立驱动源代码文件
  3. 编写一个 Makefile 文件
  4. 编写 Linux 驱动程序的骨架部分,Linux驱动的初始化和退出函数
  5. 安装 Linux 驱动insmod word count.k
  6. 查看 word_count 是否成功安装
  7. 卸载 Li nux 驱动
  8. 查看由 Linux 驱动动输出的日志信息

转载于:https://www.cnblogs.com/5pi0/p/5543858.html

安卓深度探索(卷一)第六章相关推荐

  1. 《Android深度探索卷一》读书笔记六

    1.简介 ARM架构的开发板基于X86架构的PC在CPU指令以及二进制格式上都有所不同.如果Linux驱动需要访问硬件(如LCD .WIFI,蓝牙等),这些硬件很难在PC上进行模拟,就要在带有这些硬件 ...

  2. Android深度探索-卷1第二章心得体会

    这章介绍了搭建Android开发环境的的搭建,主要是在Linux上搭建Android开发环境 总体来说因为都是在Linux下开发的,so,只介绍了在Linux环境下的搭建 在搭建过程中全是命令操作,和 ...

  3. TYD深度学习入门 第六章 递归神经网络

    目录 课时49 递归神经网络原理 课时52 LSTM网络结构 (长短期记忆网络) 课时49 递归神经网络原理 传统的神经网络,第一次传入神经网络的数据,对第二次传入的数据是没有影响的,样本之间 相互独 ...

  4. [翻译] 神经网络与深度学习 第六章 深度学习 - Chapter 6 Deep learning

    目录: 首页 译序 关于本书 关于习题和难题 第一章 利用神经网络识别手写数字 第二章 反向传播算法是如何工作的 第三章 提升神经网络学习的效果 第四章 可视化地证明神经网络可以计算任何函数 第五章 ...

  5. 《深度探索C++对象模型》读书笔记第五章:构造析构拷贝语意学

    <深度探索C++对象模型>读书笔记第五章:构造析构拷贝语意学 对于abstract base class(抽象基类),class中的data member应该被初始化,并且只在constr ...

  6. Android深度探索(卷1)HAL与驱动开发 第四章 源代码的下载和编译 读书笔记

    Android深度探索(卷1)HAL与驱动开发 第四章 源代码的下载和编译 读书笔记     本章学习了使用git下载两套源代码并搭建两个开发环境.分别为Android源代码和Linux内核源代码.A ...

  7. 《Android深度探索》第一章心得体会

    <Android深度探索>第一章心得体会 由于Android系统现在的火爆,关于Android系统的应用开发不断出现,Android系统不一定只满足在手机这一种 平台上运行想要在不同的设备 ...

  8. Android深度探索--HAL与驱动开发----第五章读书笔记

    第五章主要学习了搭建S3C6410开发板的测试环境.首先要了解到S3C6410是一款低功耗.高性价比的RISC处理器它是基于ARMI1内核,广泛应用于移动电话和通用处理等领域. 开发板从技术上说与我们 ...

  9. 深度探索C++对象模型第2章 构造函数语义学

    默认构造函数 两个误区: 1 任何class如果没有定义默认构造函数,就会被合成一个出来:只有在某些情况下被合成 2 编译器合成出来的默认构造函数会明确设定class中每一个数据成员的默认值 :默认值 ...

  10. 第2章构造函数语义学读书笔记——深度探索c++对象模型

    深度探索c++对象模型 第2章 构造函数语义学 2.1 Default Constructor的构建操作 2.2 Copy Constructor的构造操作 2.3 程序转化语义学 2.4 成员的初始 ...

最新文章

  1. More than Moore的探索
  2. openblas 矩阵算法库 简介
  3. [摘抄]一些软件设计的原则
  4. go 异常捕获处理 panic defer recover
  5. LeetCode 1394. 找出数组中的幸运数(map计数)
  6. c语言不会可以学好java吗_不会C语言能学Java吗
  7. 偏差、方差和噪声的权衡关系
  8. mysql执行计划详解
  9. 推荐一个node QQ机器人框架-onebot
  10. 学习编程到底用不用记笔记?
  11. dubbo 中文官网
  12. android隐藏微信好友,如何使用微信隐藏的恢复小技巧?微信好友恢复!
  13. WSTMart开发文档
  14. 创新培养模式,多渠道打造技能人才培养高地
  15. urllib库的学习与使用
  16. [CTSC2016]时空旅行(斜率优化+线段树分治)
  17. Matplotlib使用Latex中文
  18. MAC下虚拟机PD转换成win上可以用的vmware
  19. 【Python代码基础(符号篇1)】
  20. 量子计算机没有热量,最新研究:量子气体不会带走热量

热门文章

  1. 苹果Mac 3D 数字绘画工具:Substance 3D Painter
  2. 如何在恢复模式下启动 Mac?
  3. macOS Big Sur M1机型,如何正确完成软件的系统扩展设置?
  4. 文件隐藏工具Funter for Mac使用方法
  5. 一个卡片式的ViewPager,带你玩转ViewPager的PageTransformer属性!
  6. 【Firewalld(Iptables)】
  7. Linux下的网卡驱动程序的编写过程(转)
  8. js系列:时间格式转成时间戳和比较某个时段是否在另一个时间段内
  9. Linux上查到目前透过FTP进来的使用者
  10. 别乱提交代码了,你必须知道的 Git 分支开发规范!