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

操作系统是通过各种驱动程序赖家与硬件设备的,它为用户屏蔽了各种各样的设备,驱动硬件是操作系统最基本的功能,并且提供统一的操作方式。设备驱动程序是操作系统最基本的组成部分之一,在Linux内核源程序中也占有60%以上,因此熟悉驱动的编写很重要。

Linux系统将每一个驱动都映射成一个文件。这些文件称为设备文件或驱动文件,都存在/dev目录中。这样,在应用程序看来,硬件设备只是一个设备文件,应用程序可以像操作普通文件一样对硬件设备进行操作,从而大大方便了对设备的处理。

编写驱动程序的步骤:

(1)建立Linux的驱动骨架(装载和卸载Linux驱动)任何类型的程序都有一个基本结构,linux驱动程序也不例外。Linux内核在使用驱动时首先需要装载驱动。在装载过程中也需要进行一些初始化的工作。

(2)注册和注销设备文件

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

(3)指定与驱动相关的信息

驱动程序是自描述的。

(4)指定回调函数

一个驱动程序并不一定要指定所有的回调函数。

(5)编写业务逻辑

(6)编写Makefile文件

(7)编写Linux驱动程序

(8)安装和卸载Linux驱动

1.准备工作

建立存放Linux驱动程序的目录

建立驱动源代码文件

编写一个makefile文件

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

安装linux驱动

查看word_count是否成功安装

卸载linux驱动

查看由驱动输出的日志信息

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

模块作者,模块描述,模块别称,开源协议

4. 注册和注销设备文件

5.指定回调函数

6.实现统计单词数的算法

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

测试linux驱动

使用ubuntu linux测试

在android模拟器上通过原声(native)C程序测试

使用android NDK测试

使用java代码直接操作设备文件测试

使用S3C6410开发板测试

将驱动编译进linux内核进行测试

使用eclipse开发和测试linux驱动

1.建立c工程

2.建立c源代码文件连接

3.设置include路径

4.编译linux驱动

在eclipse中测试linux驱动

1.导入test_word_count.c文件

2.设置include路径

3.建立targe

4.build工程

5.运行测试程序

需要注意的是,用户空间与内核空间完成同样或类似的功能的函数,宏等资源的名称并不一定相同,有的名称类似如:malloc和kmalloc ,有的不同如:atoi和simple_strol 等

http://home.cnblogs.com/u/zivjeli/

时间: 2024-08-01 10:45:55

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

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

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

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驱动程序:统计单词个数 读书笔记

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

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与驱动开发第三章总结

Git—由linux之父Linus编写,是进行源代码管理的一种软件.Linus以一个文件系统专家和内核设计者的视角对Git进行了设计,其独特的设计让Git拥有了非凡的性能和最为优化的存储能力,Git在各方面都优于其他同类的的源代码管理软件.在学习Android及linux 内核,驱动开发的过程中会涉及大量的源代码,而这些代码都是由Git 管理的,因此,在学习Android移植与linux驱动开发之前了解Git的理论和基本使用方法.安装Git 以及查看Git 文档并不难,而在源代码的提交与获取的过

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应用程序开发环境     通过本节