第十章心得

主要讲了对于复杂的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驱动与用户空间程序交互的工具。

虽然使用printk函数可以很方便的将消息写入日志文件或者控制台。但是大量使用printk函数频繁的操作日志文件或者控制台文件会严重影响到linux驱动的开发性能。因此,这就需要linux驱动在开发阶段使用printk函数输出消息,在正式发布linux驱动时候将可能影响驱动性能的printk函数去掉。当然,我们可以想到的最简单的方法就是一个接一个的删掉printk函数,但是这样是很不实际的想法,并且是十分麻烦的,而且如果以后想要在使用printk函数又有很麻烦的,会影响到以后的操作。想要控制printk的输出,而且实现起来方便,最好的方法无疑就是利用C语言中的编译命令了。

Linux内核调试一直被很多人认为是十分困难的。大多数人宁愿直接使用printk函数输出调试信息。也不愿意使用各种命令进行调试。因为这样做不一定能换来更多的好处。

Android模拟器只能通过端口映射方式使用gdbserver调试程序。但是开发板除了可以通过IP链接到gdbserver外,还可以通过串口进行调节。

时间: 2024-10-10 12:21:55

第十章心得的相关文章

第十章心得体会

通过第十章的学习,我学到了如下知识点: 1.尽管linux驱动直接与硬件打交道,但并不是linux驱动直接向硬件中的内存写数据,而是本机的I/O内存进行交互. linux驱动           I/O内存             硬件 2.linux内核的内存管理模块负责同步I/O内存和硬件中的数据.每一个连接linux的硬件在linux内存中都有映射首地址,在使用ioread.iowrite等函数读写I/O内存时,指定这些首地址. 3.硬件在被检查到只说明在内核空间中建立了I/O内存,要想在

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

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

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

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

android驱动开发第十章心得笔记

第十章主要讲了对于复杂的Linux驱动以及HAL等程序库,需要使用各种方法对其进行调试.例如,设置断点.逐步跟踪代码.输出调试信息等. Printk函数的用法与printf函数类似,只不过printk函数运行在内核空间,printf函数运行在用户空间.也就是说,像Linux驱动这样的Linux内核程序只能使用printk函数输出调试信息.Printk函数在printk.c文件中实现. 虽然使用printk函数可以很方便的将消息写入日志文件或控制台.但大量使用printk函数频繁操作日志文件或控制

第十章 心得体会

通过第十章的学习,了解了在嵌入式Linux驱动开发中的调试技术已经调试工具. 学到的知识: 一.打印内核调试信息:printk printk函数的原型如下: asmlinkage int printk(const char * fmt, ... ) printk文件是一个简单的有4个数字组成的文本文件,该文件的默认值如下:6 4 1 7 6:将消息输出到控制台的级别. 4:默认的消息日志级别. 1:控制台日志级别可被设置的最小值 7:控制台日志级别的默认值. 二.防止printk函数降低Linu

《Android深度探索》(卷1)HAL与驱动开发 第十章心得体会

本章主要讲了嵌入式Linux的调试技术. (一)打印内核调试信息:printk Printk函数用法与printf函数类似,只不过printk函数运行在内核空间,printf函数运行在用户空间,printk函数在printk.c文件中实现. Printk函数的原型如下:asmlinkage int printk(const char *fmt,...) 第1个参数表示格式字符串,后面是可变参数.第一个参数值前面加尖括号包含的数字表示输出的日志级别,共有8个级别,在linux/kernel.h头文

阅读《软件工程—理论方法与实践》第十章心得体会

有错是软件的属性,无法改变.测试是对软件产品质量的检验和评价.软件测试的基本原则:①尽早地和不断地进行软件测试;②避免检查自己的程序;③测试用例包括合理输入条件和不合理的输入条件;④测试用例应包括测试输入数据和与之对应的预期输出结果;⑤注意测试中的群集现象;⑥严格执行测试计划,排除测试的随意性;⑦对每一个测试结果做全面检查;⑧保存测试过程文档,为维护提供方便.测试文档包括:测试计划.测试规范.测试用例.缺陷报告等.测试人员要有沟通能力.移情能力.技术能力.自信心.外交能力.幽默感.很强的记忆力.

安卓移植和驱动开发第十章心得体会

对于复杂的 Linux 驱动及 HAL等程序库,需要使用各种方法对其进行调试. 例如,设置断点. 逐步跟踪代码.-输出调试值息等.虽然嵌入式Linux在调试方面并没有 Visual Studio. Delphi. Eclipse 这些可视偌工其荒便,但学习一些这方面的技术无疑更奇脚手亮发强款而稳定的 Linux 内核模块←对 于嵌入式 Linux 内核模块.对于嵌入式的调试可能要更复杂一些.因为有时候需要至 少两台机器(开发机和-目标机)用于调试将主要介绍如何利用开发板之 Android模拟器以

android月考

第九章心得: HAL ( Hardware Abstraction Layer,硬件抽象腔,〉是建立在Linux驱动之上的一套翻字库.这套程序 j率并不属于 Linux 内核, 而是属于 Linux 内核层之上的应用层. 加入hal的目的: (1)统一硬件的调用接口.由于HAL有标准的调用接卧,所以可以利用 HAL屏蔽Linux 驱动复杂,不统一的借口 (2)解决了GPl版权问题.由于 Linux 内核基于GPL协议,而Android基于Apache Licence 2 .0 ,协议.因此Goo