Android深度探索读书笔记 第十章

对于复杂的linux驱动及HAL等程序库,需要使用各种方法对其进行调试。首先接介绍使用printk函数,该函数与printf函数类似,printk函数运行在内核空间,printf函数运行在用户空间。Printk函数的原型:asmlinkage int printk(const char *fmt, ...)第一个参数表示个格式字符串,后面是可变参数,也就是说,printk函数至少要有1个参数,如果格式字符串包含有占位符,后面必须跟与占位符相等数量的参数,以便一一对应传入 printk函数。使用printk函数可以方便的将消息写入日志文件和控制台,但大量使用printk函数频繁操作日志文件或控制台设备文件会严重影响linux驱动的性能,为了防止此事发生,要求linux驱动只在开发阶段使用printk函数输出消息。在linux文件系统中,/proc经常被用来作为内核空间与用户空间进行数据交互的工具。/proc文件系统的行为方式与设备文件系统/dev类似,/proc是虚拟文件系统,所有读写/proc的操作都是对内存的读写。/proc文件系统与/dev文件系统一样也需要设置访问文件的动作处理函数,/dev文件系统通过file_operations.read和file_operations.write函数指针变量设置读写设备文件的读写动作处理函数。而/proc文件系统主要通过proc_dir_entry.read_proc和proc_dir_entry.read_write函数指针来设置读写/proc目录中的虚拟文件的动作处理函数。Proc_dir_entry代表一个虚拟目录或文件。

http://www.cnblogs.com/sam0304/

时间: 2024-10-14 16:35:52

Android深度探索读书笔记 第十章的相关文章

android深度探索读书笔记

第八章 让开发板发出声音:蜂鸣器驱动 蜂鸣器是S3C6410 开发板上带的个硬件设备.可以通过向寄存器写入特定的值来控制蜂鸣器发出尖叫声.介绍蜂鸣器的实现原犁,并实现完整的蜂呜器驱动,可以打开和关闭蜂鸣器时驱动的实现方式不同于LED PWM 驱动将由多个文件组成.这也是大多Linux 驱动的标准实现方式也就是说个复杂的驱动不太可能将所有的代码都放在个文件中.最好将关的代码放在相应文件中.在编译 Linux 驱动时将这些文件进行联合编译.本节将介绍把Linux 驱动分成多个文件的方式.这些文件中的

Android深度探索读书笔记 第九章

HAL是建立在linux驱动之上的一套程序库,这套程序库属于linux内核层之上的应用层.编写一款支持HAL的linux驱动程序:1.在为linux驱动添加HAL,要想尽量保护敏感数据.Linux驱动的代码就要尽量简洁,尽可能将业务逻辑放到HAL library中.2.HA类就是普通的linux Library文件 ,但这类库文件有一个接口.通过HAL_MODULE_INFO_SYM变量实现.3.service Library也是Linux Library,也就是说service Library

Android深度探索读书笔记 第一章

第一章首先介绍android系统架构(android是一个非常优秀的嵌入式操作系统),总共分为四层:第一层Linux内核,由于android是基于Linux内核的,所以android跟其他Linux系统没什么差异.这一层这一层主要包括Linux的驱动程序以及内存管理.进程管理.电源管理等.第二层编写的代码库,也包括Dalivk虚拟机的运行时.第三层android SDK 层.第四层应用程序(相当于android的UI).而这一层主要靠第三层中的Android SDK API 完成各种功能.其次介

Android深度探索读书笔记 第二章

第二章介绍的是搭建android底层的开发环境 ,主要包括android应用程序开发环境.android NDK开发环境和交叉编译环境的搭建.首先介绍的是开发测试和调试Linux驱动.HAl程序需要的工具:JDK6或以上版本:Eclipse3.4或以上版本:ADT:CDT:androidSDK:Android NDk:交叉编译环境:Linux内核源代码:android源代码:用于调试的串口工具 minicom.接着介绍的是JDK的安装:首先从官方网站(http://www.oracle.com/

Android深度探索读书笔记 第八章

代码的重用分为静态重用跟动态重用.静态重用:采用标准的c程序的方式,将要重用的代码放在其他的文件中,如果要使用相应的某些功能,include相应头文件即可.动态重用:也就是一个linux驱动可以使用另外一个linux驱动中的资源.还有另外一种代码共享的方式:,模块依赖,也称为导出符号.在一个驱动模块里使用另外一个驱动模块里的被导出的符号(常量.变量.函数等).编译是由多个文件组成的linux驱动,如果linux驱动代码不多,可以将所有的代码放在一个文件中,如果linux驱动代码比较复杂,就需要使

Android深度探索读书笔记 第三章

第三章主要介绍的是Git,首先是安装git可以使用这些命令(#apt-get inatall git    #apt-get inatall git-doc git-svn git-email git-gui gitl)来安装git,其中Git包含了大部分git命令是必须安装的软件包.其次是查看git文档:在Linux下可以直接使用man命令查看指定命令的帮助文档.如要查询git-checkout命令的帮助文档,可以使用#man git-checkout 接着是源代码的提交与获取:1创建版本库 

Android深度探索(卷1)HAL与驱动开发 第一章 Android系统移植与驱动开发概述 读书笔记

Android深度探索(卷1)HAL与驱动开发 第一章 Android系统移植与驱动开发概述 读书笔记 本章是 Android系统移植与驱动开发概述性的具体讲解.首先,Android被分为了四层架构.在最底层的是Linux内核 .然后分别是C/C++代码库.Android SDK A和应用程序.而Android的移植又分为系统移植和应用移植.系统移植要实现Android操作系统在其他硬件平台上运行起来,其中的关键是Linux的内核.内核必须要完成对平台上运行的各个硬件的识别.所以这就需要Linu

Android深度探索(卷1)HAL与驱动开发 第二章 搭建Android开发环境 读书笔记

Android深度探索(卷1)HAL与驱动开发 第二章 搭建Android开发环境 读书笔记   本章主要讲解在Ubuntu Linux 下搭建Android开发环境. 1.JDK:从官网下载压缩包,并将其解压缩. Gedit etc/profile 并设置PATH环境变量,记得PATH. 2.搭建Android应用程序开发环境. 安装Android SDK 安装Eclipse 安装ADT 配置ADT 建立AVD 这个步骤是安装Android SDK,步骤与操作与在Windows操作系统下的安装

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

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