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

编写Linux驱动程序步骤如下:

一、建立Linux驱动框架(装载、卸载Linux驱动)

Linux内核在使用驱动时首先要装载驱动,在装载过程中进行一些初始化动作(建立设备文件、分配内存等),在驱动程序中需提供相应函数来处理驱动初始化工作,该函数须使用module_init宏指定;Linux系统在退出是需卸载Linux驱动,卸载过程中进行一些退出工作(删除设备文件、释放内存等),在驱动程序中需提供相应函数来处理退出工作,该函数须使用module_exit宏指定。Linux驱动程序一般都要这两个宏指定这两个函数,所以包含这两个宏以及其所指定的两个函数的C程序可看作是Linux驱动的框架。

二、注册和注销设备文件

任何Linux驱动都需要有一个设备文件来与应用程序进行交互。建立设备文件的工作一般在上一步module_init宏指定的函数中完成的,可以使用misc_register函数创建设备文件;删除设备文件的工作一般在上一步module_exit宏指定的函数中完成的,可以使用misc_deregister函数删除设备文件。

三、指定驱动相关信息

驱动程序是自描述的,驱动程序的信息需要在驱动源代码中指定。通过MODULE_AUTHOR(作者姓名)、MODULE_LICENSE(使用的开源协议)、MODULE_ALIAS(别名)、MODULE_DESCRIPTION(驱动描述)等宏来指定与驱动相关的信息,这些宏一般写在驱动源码文件的结尾。可通过modinfo命令获取这些信息。

四、指定回调函数

Linux驱动包含了很多动作,也称为事件,如“读”“写”事件,触发相应事件时Linux系统会自动调用对于驱动程序的相应回调函数。一个驱动程序不一定要指定所以的回调函数。回调函数通过相关机制进行注册。如与设备文件相关的回调函数使用misc_register函数注册。

五、编写业务逻辑

六、编写Makefile文件

Linux内核源码的编译规则是通过Makefile文件定义的,每个Linux驱动程序必须要有一个Makefile文件。

七、编译Linux驱动程序

Linux驱动程序可直接编译进内核(使用obj-y编译),也可以作为模块单独编译(使用obj-m编译)。

八、安装和卸载Linux驱动

如果将驱动编译进内核,只要Linux使用该内核,驱动程序就会自动装载。如果Linux驱动程序以模块单独存在,需要使用insmod或modprobe命令装载Linux驱动模块,使用rmmod命令卸载该模块。

我的博客园地址是:http://www.cnblogs.com/zzp036/p/5449784.html

时间: 2024-11-02 10:02:44

Android深度探索(卷1)HAL与驱动开发 第六章读书心得的相关文章

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

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内核源程序中也占有60%以上,因此熟悉驱动的编写很重要. Linux系统将每一个驱动都映射成一个文件.这些文件称为设备文件或驱动文件,都存在/dev目录中.这样,在应用程序看来,硬件设备只是一个设备文件,应用程序可以像操作普通文件一样对硬件设备进行操作,从而大大方便了对设备的处理. 编写驱动程序的步骤: (1)建

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与驱动开发 第五章 搭建S3C6410 开发板的测试环境

第五章 搭建S3C6410 开发板的测试环境 心得体会 开始进行安装串口调试工具:minicom  OK6410开发板带了一个串口.可以通过串口线与PC连接.Linux驱动在输出调试信息的同时会通过串口线教调试信息发送到PC上,这样Linux驱动程序员就可以直接在PC上查看调试信息了.(对一些笔记本需要使用USB转RS232串口线) 1.检测当前系统是否支持USB转串口 #lsmod | grep usbserial 2.安装minicom #apt-get install minicom 3.