Android深度探索——第十章读书笔记及心得

嵌入式linux的调用技术

——第10章读书笔记及心得

通过本章的学习了解了printk函数。该函数与printf函数类似,用于打印内核调试信息。只是前者运行在内核空间,后者运行在用户空间。即linux驱动这样的linux内核程序只能使用printk函数输出调试信息。Printk函数的原型:asmLinkKage int printk(const char *fmt,…)。Printk文件是一个简单的有4个数字组成的文本文件,该文件的默认值问6 4 1 7。6代表将消息输出到控制台的级别,只有高于该级别的输出信息才会输出到控制台。4代表默认的消息日志级别。如果不在printk函数中制定日志级别,就会使用该值作为默认的级别。1表示控制台日志级别可被设置的最小值(最高优先级别)。7表示控制台日志级别的默认值。

查询日志消息的命令为:

#dmesg

#cat /var/long/syslog

#cat /proc/kmsg

#dmesg | grep printk

cat /var/log/syslog |grep printk

tail –n 10 /var/log/syslog

大量使用printk函数操作日志文件或控制台设备文件会严重影响linux驱动的性能。因此,这就要求linux驱动只能在开发阶段使用printk函数输出消息。

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

时间: 2024-12-21 06:37:09

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

Android深度探索——第九章读书笔记及心得

HAL模块 ——第9章读书笔记及心得 通过本章学习学会了Android中特有的与linux驱动交互的方法,即通过HAL模块.HAL模块本质上就是通过linux共享库(.so)与linux交互驱动,然后利用应用程序再访问linux共享库.每一个HAL共享库指定一个ID,在利用这个ID配合一定的规则找到linux共享库.知道了HAL对于Android的意义.知道了Android HAL的架构. HAL是建立在linux驱动之上的一套不属于linux内核的程序库.它属于linux内核层之上的应用层.H

Android深度探索——第二章读书笔记及心得

Android开发环境搭建 ——第二章读书笔记及心得 通过本章的学习了解了如何对Ubuntu Linux下的Android进行搭建,包括搭建Android应用程序开发环境.Android NDK开发环境和交叉编译环境的搭建.了解了搭建Android环境所需要的各种东西,了解了配置ADT的必要性—以便ADT能够找到Android SDK.知道了底层开发所需要的各种工具.学会了如何在Ubuntu下安装JDK.以及编译交叉编译环境,当初在学习Linux交叉环境编译的时候就不是特别成功,中间出了很多的错

Android深度探索——第八章读书笔记及心得

蜂鸣器驱动 ——第8章读书笔记及心得 通过本章的学习,学会了pwm的驱动实验,知道了蜂鸣器实现的原理.蜂鸣器是开发板上的一个硬件设备,可以通过向寄存器写入特定的值来控制蜂鸣器发出尖叫声.本实验将linux驱动区分成了多个实现文件.学会了编写Makefile文件.知道了linux驱动模块的依赖.通过实验学会了linux驱动常用的代码重用方式及强行卸载linux驱动的方法. 在C语言中编译多个源代码文件时,如果a.c使用了b.c文件中的函数,需要在a.c文件中使用extern预先定义b.c中的函数,

《Android深度探索卷一》读书笔记一

一.Android系统架构 Android系统架构分为4层: 第一层:Linux内核 Android是基于Linux内核的,因此,Android内核和标准Linux2.6的内核结构基本相同,细微差异在Android在Linux内核中增加的主要是一些Android专用驱动和Android使用的设备驱动,这些驱动程序在Android不同版本中可能并不通用. 第二层:C/C++代码库 是使用C/C++编写的代码库也就是Linux下的.so文件,还有Android运行时环境(AndroidRuntime

《Android深度探索卷一》读书笔记二

开发,测试和调用Linux驱动,HAL程序库需要的工具: JDK6或以上版本: Eclipse3.4或以上版本: ADT(用于开发Android应用程序): CDT(用于开发AndroidNDK程序): Android SDK: Android NDK: 交叉编译环境: Linux内核源代码: Android源代码: 用于调试开发板的串口工具:minicom; 一.安装JDK 下载JDK压缩包并解压到任意目录,在Linux终端输入“getdit /etc/profile”打开profile文件,

《Android深度探索卷一》读书笔记四

下载,编译和测试Android源代码 1.配置Android源代码下载环境 下载之前必须先在Linux终端执行一些命令配置环境. 创建存放脚本文件的目录“mkdir ~/bin””PATH=~/bin:$PATH”:下载repo脚本文件“curl 地址 > ~/bin/repo””chmod a+x ~/bin/repo”;创建存放Android源代码的目录“mkdir android_source”“cd android_source”;初始化“repo init -u 地址”: 2.开始下载

《Android深度探索卷一》读书笔记五

下载和编译Linux内核源代码 Android源代码不包含Linux源代码,必须单独下载.不能直接在www.kernel.org下载Linux内核,应在Google提供的网站下载Android中使用的Linux内核. 1.下载“git clone https://android.googlesource.com/kernel/common.git”,进入common目录,“git branch -a”查看当前有的远程版本,之后导出 到导出所需版本“git checkout -b android-

Android深度探索第十章总结

学习第十章,也就是嵌入式Linux的调试技术.主要介绍如何利用开发板.Android模拟器以及一些函数.工具(gdb.gdbserver以及kgdb)调试嵌入式Linux内核模块.可执行程序和共享库.1.打印内核调试信息:printk.Printk函数用法与printf函数类似,只不过printk函数运行在内核空间,printf函数运行在用户空间,printk函数在printk.c文件中实现.不管消息级别是多少,所有通过printk函数发出的消息都会输出到日志文件(就算有的消息输出到控制台,也会

android深度探索第十章心得体会

第十章讲了 对于复杂的Linux驱动以及HAL等程序库,需要使用各种方法对其进行测试.例如设置断点.逐步跟踪代码输出调试信息等. 在Linux系统中,/proc经常被用来作为内核空间与用户空间进行数据交互的工具,/proc文件系统的行为方式与设备文件系统类似./proc是虚拟文件系统,也就是说,/proc并不是真正的文件系统,而是内存映射.所有读写/proc的操作都是对内存的读写.所以读写/proc文件系统的速度要远比读写/dev文件系统的速度快,因此,/proc文件系统也可作为Linux驱动与