Android驱动开发5-7总结

Android深度探索5-7章总结

介绍了S3C6410开发板的功能,开发板的不同主要是在烧录嵌入式系统的方式不同,以及如何在此开发板上安装Android。紧接着学到介绍到如何在多种平台,使用多种方式测试Linux驱动。给出的实例是统计单词的个数,但是关键还在实现该算法的技术是Linux驱动。这个实例让我了解到Linux驱动的完整开发过程。

Linux 驱动的工作和访问方式是 Linux 的亮点之一,Linux 系统将每一个驱动都映射成一个文件。这些文件称为设备文件或驱动文件,都保存在/dev目录中,由于大多数Linux驱动都有与其对应的设备文件,因此与Linux驱动交换数据就变成了与设备文件交换数据。

将驱动编译进Linux内核进行测试,动态装载驱动模块不会随着Android系统的启动而自动装载,因此Android系统每次启动都必须使用insmod或modprobe命令装载Linux驱动模块。可以使用如下的步骤将word_count驱动加入Linux内核源代码树。将word_count.c文件放入Linux内核源代码,将word_count.c文件放到<Linux内核目录>/drivers/char目录中,修改Kconfig文件,修改Makefile文件,打开/root/kernel/goldfish/drivers/char/Makefile文件,设置.config文件,

.config文件可以通过手工配置,也可以通过make menuconfig命令在菜单中配置,编译Linux内核,进入/root/kernel/goldfish目录,执行下面的命令编译Linux内核,# make,建立新的Kconfig文件,在word_count目录中建立一个Kconfig文件。

接下来是控制发光二极管来演示如何开发一个完整的Linux驱动。这个驱动用来控制4个LED小灯。也就是说通过向Linux驱动发送数据可以控制LED灯的开关.LED驱动包含了Linux驱动所有必要的部分。一个完整的Linux驱动主要由内部处理和硬件交互两部分组成。其中内部处理只要是指linux驱动的装载、卸载与设备文件相关的动作处理包括读写设备文件、向设备文件发送I/O命令等动作和业务逻辑。

创建设备文件,使用cdev_init函数初始化cdec,大多数的成员变量不需要我们自己初始化,调用cdev-init函数即可。描述设备文件需要一个cdev结构体,指定设备号,分别指定主从设备号,所以需要MKDEV宏

int dev_number=MKDEV(major,minor);使用cdev_add函数将字符设备添加到内核中的字符设备数据中,调用cdev_add函数需要指定设备文件指针(p)、设备号(dev)、设备文件数量(count)还调用了一个重要的函数kobj_map,使用class_create宏创建struct class,Struct class包含了一些与设备文件有关的变量和一些回调函数指针变量。

卸载LED驱动的设备文件,依次调用decive_destory、class_destory、unregister_chrdev_region方法。Led_destory_device函数用于卸载LED驱动的设备文件,leds_exit函数是LED驱动的卸载函数,通过调用Led_destory_device函数来完成卸载LED驱动设备文件的工作。

设置LED等的状态,设置寄存器和初始化LED驱动,通过设置寄存器的值可以设置LED引脚的状态以及控制其亮灭。然后要控制LED,可以通过字符串和I/O命令。使用字符串用到file_operations.write函数,使用I/O命令用到file_operations.ioctl,从用户空间像内核中写入数据用到的函数copy_from_user。

与硬件交互主要是指通过iowrite32、ioread32的等函数与硬件中的寄存器进行数据交互。Linux驱动在不同平台上的移植也包括这两部分。不同linux内核版本之间的移植,主要移植的是linux驱动的内部处理。,一般内核差别较大时,linux内核的API也会有很大的差别;但是如果在不同的硬件平台,主要移植的是第二部分。当然,在一些情况下,linux驱动移植基本相当于重新编写一边linux驱动,需要一步一步不断的学习,才可以更好的了解linux驱动的高级技术。

http://www.cnblogs.com/xxyue/

时间: 2024-10-29 19:12:26

Android驱动开发5-7总结的相关文章

【视频】嵌入式Linux/Android驱动开发揭秘(1)触摸屏驱动开发

嵌入式Linux/Android驱动开发揭秘(1)触摸屏驱动开发 专题简介:自1971年,美国人SamHurst发明了世界上第一个触摸传感器以来,触摸屏技术不断革新,给了程序设计师和UI工程师无限的想象空间,它极大改善了终端用户对各种设备的操作方便程度,现在我们的日常生活如手机.平板等,已经很大程度上依赖于和习惯于使用和操作触摸屏.做为工程师,我们很有必要掌握触摸屏的工作原理和软件驱动方法,如果您对一窥如何在嵌入式中操控和使用触摸屏这一司空见惯却又神奇的技术感兴趣,敬请关注! 1.LINUX驱动

Android驱动开发前的准备

最近看了一些Android驱动开发前需要知道的资料,收获很多,接下来就谈谈我自己的一些心得体会. Android在近几年时间发展迅速,已经成为智能手机操作系统的老大.不过,因为Android原生的代码支持的设备并不多,所以我们要想在自己的设备上完美地运行Android就需要另外地开发一些程序,从而可以让Android识别相应设备的硬件,这个过程就成为Android移植. Android移植可以分为两部分:应用移植和系统移植.其中,应用移植是指将Android系统架构的第四层应用程序移植到某一个特

Android驱动开发5-8章读书笔记

Android驱动开发读书笔记                                                              第五章 S5PV210是一款32位处理器,具有低功耗的的特点,可为移动设备和一般应用提高性能的微处理器解决方案.它集成了ARM CORTEX-A8核心.实现了ARM架构V7且支持外围设备.他的关键功能是“以带有NEON的cpu子系统为基础的arm”,32/32kb i/d缓存,512kb l2缓存,操作频率800hz为1.1v,1ghz为1.2

初入android驱动开发之字符设备(四-中断)

上一篇讲到android驱动开发中,应用是怎样去操作底层硬件的整个流程,实现了按键控制led的亮灭.当然,这是一个非常easy的实例,只是略微演变一下,就能够得到广泛的应用. 如开发扫描头,应用透过监听上报的按键的键值,监听到,则调用扫描头的模块.成功,则点亮LED灯,并把扫描头解码后的条码信息.通过广播的形式发出.又扯到其他地方,这里主要说说中断. 1. 中断的一些概念 中断,是什么? 中断.能够看成是cpu对特殊事件的一种处理的机制,这类特殊事件一般指紧急事件或者说异常事件.非常easy的一

Android安卓书籍推荐《Android驱动开发与移植实战详解》下载

百度云下载地址:点我 Android凭借其开源性.优异的用户体验和极为方便的开发方式,赢得了广大用户和开发者的青睐,目前已经发展成为市场占有率很高的智能手机操作系统. <Android驱动开发与移植实战详解>分为18章,依次讲解了Android系统的基本知识, Linux内核的基本知识,分析了Android系统的源码,深入分析HAL层的基本知识,GoldFish下的驱动.MSM内核和驱动.OMAP内核和驱动.显示系统驱动.输入系统驱动.振动器系统驱动.音频系统驱动和视频输出系统驱动,多媒体框架

Android驱动开发前的准备(一)

Android系统移植与驱动开发概述 1.1 Android 系统架构 1.2 Android系统移植的主要工作 1.3 查看linux内核版本 1.4 linux内核版本号的定义规则 1.5 linux驱动设备 1.1  Android系统架构如图所示: 第一层是linux内核,第二层是c/c++代码库,第三层是Android SDK API,第四层是应用程序. 1.2 Android系统移植的主要工作 Android移植可以分为两部分:应用移植和系统移植 1>应用移植:是将应用程序移植到某一

Android驱动开发前的准备(三)

Git使用入门 3.1安装Git 3.2查看Git文档 3.3源代码的提交与获取 3.1安装Git # apt-get install git # apt-get install git-doc git-svn git-email git-gui gitk 3.2查看Git文档 # man git-checkout 3.3源代码的提交与获取 3.3.1创建版本库: git init # mkdir -p /demo/helloworld-git # cd /demo/helloworld-git

Android驱动开发第七章

控制发光二极管 本章我们在Linux驱动开发中实践过所以也很熟悉.也做出过不同的实验结果.所以编写LED驱动: 1.测试开发板,打开电源开关 2.创建LED驱动设备文件 3.卸载LED驱动的设备文件 4.设置寄存器与初始化LED驱动 5.控制LED 6.设置LED驱动的模块参数 本章给出了LED驱动的完整代码可以借鉴 测试LED驱动,本章介绍了一些复杂的测试方法,不仅可以向LED设备文件发送字符串,还可以发送I/O控制命令. 1.编写测试I/O控制命令的通用程序 2.使用NDK测试LED驱动 3

android驱动开发前的准备(五)

搭建S3C6410开发板的测试环境 首先安装串口调试工具 第一步:检测当前系统是否支持USB转串口 # lsmod | grep usbserial 第二步:安装minicom # apt-get install minicom 第三步:配置 minicom # minnicom -a 第四步:测试minicom #minicom 烧写Android 系统 使用Eboot擦除NandFlash 第一步:准备工作 用串口线或USB转串口线连接开发板和pc,并启动minicom. 第二步:进入Ebo

Android驱动开发前的准备(二)

搭建android开发环境 2.1 Android底层开发需要哪些工具 2.2 安装 JDK 2.3 搭建Android 应用程序开发环境 2.4安装Android NDK开发环境 2.5安装交叉编译环境 2.1 Android底层开发需要哪些工具 ◇ JDK6或以上版本 ◇ Eclipse 3.4或以上版本 ◇ ADT ◇ CDT ◇ Android SDK◇ Android NDK ◇ 交叉编译环境 ◇ linux内核源代码 ◇ Android源代码 2.2 安装 JDK 从官网直接下载并进