安卓驱动开发(一)

在安卓中, 安卓是以linux系统为基础的,不同的安卓版本使用不同版本的linux做为内核,不过linux2.6是目前使用最广泛的linux内核版本,而安卓 4以上的使用linux3.0的版本,当两台设备安卓版本不同但是linux内核版本相同时,不考虑HAL和linux驱动兼容问题,理论上可以对 linux内核进行替换,

安卓中分为4层结构,分别是linux内核,C/C++代码库,安卓SDK API,应用程序。而安卓系统的移植就是对应用和系统的移植。应用移植是指将第四层的应用程序移植到某一个特定硬件平台上。而由于安卓SDK API之间的差异,不同的厂商会修改SDK API。重要的是安卓应用移植并不涉及到驱动和HAL库,所以了解就可以了。

而安卓的系统移植是指让安卓系统在某一个特定硬件平台上运行。为了满足这个要求,就要先满足这个系统能够支持硬件平台的CPU架构。其次,还需要系统可以 识别平台上的各种硬件,例如声卡,网卡等硬件。而这些硬件的识别和运行,是因为有硬件的驱动,这些驱动都存在于linux内核当中。(这也是嵌入式编程的 主要工作,那些驱动能用则移植过来使用,不能使用则要对其进行修改甚至是重写)

另外在安卓系统移植中还有一个要做的工作就是对HAL就行移植或者重写。

时间: 2024-10-13 21:57:59

安卓驱动开发(一)的相关文章

安卓驱动开发(七)----LED将为我闪烁:控制发光二极管

在本章节中,作者通过对实例控制LED来讲述了安卓的驱动开发.与上一章节不同的是,上一章在注册和卸载设备文件的时候使用的是函数misc_register,而在LED中使用的是cdev_init等函数.两者的差别是:前者只能建立主设备号为10的设备文件,使用不够灵活,而后者课建立其它设备号的设备文件,而且可以建立多个设备文件(在device_create函数的参数中可以进行相应的设置关联). 另外,在本章节中,主要是对LED的控制,要对LED进行控制,就要明白应该控制哪些硬件实现最终效果.即三个寄存

安卓驱动开发(六)----第一个Linux驱动程序:统计单词个数

在第六章中,作者以一个实例来讲述驱动开发的过程.首先要知道,驱动开发的八个基本步骤:首先要建立一个驱动骨架,即module_init和module_exit,注册和注销设备文件,制定与驱动信息相关的信息,制定回调函数,编写业务逻辑,编写Makefile文件,编译linux驱动程序,安装和卸载linux驱动. 上述八个步骤即为驱动开发的基本步骤,当然在实际的开发中不可能一步到位,像书上那样写出一个完整的代码.这时我们可以一步一步来写,首先写个一比较简单的linux驱动程序的骨架.接下来写注册和注销

安卓驱动开发(二)

安卓开发环境的搭建主要有几个步骤,以下分别阐述. 1.安装JDK 该处需要注意的是下载安装好JDK后需要对其进行配置,设置PATH环境变量. 2.搭建安卓应用程序开发环境 此步中,需要安安卓SDK并配置,安装Eclipse,安装ADT并配置,建立AVD. 安卓SDK是一些公司针对某一项技术为软件开发人员制作的一套辅助开发或者减少开发周期的工具,一般是一些被软件工程师用于为特定的软件包.软件框架.硬件平台.操作系统等建立应用软件的开发工具的集合. AVD是安卓版本模拟器,由于安卓版本非常多,所以在

安卓驱动开发(四)----安卓内核与linux内核的安装配置

安卓中的源代码包括安卓系统中的应用程序的源代码,SDK带的各种工具的源代码,NDK的源代码以及HAL源代码. 安卓源代码可以全部下载,也可以下载一部分.之后要对安卓的源代码进行编译,在编译后,会在安卓源代码根目录下生成一个out目录,所有编译的目标文件都在这个目录中,在out目录中有两个直接子目录,分别是host和target.前者表示在主机(x86)生成的工具,后者表示目标机(模认为ARMv5)运行的内容.在target中,包含两个直接子目录,分别是common和product.common包

安卓驱动开发(五)----搭建开发板的测试环境

在第四章中,介绍的是安卓应用程序开发环境和linux内核开发环境.这两套开发环境都是linux开发和测试的前提.有了两套开发环境,接下来就应该考虑,测试好的linux驱动应该在哪里运行,运行环境是什么.这也就是第五章的内容. 当一个已经完成测试的linux驱动放到一块开发板上时,开发板也同样要有一个允许linux驱动运行的环境,在这里就是用安卓来满足这一要求. 当拿到一个开发板的时候,首先要使用一种方法,与开发板进行数据传输,将所需要的开发环境放到开发板上.在书上用的是SD卡方式,也就是刷机时所

安卓驱动开发(八)----让开发板发出声音:蜂鸣器驱动

蜂鸣器是s3c6410开发板上带的一个硬件设备,可以通过向寄存器写入特定的值来控制蜂鸣器发出尖叫声. 在前面的章节编写了两个完整的linux驱动:word_count驱动和led驱动,两个有一共同点就是都有一个源代码文件组成. 代码重用分为静态和动态两种.即将需要重要的代码使用者放在一起进行编译,最终生成一个可执行的文件或程序库. 蜂鸣器与led类似,也是s3c6410开发板上自带的一个简单的硬件.如果打开蜂鸣器,开发板会发出类似蜂鸣的尖叫声,关闭蜂鸣器则会停止尖叫声. 如果编写的linux驱动

安卓驱动开发(三)----Git

Git是一个管理源代码的软件,能创建版本库,提交源代码,创建分支等. 在创建版本库中,需要知道的是,任何版本管理软件都必须有一个版本库,在使用Git管理源代码时,可以不联网,这时Git直接与本地版本库通信,当连网后,再将本地版本库同步到远程版本库.本地版本库访问时不需要任何权限,但要修改托管服务器中的源代码时,必须使用git clone命令在本地建立一个与远程版本一摸一样的本地版本库,这也起到了对托管服务器中的源代码的一种保护. 当多人完成一个源代码工程时,参与开发的人员会为每一处修改建立一个分

第一章:安卓系统移植与驱动开发概述

<Android深度探索>(卷1)HAL与驱动开发读后感: 这一章主要概括的介绍了安卓驱动开发和系统移植的主要内容,对安卓与Linux驱动做了一个总体的介绍.通过对第一章的学习,使我对Linux驱动开发有了一个感性的认识.在学习过程中,首先,我通过以往上课时学习到的知识和查阅资料了解了一些专业词汇的含义(例如:.so文件:共享库,是shared object,用于动态连接:SDK:软件开发工具包:API:应用程序编程接口:HAL:硬件抽象层等),并在文中做了相应的标注,为以后更好的学习安卓驱动

Android深度探索--HAL与驱动开发----第一章读书笔记

1.1   Android拥有非常完善的系统构架可以分为四层: 第一层:Linux内核.主要包括驱动程序以及管理内存.进程.电源等资源的程序 第二层:C/C++代码库.主要包括Linux的.so文件以及嵌入到APK程序中的NDK代码 第三层:android SDK API 直接面向应用程序的Java APK 第四层:应用程序.直接面向最终用户的Java应用程序 1.2  Android系统移植的主要工作 Android移植可以分为应用移植和系统移植两个部分.(本书对移植没有太多的介绍) Andr