Linux驱动的工作方式就是交互。例如向Linux打印机驱动发送一个打印命令,可以直接使用C语言函数open打开设备文件,在使用C语言函数ioctl向该驱动的设备文件发送打印命令。编写Linux驱动最重要的是编写回调函数,否则与设备文件交互的数据无法得到处理。

建立Linux驱动骨架中使用到两个函数:module_init,module_exit。要进行宏定义。

创建和移除设备文件用misc_register,misc_deregister。

回调函数是由自身生成的,一个驱动程序并不一定要指定所有的回调函数。

具体的业务逻辑与驱动的功能有关,可能有多个函数、多个文件甚至多个Linux驱动模块组成。

程序可以直接编译进内核,也可以作为模块单独使用。

使用输出时用的是printk,可定有疑问为什么不用printf,因为Linux系统中分为用户空间和内核空间,而printf只能运行在用户空间。再者,他们之间进行交互使用的设备文件。

要对开源文件、GPL协议、LGPL协议、BSD协议、MIT协议和Apache License2.0协议理解。

在编写和销毁设备文件时,要注意misc_register只能设置此设备号。

使用cat /proc/devices可以获得显示当前系统中有哪些是主设备以及主设备号

通过file_operation.read和file_operation.write成员变量可以分别指定读写设备要调用的回调函数的指针。

驱动程序编写完成,多次编译该驱动程序,读写目录的驱动程序一样,有build.sh和相关脚本文件。

Cat 命令不会将4个字节还原成int类型的值显示

用于Android模拟器的goldfish内核默认不允许动态加载Linux驱动模块,因此需要cd ~/kernel/goldfish,make menuconfig,要在配置框中选择正确的进入子菜单,否则可能加载内核失败。

Android系统移植与驱动开发——第六章——使用实例来理解Linux驱动开发及心得的更多相关文章

  1. 第一章 Android系统移植与驱动开发概述

    本书第一章首先简单概要地介绍了关于Android系统移植和驱动开发的相关内容. 所谓“移植”是指为特定的自己的设备,如手机定制Android的过程.自己开发一些程序(移植)装载在设备上,使得Andro ...

  2. 第一章Android系统移植与驱动开发概述--读书笔记

    以前,初步学习过嵌入式Linux驱动开发的基础课程,对于驱动开发可以说是有了一点点微末的基础吧.首先我们要对Android嵌入式系统有一个初步的认识,Android系统发展到今天已经具备了完善的架构. ...

  3. Android系统移植与驱动开发----第一章

    第一章 Android系统移植与驱动开发 Android源代码定制完全属于自己的嵌入式系统,但是支持的设备不多,所以要移植,而在移植的过程中使用的不得不提的是驱动开发. Android系统构架主要包括 ...

  4. 浅谈Android系统移植、Linux设备驱动

    一.Android系统架构 第一层:Linux内核 包括驱动程序,管理内存.进程.电源等资源的程序 第二层:C/C++代码库 包括Linux的.so文件以及嵌入到APK程序中的NDK代码 第三层:An ...

  5. 深入浅出 - Android系统移植与平台开发(一)

    深入浅出 - Android系统移植与平台开发(一) 分类: Android移植2012-09-05 14:16 16173人阅读 评论(12) 收藏 举报 androidgitgooglejdkub ...

  6. ASP.NET2.0自定义控件组件开发 第六章 深入讲解控件的属性

    原文:ASP.NET2.0自定义控件组件开发 第六章 深入讲解控件的属性 深入讲解控件的属性持久化(一) 系列文章链接: ASP.NET自定义控件组件开发 第一章 待续 ASP.NET自定义控件组件开 ...

  7. Android深度探索HAL和驱动开发(卷1) 第一章 Android系统移植和驱动开发

    由于Android是基于Linux内核的,因此,Android和其他Linux系统的核心部分差异非常小.然而不同版本的Android使用的Linux内核的版本有细微的差异,所以不同Android驱动可 ...

  8. Android系统移植与驱动开发

    21世纪,Android发展非常迅速,在市场上占有很大的比例,遥遥领先与iOS,很大程度上是因为任何人都可以利用Android的源代码定制完全属于自己的嵌入式开发系统,而不需要向Google交一分钱. ...

  9. Android系统移植与驱动开发--第四章

    第四章 源代码的下载和编译 一个android内核相当于4G,而一个Linux内个只有几百M,Linux内核相对于android内核来说实在是小巫见大巫.了解android源代码不一定要详细了解,只去 ...

随机推荐

  1. codebook法分割前景目标

    利用codebook法训练得到背景模型后,对背景差分得到的掩模图像去噪声并找到较大连通域.相对于平均背景法,它的分割效果更好些.当然,分割效果和背景模型训练的帧数有很大关系,适当调整一些参数会得到更好 ...

  2. B题 - A+B for Input-Output Practice (I)

      Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u   Description You ...

  3. java项目导出jar文件时指定main方法的类

    需要先运行一下main函数,eclipse的Export-->Runnable JAR File ---> 下的Launch configuration下拉列表才会有记录.如果想要删除下拉 ...

  4. bzoj3583: 杰杰的女性朋友 && 4362: Graph

    Description 给出一张n个点的有向图G(V,E).对于任意两个点u,v(u可以等于v),u向v的连边数为: ∑OUT(u,i) * IN(v,i),其中1<=i<=K 其中k和数 ...

  5. Solr4.8.0源码分析(25)之SolrCloud的Split流程

    Solr4.8.0源码分析(25)之SolrCloud的Split流程(一) 题记:昨天有位网友问我SolrCloud的split的机制是如何的,这个还真不知道,所以今天抽空去看了Split的原理,大 ...

  6. [转]Uploading and Downloading VHDs to Windows Azure

    The article shows how to download and upload VHD to Azure. http://michaelwasham.com/windows-azure-po ...

  7. cognos启动报错

    [ ERROR ] Content Manager is unable to process your request because an unexpected event occurred in ...

  8. VS2010中编写宏添加作者信息与函数注释

    这里所说的宏是指通过一系列键盘组合键和可以插入自定义内容.下面介绍怎么编写一个自己的宏: 1.在Visual Studio 2010中按Alt+F11打开宏IDE: 2.打开后选择添加模块: 3.在弹 ...

  9. POJ1416 Shredding Company(dfs)

    题目链接. 分析: 这题从早上调到现在.也不算太麻烦,细节吧. 每个数字都只有两种状态,加入前一序列和不加入前一序列.DFS枚举. #include <iostream> #include ...

  10. 【Express】请求和响应对象

    浏览器发送的信息 app.get('/headers', function(req, res){ res.set('Content-Type', 'text/plain'); var s = ''; ...