Android深度探索HAL与驱动开发

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android深度探索HAL与驱动开发相关的知识,希望对你有一定的参考价值。

第五章

开发板是嵌入式开发的前提,我们使用的是三星公司生产的s3c6410开发板。s3c6410开发板是一款低功耗,性价比极高的处理器,也为2.5G3G通信服务提供了优化的硬件性能以及强大的加速器。包括运动视频处理,音频处理等。接下来安装串口调试工具:minicom.检查当前系统是否支持usb转串口,安装minicom,配置minicom,测试minicom.配置完成后烧写android系统。用串口线或usb转串口线连接开发板与pc启动minicom.进入eboot状态,擦除nandflashAndroid烧写步骤要求fat32分区格式,插入读卡器并连接pc。向sd卡写入mmc.binzimage-sd.bin.烧写前的准备工作,开始从sd卡烧写Android,校准屏幕。配置有线网络。本章介绍如何 在ok6410-A开发板上安装Android

第六章

   第一个驱动程序统计单词个数。本书除了介绍大量Android移植和linux驱动开发的理论知识外,让大家进入linux的另一个世界。

   linuxlinux API没有本质的区别。知识使用API的方式不同。 编写linux驱动的步骤首先建立linux驱动骨架,注册和注销设备文件,指定与驱动的相关信息,指定回调函数,编写业务逻辑。编写makefile文件,编译linux驱动程序,安装和卸载linux驱动。

    第一个驱动统计单词数,安装linux驱动,查看word_count是否成功安装,卸载linux驱动,查看由linux驱动输出的日志信息。文件的标准,开源协议,gpl协议lgpl协议,bsd协议,apache license2.0协议,mit协议。指定回调函数在word_count.c添加俩个函数:word_count_read 和 count_count_write.word_count目录加入linux内核源代码树的步骤是建立新的kconfig文件,修改makefile文件,修改上层目录的kconfig文件,修改上层目录的makefile文件,编译linux驱动。统计单词数驱动是linux驱动开发迈入的第一步。

第七章

   LED为我闪烁:控制发光二极管向linux驱动发送数据可以控制LED小灯的开关,称其为LED驱动。虽然linux驱动直接与硬件打交道,但并不是linux驱动直接向硬件中的内存写数据,而是与本机的I/O内存进行交互,I/O内存就是通过各种接口连接主机的硬件在主机内存的映射。

   编写LED驱动之前需要用USB连接开发板,打开开关,成功启动执行脚本文件的编译和安装驱动。创建LED驱动设备文件首先使用cdev_init函数初始化cdev。指定设备号直接在代码中指定,动态分配。使用cdev_add函数将字符设备添加到内核 中的字符设备数组中。使用class_create宏创建struct class。用device_create函数创建设备文件。

   设置寄存器和初始化LED驱动,控制LED亮灭之前要了解如何设置寄存器,arm有很多寄存器,通过设置不同寄存器的值,可以设置LED引脚的状态,打开或禁止上拉电路以及控制LED的亮和灭。控制LED,驱动可以使用俩种方式控制LED,通过字符串控制,通过I/O命令控制。

   测试LED驱动,编写测试I/O控制命令的通用程序,使用ndk测试LED驱动,使用java测试LED驱动。移植linux驱动也非常重要修改代码时,尽量不修改linux驱动的接口。第一个与硬件打交道的linux驱动。

第八章

   蜂鸣器开发板上带的一个硬件设备。可以通过向寄存器写入特定的值来控制蜂鸣器发出的声音。下来将介绍蜂鸣器的使用原理,并实现蜂鸣器的驱动。pwm驱动的使用不同于LED驱动的使用,其由多个文件组成,这是大多数linux驱动实现的标准方式。

   编译pwm驱动,有多个文件组成的驱动。虽然俩个驱动实现的功能不同,但俩个驱动的源代码是相同,linux驱动模块的依赖,代码重用分为静态和动态俩种。静态重用把代码放一块就可以编译最终生成一个可执行文件或程序库。本节介绍一种代码共享方式:模块依赖也称导出符号。强行卸载linux驱动,如果编写的linux驱动在逻辑上是正确的,那么就可以正常装载和卸载。在意外环境下出现异常,就无法正常卸载。分为初始化函数崩溃,初始化函数无法正常返回。卸载函数堵塞,在调用卸载函数时成功返回才能顺利完成。否则就会出现堵塞。

    蜂鸣器驱动是开发板自带的一个简单硬件,打开的时候就会发出叫声。基本原理就是通过脉冲控制蜂鸣器的而打开和停止。通过I/O命令可以打开和停止pwm。测试驱动编写的I/O命令的程序 ioctl.

   pwm驱动与LED驱动实现类似,可以还要简单一些。将linux驱动分成多个实现文件才使用了较为简单的pwm驱动。也学到了更多的驱动代码,对控制开发板有了进一步的了解。 

    

 

以上是关于Android深度探索HAL与驱动开发的主要内容,如果未能解决你的问题,请参考以下文章

Android深度探索(卷一)HAL与驱动开发 第七章

Android深度探索(卷一)HAL与驱动开发 第八章

Android深度探索(卷1)HAL与驱动开发学习笔记

Android深度探索(卷1)HAL与驱动开发学习笔记

《Android深度探索》(卷1)HAL与驱动开发读后感

Android深度探索HAL与驱动开发 第六章