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

Android深度探索(卷1)HAL与驱动开发

第六章 第一个Linux驱动程序:统计单词个数

    统计单词个数的功能是封装在Linux驱动中的。

    Linux驱动的工作和访问方式是Linux亮点之一,同时受到了业界大防范好评。Linux系统将每一个驱动都映射成一个文件。这些文件称为设备文件或者驱动文件,都保存在 /dev 目录中。这种设计理念使得与Linux驱动进行交互就像与普通文件进行交互一样容易。当然,也比访问Linux API 更容易。由于大多数Linux驱动都有与其对应的设备文件,因此与Linux驱动交换数据就变成了与文件交换数据。

     编写Linux驱动程序的步骤

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

Linux内核在使用驱动时首先需要进行装载驱动。在装载过程中需要进行一些初始化操作。当系统退出时需要进行卸载Linux驱动,在卸载过程中需要释放由Linux驱动占用的资源。在Linux驱动程序中需要提供两个函数来分别处理驱动初始化和退出的工作。这两个函数分别用module和moddule_exit宏指定。

2、注册和注销设备文件

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

4、指定回调函数

5、编写业务逻辑

6、编写Makefile文件

    Linux内核源代码的编译规则是通过Makefile文件定义的。因此编写一个新的Linux驱动程序必须有一个Makefile文件

7、编译Linux驱动程序

8、安装和卸载Linux驱动

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

1、#mkdir建立目录文件夹

2、编写Makefile文件

Obj-m : = vord count.o

Word_count-y : = process.o data.o

编写Linux驱动程序的骨架(初始化和退出驱动)

指定与驱动相关的信息

指定回调函数

    实现统计单词数的算法

    编写word_count驱动程序:

1、get_word_count 函数将mem数组中的第一个为“\0”的字符作为字符串的结尾符,因此在word_count_write 函数中将mem[count]的值设成“\0”,否则get_word_count 函数无法知道要统计单词书的字符串到哪里结束。

2、单词数使用int类型变量存储,在word_count_write函数中统计出单词数(word_count变量的值),在word_count_read 函数中将word_count 整型变量值分解成4个字符存储在buf中,因此,在应用程序中需要将这四个字节组合成Int类型的值

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

    使用多种方式测试Linux驱动

使用Exlipse开发和测试Linux驱动程序

统计单词数的word_count驱动是本书实现的第一个完整的Linux驱动。

时间: 2024-10-13 22:04:00

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

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

本章是一个具体的例子,来详细的介绍开发和测试Linux驱动程序的完整过程.尤其是测试Linux驱动.在这个统计单词个数的实例中,重点是该算法的实现技术:即Linux驱动,而不是如何统计的. 6.1Linux驱到底是什么 Linux驱动的工作方式和访问方式是Linux的特点之一.Linux系统将每一个驱动都映射成一个文件,这些文件被称为驱动文件或设备文件,保存在dev目录中.由于大多数Linux驱动都有与其对应的设备文件,因此与Linux驱动交换数据就变成了与设备文件交换数据.事实上,编写Linu

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

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

  第2章  搭建Android开发环境 2.1  Android底层开发需要哪些工具 开发.测试和调试Linux驱动.HAL程序库需要哪些工具: JDK6或以上版本: Eclipse3.4或以上版本: ADT: CDT: Android SDK: Android NDK: 交叉编译环境: Linux内核源代码: Android源代码: 用于调试开发板和串口工具:minicom . 2.2  安装JDK     直接下载后进行配置. 2.3  搭建Android应用程序开发环境     通过本节