安卓深度探索(卷一)第六章
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驱动
编写一个统计单词个数驱动
- 命令建立存放 inux 驱动程序的目录
- 建立驱动源代码文件
- 编写一个 Makefile 文件
- 编写 Linux 驱动程序的骨架部分,Linux驱动的初始化和退出函数
- 安装 Linux 驱动insmod word count.k
- 查看 word_count 是否成功安装
- 卸载 Li nux 驱动
- 查看由 Linux 驱动动输出的日志信息
转载于:https://www.cnblogs.com/5pi0/p/5543858.html
安卓深度探索(卷一)第六章相关推荐
- 《Android深度探索卷一》读书笔记六
1.简介 ARM架构的开发板基于X86架构的PC在CPU指令以及二进制格式上都有所不同.如果Linux驱动需要访问硬件(如LCD .WIFI,蓝牙等),这些硬件很难在PC上进行模拟,就要在带有这些硬件 ...
- Android深度探索-卷1第二章心得体会
这章介绍了搭建Android开发环境的的搭建,主要是在Linux上搭建Android开发环境 总体来说因为都是在Linux下开发的,so,只介绍了在Linux环境下的搭建 在搭建过程中全是命令操作,和 ...
- TYD深度学习入门 第六章 递归神经网络
目录 课时49 递归神经网络原理 课时52 LSTM网络结构 (长短期记忆网络) 课时49 递归神经网络原理 传统的神经网络,第一次传入神经网络的数据,对第二次传入的数据是没有影响的,样本之间 相互独 ...
- [翻译] 神经网络与深度学习 第六章 深度学习 - Chapter 6 Deep learning
目录: 首页 译序 关于本书 关于习题和难题 第一章 利用神经网络识别手写数字 第二章 反向传播算法是如何工作的 第三章 提升神经网络学习的效果 第四章 可视化地证明神经网络可以计算任何函数 第五章 ...
- 《深度探索C++对象模型》读书笔记第五章:构造析构拷贝语意学
<深度探索C++对象模型>读书笔记第五章:构造析构拷贝语意学 对于abstract base class(抽象基类),class中的data member应该被初始化,并且只在constr ...
- Android深度探索(卷1)HAL与驱动开发 第四章 源代码的下载和编译 读书笔记
Android深度探索(卷1)HAL与驱动开发 第四章 源代码的下载和编译 读书笔记 本章学习了使用git下载两套源代码并搭建两个开发环境.分别为Android源代码和Linux内核源代码.A ...
- 《Android深度探索》第一章心得体会
<Android深度探索>第一章心得体会 由于Android系统现在的火爆,关于Android系统的应用开发不断出现,Android系统不一定只满足在手机这一种 平台上运行想要在不同的设备 ...
- Android深度探索--HAL与驱动开发----第五章读书笔记
第五章主要学习了搭建S3C6410开发板的测试环境.首先要了解到S3C6410是一款低功耗.高性价比的RISC处理器它是基于ARMI1内核,广泛应用于移动电话和通用处理等领域. 开发板从技术上说与我们 ...
- 深度探索C++对象模型第2章 构造函数语义学
默认构造函数 两个误区: 1 任何class如果没有定义默认构造函数,就会被合成一个出来:只有在某些情况下被合成 2 编译器合成出来的默认构造函数会明确设定class中每一个数据成员的默认值 :默认值 ...
- 第2章构造函数语义学读书笔记——深度探索c++对象模型
深度探索c++对象模型 第2章 构造函数语义学 2.1 Default Constructor的构建操作 2.2 Copy Constructor的构造操作 2.3 程序转化语义学 2.4 成员的初始 ...
最新文章
- More than Moore的探索
- openblas 矩阵算法库 简介
- [摘抄]一些软件设计的原则
- go 异常捕获处理 panic defer recover
- LeetCode 1394. 找出数组中的幸运数(map计数)
- c语言不会可以学好java吗_不会C语言能学Java吗
- 偏差、方差和噪声的权衡关系
- mysql执行计划详解
- 推荐一个node QQ机器人框架-onebot
- 学习编程到底用不用记笔记?
- dubbo 中文官网
- android隐藏微信好友,如何使用微信隐藏的恢复小技巧?微信好友恢复!
- WSTMart开发文档
- 创新培养模式,多渠道打造技能人才培养高地
- urllib库的学习与使用
- [CTSC2016]时空旅行(斜率优化+线段树分治)
- Matplotlib使用Latex中文
- MAC下虚拟机PD转换成win上可以用的vmware
- 【Python代码基础(符号篇1)】
- 量子计算机没有热量,最新研究:量子气体不会带走热量