Android深度探索心得<10>

对于复杂的Linux驱动以及HAL等程序库,需要使用各种方法对其进行调试。例如,设置断点、逐步跟踪代码、输出调试信息等。

Printk函数的用法与printf函数类似,只不过printk函数运行在内核空间,printf函数运行在用户空间。也就是说,像Linux驱动这样的Linux内核程序只能使用printk函数输出调试信息。Printk函数在printk.c文件中实现。

虽然使用printk函数可以很方便的将消息写入日志文件或控制台。但大量使用printk函数频繁操作日志文件或控制台设备文件(/dev /console)会严重影响Linux驱动性能(因此写磁盘的速度远没有读写内存的速度快),因此,这就要求Linux驱动只在开发阶段使用 printk函数输出信息,在正式发布Linux驱动时将可能影响性能的printk函数去掉。

在Linux文件系统中,/proc经常被用来作为内核空间与用户空间进行数据交互的工具。/proc文件系统的行为方式与设备文件系统 (/dev)类似。/proc是虚拟文件系统,也就是说,/proc并不是真正的文件系统,而是内存映射。所有读写/proc操作都是对内存的读写。所以 读写/proc文件系统的速度远比读写/dev文件系统的速度快。因此,/proc文件系统也可以作为Linux驱动与用户空间程序交互的工具。

时间: 2024-11-05 20:30:01

Android深度探索心得<10>的相关文章

Android深度探索心得(四)

本章主要学的是下载.编译.和测试Android源代码.其次就是学到了下载和编译Linux内核源代码. 首先是编译Android源代码,由于Android源代码中的每一个工程目录都有Android.mk文件,所以在编译整个Android源代码时会递归调用每一个工程目录中的Android.mk文件来编译当前工程. 编译步骤如下: 1. 在Linux终端执行两条命令中的任何一个 #source build/envsetup.sh #.build/envsetup.sh 2. 实用lunch命令设置编译

Android深度探索心得(二)

在这章的学习里,我最主要的收获是如何搭建Android应用程序,安装Android NDK开发环境. 安装Android SDK 配置Android应用程序开发环境的第一步就是下载并安装Android SDK.在如下页面可以下载Windows.Mac OS X和Linux 平台的AndroidSDK. 进入Android SDK下载界面后,会看到一个下载项,黑框中的就是Linux版本的Android SDK,下载该Android SDK,会得到一个Android-sdk-r16-Linux.tr

Android深度探索心得&lt;9&gt;

HAL硬件抽象层是建立在Linux驱动之上的一套程序库.这套程序库并不属于Linux内核,而是属于Linux内核层上的应用层.在传统的 Linux系统中Linux驱动一般有两种类型的代码.Google为Android加入HAL主要有以下目的:统一硬件的调用接口.由于HAL有标准的 调用接口,所以可以利用HAL屏蔽了Linux驱动复杂.不统一的接口:解决了GPL协议:针对一些特殊的要求.对于一些硬件,可能需要访问一些用户空间 的资源,或在内核空间不方便完成的工作以及特殊需求.在这种情况下,可以利用

Android深度探索心得(三)

通过对本章的学习,主要学到的是如何安装Git以及源代码的提取与获取. 在使用Git之前首先应该安装Git.很多Linux系统已经带了Git.如果Linux系统没有安装Git,可使用下面的方法来安装Git的最新版本. Ubuntu Linux10.10(maverick)或更新的版本,可以使用下面的命令来安装Git. #apt-get install git #apt-get install git-doc git-email gitk 其中Git软件包括了大部分Git命令,是必须安装的软件包.而

Android深度探索心得&lt;8&gt;

蜂鸣器也称为PWM脉冲宽度调制,基本原理就是通过脉冲来控制蜂鸣器的打开和停止.蜂鸣 器是开发板上带的一个硬件设备,可以通过向寄存器写入特定的值来控制蜂鸣器发出的声音.本节介绍了蜂鸣器的实现原理,并实现一个完整的蜂鸣器驱动,可以打 开和关闭.PWM驱动的实现方式不同于LED驱动,PWM驱动由多个文件组成,这也是大多数Linux驱动的标准实现方式. Linux驱动的代码重用有很多种方法.分为静态重用和动态重用,静态重用是代码级的重用,就是将需要重用的代码和使用这些代码的使用放在一起编 译,最终生成一

Android深度探索(卷1)HAL与驱动开发 心得体会 第十章 嵌入式Linux的调用技术

Android深度探索(卷1)HAL与驱动开发 心得体会 第十章  嵌入式Linux的调用技术 对于复杂的Linux驱动以及HAL等程序库,需要使用各种方法对其进行调试.例如,设置断点,逐步跟踪代码.输出调试信息等.虽然嵌入式Linux在调试方面并没有Visual Studio.Delphi.Eclipse这些可视化工具方便,但是学习一些这方面的技术无疑更有助于开发强大而稳定的Linux内核模块. 对于嵌入式Linux内核模块,可执行程序.代码库的调试可能更要复杂些.因为在大多数时候需要至少两台

Android 深度探索(卷1)HAL 与驱动开发 第三章 GIT 使用入门 心得体会

Android 深度探索(卷1)HAL 与驱动开发 第三章 GIT 使用入门 心得体会 本章主要介绍GIT的学习,以及介绍GIT用于获取诸多开源项目的源代码. 在使用GIT之前我们首先对其安装,其安装命令: #apt-get  install git #apt-get  install git-doc git-svn git-gui gitk 在Linux 下可以直接使用man命令查看指定命令的帮助文档.这对我们初学者提供了很大的帮助. Git的功能很复杂,为此这章节举例为我们演示如何创建版本库

Android 深度探索(卷1)HAL 与驱动开发 第二章 搭建 Android 开发环境 心得体会

Android 深度探索(卷1)HAL 与驱动开发 第二章 搭建 Android 开发环境 心得体会 本章主要介绍如何搭建Android底层开发的环境,主要包括Android应用程序开发环境,和交叉编译环境的搭建. 其中开发.测试和调试Linux驱动.HAL程序库需要的工具包括如下一些: 1. JDK6或以上版本 2. Eclipse3.4或以上版本 3. ADT(用于开发Android应用程序) 4. CDT(用于开发Android NDK程序) 5. Android SDK 6. Andro

《Android深度探索》第十章心得体会

<Android深度探索>第十章讲的是嵌入式Linux的调试技术.对于复杂的Linux驱动及HAL等程序库,需要使用各种方法对其进行测试.printk函数的用法和printf函数类似,只不过printk函数运行在内核空间,printf函数运行在用户空间.也就是说,像Linux驱动这样的Linux内核程序只能使用printk函数输出调试信息.在Linux文件系统中,/proc经常用来作为内核空间和用户空间进行数据交互的工具./proc文件系统的行为方式和设备文件系统(/dev)类似./proc是