Android深度探索(卷1)HAL与驱动开发 第六章 第一个Linux驱动程序:统计单词个数 读书笔记

本章是一个具体的例子,来详细的介绍开发和测试Linux驱动程序的完整过程。尤其是测试Linux驱动。在这个统计单词个数的实例中,重点是该算法的实现技术:即Linux驱动,而不是如何统计的。

6.1Linux驱到底是什么

Linux驱动的工作方式和访问方式是Linux的特点之一。Linux系统将每一个驱动都映射成一个文件,这些文件被称为驱动文件或设备文件,保存在dev目录中。由于大多数Linux驱动都有与其对应的设备文件,因此与Linux驱动交换数据就变成了与设备文件交换数据。事实上,编写Linux驱动程序还需要更高级的功能,如向打印机驱动写入数据时,打印机驱动需要接受这些被写入的数据,病通过并口或者USB等串口发送给打印机。要实现这一过程就需要Linux驱动可以响应应用程序传递过来的数据。就是Linux驱动的事件,就是回调函数。

6.2编写Linux驱动程序的步骤

Linux驱动程序与其他类型的Linux程序一样,也有自己的规则。

  1. 建立Linux驱动骨架(装载和卸载Linux驱动)

任何类型都有一个基本的结构,如C语言就需要一个入口函数main。Linux内核在使用驱动时首先需要装载驱动,在装载的过程中需要进行一些初始化工作如建立设备文件和分配内存地址空间等。当Linux系统需要退出时需要卸载Linux驱动,要释放Linux驱动占用的资源如删除设备文件,释放内存地址空间等。则在Linux驱动中需要2个函数来分别处理驱动初始化和退出的工作。分别是module_init和module_exit

  1. 注册和注销设备文件

任何一个Linux驱动都需要有一个设备文件,否则应用程序将无法与驱动程序交互。

  1. 指定与驱动相关的信息

驱动程序是自描述的。

  1. 指定回调函数

Linux驱动包含的多种动作也可称为事件。回调函数通过相关机制进行注册。

  1. 编写业务逻辑
  2. 编写Makefile文件
  3. 编译Linux驱动程序
  4. 安装和卸载Linux驱动

以上前5步是关于如何编写Linux驱动程序的 后三步可以使Linux驱动正常工作。

6.3第一个Linux驱动:统计单词个数

1.首先建立存放Linux驱动程序的目录,然后建立源代码文件。最后编写一个makefile文件

2.编写Linux驱动程序的骨架

安装Linux驱动:insmod word_count.ko

查看word_count是否安装成功: lsmod | grep word_count

卸载Linux驱动:rmmod word_count

查看由Linux驱动输出的日志信息:dmesg | grep word_count | tail –n 2

3.指定与驱动相关的信息

4.注册和注销设备文件

5.指定回调函数

6.实现算法

7.编译、安装,卸载Linux驱动程序

本章还介绍了许多种测试Linux驱动。

软件1308班31号 张帆 博客园地址: http://home.cnblogs.com/u/sxauzzz/

时间: 2025-01-02 17:53:43

Android深度探索(卷1)HAL与驱动开发 第六章 第一个Linux驱动程序:统计单词个数 读书笔记的相关文章

Android深度探索(卷1)HAL与驱动开发 第六章 第一个Linux驱动程序:统计单词个数

Android深度探索(卷1)HAL与驱动开发 第六章 第一个Linux驱动程序:统计单词个数 统计单词个数的功能是封装在Linux驱动中的. Linux驱动的工作和访问方式是Linux亮点之一,同时受到了业界大防范好评.Linux系统将每一个驱动都映射成一个文件.这些文件称为设备文件或者驱动文件,都保存在 /dev 目录中.这种设计理念使得与Linux驱动进行交互就像与普通文件进行交互一样容易.当然,也比访问Linux API 更容易.由于大多数Linux驱动都有与其对应的设备文件,因此与Li

Android深度探索(卷1)HAL与驱动开发 第七章 LED将为我闪烁:控制发光二极管 读书笔记

本章的实验将会实现真正意义上的Linux驱动,会实现直接与硬件的交互.需要控制4个LED灯. 7.1LED驱动的实现原理 事实上并不是Linux驱动直接向硬件中的内存写数据,而是与本机的I/O内存进行交互.I/O内存是通过各种接口连接到主机的硬件在主机内存中的映射. 7.2编写LED驱动 1.创建LED驱动的设备文件 (1).使用cdev_init函数初始化cdev (2).指定设备号 (3).使用cdev_add函数将字符设备添加到内核中的字符设备数组中. (4)使用class_create宏

ANDROID深度探索(卷1)HAL与驱动开发 第六章

Linux系统 将每一个驱动都映射成一个文件.这些文件称为设备文件或驱动文件,都保存在/dev目录中. 由于大多数Linux驱动都有与其对应的设备文件, 因此与Linux驱动交换数据就变成了与 设备文件交换数据. 编写Linux驱动程序的步骤: 第 1 步:建立 Linux 驱动骨架 (装载和卸载 Linux 驱动). 第 2 步:注册和注销设备文件. 第 3 步:指定与驱动相关的信息. 第 4 步:指定回调函数. 第 5 步:编写业务逻辑. 第 6 步:编写 Makefile文件. 第 7 步

Android深度探索(卷1)HAL与驱动开发第六章读书笔记

编写Linux驱动程序的步骤 第1步:建立Linux驱动骨架(装载和卸载Linux驱动) 第2步:注册和注销设备文件 第3步:指定于驱动相关的信息 第4步:指定回调函数 第5步:编写业务逻辑 第6步:编写Makefile文件 第7步:编译Linux驱动程序 第8步:安装和卸载Linux驱动 安装Linux驱动: # insmod word_count.ko 查看word_count是否成功安装: # lsmod | grep  word_count 卸载L inux驱动: # rmmod wor

Android深度探索(卷1)HAL与驱动开发第六章总结

操作系统是通过各种驱动程序赖家与硬件设备的,它为用户屏蔽了各种各样的设备,驱动硬件是操作系统最基本的功能,并且提供统一的操作方式.设备驱动程序是操作系统最基本的组成部分之一,在Linux内核源程序中也占有60%以上,因此熟悉驱动的编写很重要. Linux系统将每一个驱动都映射成一个文件.这些文件称为设备文件或驱动文件,都存在/dev目录中.这样,在应用程序看来,硬件设备只是一个设备文件,应用程序可以像操作普通文件一样对硬件设备进行操作,从而大大方便了对设备的处理. 编写驱动程序的步骤: (1)建

Android深度探索(卷1)HAL与驱动开发 心得体会 第十章 嵌入式Linux的调用技术

Android深度探索(卷1)HAL与驱动开发 心得体会 第十章  嵌入式Linux的调用技术 对于复杂的Linux驱动以及HAL等程序库,需要使用各种方法对其进行调试.例如,设置断点,逐步跟踪代码.输出调试信息等.虽然嵌入式Linux在调试方面并没有Visual Studio.Delphi.Eclipse这些可视化工具方便,但是学习一些这方面的技术无疑更有助于开发强大而稳定的Linux内核模块. 对于嵌入式Linux内核模块,可执行程序.代码库的调试可能更要复杂些.因为在大多数时候需要至少两台

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

Android深度探索(卷1)HAL与驱动开发 第四章 源代码的下载和编译 读书笔记     本章学习了使用git下载两套源代码并搭建两个开发环境.分别为Android源代码和Linux内核源代码.Android源代码中包含了HAL(即硬件抽象层) 的代码,并学习了如何搭建这两种开发环境. Android 的移植的本质就是Linux内核的移植,Linux内核的移植主要是Linux驱动的移植.而开发和测试Linux驱动就需要安装以上两个开发环境. 搭建两套环境的具体步骤如下: 一.下载编译和测试A

Android深度探索(卷1)HAL与驱动开发 第三章 Git使用入门 读书笔记

Android深度探索(卷1)HAL与驱动开发 第三章 Git使用入门 读书笔记     本章是对Git的一个概述. Linux是一个开源的系统.事实上,在Linux上许多软件都和底层程序以及内核驱动有关,然而Linux内核的版本非常多,如果每个版本上的软件都采用安装包的形式,则匹配这么多版本的安装包将十分庞大.所以有很多软件不是以二进制安装包的形式来安装和使用的.而是将源代码下载下来,并在每个用户自己的Linux中编译并安装,即使用make 和make install 命令.而Linus作为L

Android深度探索(卷1)HAL与驱动开发读后感---第一章

第1章  Android系统移植与驱动开发概述 1.1  Android 系统架构 Android是一个非常优秀的嵌入式操作系统.经过几年的发展和演进,Android已经发展形成林非常完善的系统架构. Android的系统架构分为4层:Linux内核.C/C++代码库.Android SDK API.应用程序. 1.2  Android 系统移植的主要工作     Android系统移植可分为两部分:应用移植和系统移植.Android移植的主要工作如下:移植Linux驱动.移植HAL. 1.3