摘要: 对于复杂的Linux驱动以及HAL等程序库,需要使用各种方法对其进行测试。例如设置断点、逐步跟踪代码输出调试信息等。 在Linux系统中,/proc经常被用来作为内核空间与用户空间进行数据交互的工具,/proc文件系统的行为方式与设备文件系统类似。/proc是虚拟文件系统,也就是说,/proc并不是 阅读全文
posted @ 2016-07-07 15:27 Alancnn 阅读(100) 评论(0) 推荐(0) 编辑
摘要: 在本章中,HAL是建立在Linux驱动之上色一套程序库。这套程序库并不属于Linux内核,而是属于Linux内核层之上的应用层。 Google为Android增加HAl的主要目的除了尽量避免应用程序直接访问Linux驱动外,还有一个重要的原因,那就是保护“私人财产”。对于那 些既想发布基于Andro 阅读全文
posted @ 2016-07-07 14:59 Alancnn 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 蜂鸣器是S3C6410开发板上带的一个硬件设备。可以通过寄存器写入特定的值来控制蜂鸣器发生尖叫声。当开发一个Linux驱动的时候,有可能会在init、exit等函数中发生错误是,这时Linux驱动可能会安装失败,更糟糕的是无法使用rmmod命令正常卸载Linux驱动,这也就会造成无法再次安装的窘境。 阅读全文
posted @ 2016-07-04 20:32 Alancnn 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 编写LED驱动 创建LED驱动的设备文件 1.使用cdev_init函数初始化cdev。 2.指定设备号:用1个int类型表示 Linux设备文件的设备号,前12位表示主设备号,后20位表示次设备号设备号有两种指定方法:直接在代码中指定(硬编码);动态分配 (alloc_chrdev_region) 阅读全文
posted @ 2016-06-05 18:15 Alancnn 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 建立Linux驱动骨架:Linux内核在使用驱动时需要装载与卸载驱动,装载驱动:建立设备文件、分配内存地址空间等;module_init 函数处理驱动初始化,卸载驱动:删除设备文件、释放内存地址空间等;module_exit函数处理退出,包含这两个函数的两个宏的C程序文件也可看做是Linux驱动的骨 阅读全文
posted @ 2016-06-05 17:24 Alancnn 阅读(91) 评论(0) 推荐(0) 编辑
摘要: 对于编写linux驱动程序的步骤:主要有第一步,建立其驱动骨架,任何类型的程序都有一个基本的结构;第二步,注册和注销设备文件,任何一个linux驱动都需要有一个设备文件,否则应用程序将无法与驱动程序交互。建立设备文件的工作一般在第一步编写的处理linux初始化工作的函数中完成,删除设备文件一般在第1 阅读全文
posted @ 2016-06-05 17:18 Alancnn 阅读(91) 评论(0) 推荐(0) 编辑
摘要: 在第四章中,专门提到了释放页时一定要慎重,只能释放直接申请的页。如果说是传递了不对的struct page或地址,或用了不对的order的值,那将可能带来灾难性的后果,系统很有可能会因此而崩溃。在使用kmalloc函数分配的内存块很有可能要比实际请求的内存块要大,这是由于系统分配内存的基本方法都是基 阅读全文
posted @ 2016-04-27 12:22 Alancnn 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 第三章中也讲了原子操作,原子操作就是指单位操作,就是说,原子操作在执行的过程中不能被中断,并且也需要通过某些机制使语言中看似原子的操作语句编程原子语句,否则的话,在并发的环境总可能会产生脏数据。非0值和0,一般是指1和0。但对于有的平台,可能会将非0值解释成-1或其他的非0值。为了适应各种平台非0值 阅读全文
posted @ 2016-04-27 12:05 Alancnn 阅读(102) 评论(0) 推荐(0) 编辑
摘要: 第二章中,在目标开发中和Android模拟器上测试驱动时,需要执行shell.h 脚本文件或 adb shell 命令进入相应平台的终端,在shell.h脚本在/root /drivers 目录之中。在这里讲的脚本文件都是使用insmod命令安装Linux驱动的,除了该命令意外,使用modprobe 阅读全文
posted @ 2016-04-27 11:33 Alancnn 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 第一章主要讲了Linux驱动和AndroidHAl的基础知识。首先介绍了Android系统构架分为四层,Linux内核、C/C++代码库、Android SDK API、应用程序。了解这四层是Android系统移植的前提,Android系统移植是指让Android操作系统在某一个特定硬件平台上运行。 阅读全文
posted @ 2016-04-27 11:12 Alancnn 阅读(137) 评论(0) 推荐(0) 编辑