本章主要讲了嵌入式Linux的调试技术。 (一)打印内核调试信息:printk Printk函数用法与printf函数类似,只不过printk函数运行在内核空间,printf函数运行在用户空间,printk函数在printk.c文件中实现。 Printk函数的原型如下:asmlinkage int ...
分类:
移动开发 时间:
2016-06-27 23:19:37
阅读次数:
309
本章主要学习了硬件抽象层:HAL。 Android的硬件抽象层,简单来说,就是对Linux内核驱动程序的封装,向上提供接口,屏蔽低层的实现细节。也就是说,把对硬件的支持分成了两层,一层放在用户空间(User Space),一层放在内核空间(Kernel Space),其中,硬件抽象层运行在用户空间, ...
分类:
移动开发 时间:
2016-06-27 23:05:41
阅读次数:
232
本章主要讲了Linux代码的重用与强行卸载Linux驱动。 (一)Linux代码的重用 重用=静态重用(将要重用的代码放到其他的文件的头文件中声明)+动态重用(使用另外一个Linux驱动中的资源,例如函数、变量、宏等) 1、编译是由多个文件组成的Linux驱动(静态重用) 对于复杂的Linux驱动, ...
分类:
移动开发 时间:
2016-06-27 23:05:34
阅读次数:
278
本章主要学习嵌入式linux 的调用技术,对于复杂的linux驱动及HAL等程序库,需要使用各种方法对其进行测试。在编写宏时要了解如下俩个知识点: 1.可变参数的宏 2.Do{.....}while(0) 之后学习了4个函数的参数定义: Proc-makedir Name:虚拟目录名称 Parent ...
分类:
移动开发 时间:
2016-06-27 20:04:44
阅读次数:
191
本章主要讲蜂鸣器的驱动,蜂鸣器是S3cC6410开发板上带的一个硬件设备,本节将介绍蜂鸣器的实现原理,并实现一个完整的蜂鸣器驱动。本节讲介绍把linux驱动分成多个文件的方式。这些文件中的数据结构、函数的代码也可以被多个不同的驱动使用,所以这也是代码重用 的重要方法。在Linux驱动的代码重用中,举 ...
分类:
移动开发 时间:
2016-06-27 19:57:19
阅读次数:
158
本章主要讲硬件抽象层:HAL.HAL 是建立在linux 驱动之上的一套程序库,Google为Android加入HAL主要如下的目的。 1.统一硬件的调用接口 2.解决了GPI版权的问题 3.针对一些特殊的要求 在LED的驱动中,我们加入HAL使用程序不需要关心Linux驱动和设备文件的交互方式。编 ...
分类:
移动开发 时间:
2016-06-27 19:31:02
阅读次数:
202
打印内核调试信息:printk printk 函数的原型如下: asmlinkage int printk(const char * fmt, ...) printk文件是一个简单的有4 个数字组成的文本文件,该文件的默认.如下: 6 4 1 7 如果想修改printk 文件中的内容,要求任何信息都 ...
分类:
移动开发 时间:
2016-06-27 19:12:49
阅读次数:
148
学习编程已经有10个年头了,在这10年里,我做个不少软件项目,有大有小,写过基于单片机的裸奔式的嵌入式软件,写过基于os(linux、rtems、linux)的嵌入式软件,做过windows驱动开发,开发个windows应用软件,这一路走来,发现在国内程序员并不受尊重,程序员往往寿命很短,不到30岁 ...
分类:
其他好文 时间:
2016-06-25 06:15:15
阅读次数:
151
Linux内核学习,推荐的书籍: 《linux设备驱动开发详解第二版》、《Linux内核设计与实现第三版》、《嵌入式Linux应用开发完全手册》 第一篇:讲解Linux内核的基础知识,先有一个整体的框架,后续会逐步讲解,一步步深入。 1.物理地址和虚拟地址 地址转换:内核所使用的地址一定是虚拟地址, ...
分类:
系统相关 时间:
2016-06-25 06:12:59
阅读次数:
208
作者:华清远见讲师Linux驱动开发主要的工作就是编写模块,一个典型的Linux内核模块文件.ko主要由以下几个部分组成。模块加载函数(必须)当通过insmod或modprobe命令加载内核模块时,模块的加载函数会自动被内核执行,完成本模块的相关初始化工作。Linux内核模块加载函数一般用s..
分类:
系统相关 时间:
2016-06-24 20:43:32
阅读次数:
156