【Android系统原理与开发要点详解】03_Android._第1页
【Android系统原理与开发要点详解】03_Android._第2页
免费预览已结束,剩余20页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、丿Android 的 Linux 内核与驱动程序Android的Linux内核与驱动程序口 第一部分Linux核心与驱动 第二部分Android专用驱动口 第三部分Android使用的设备驱动V/第一部分Linux核心与驱动Android使用标准的Linux2.6内核, 作为其操作系统。Android 1.0 (release-1.0 )使用Linux2.6.25Android 1.5 (sdk-1.5_rl)使用Linux2.6.27Android 1.6 (sdk-1.6_rl)使用Linux2.6.29获取通用内核的代码:$ git clone git:/android.git.kern

2、/kernel/common.gitkernel/common.git 为通用 Kernel 的工程名称。Androidl.5 之前的版本具有 kernel 目录,其中也是参考 的kernel 第W第一部分Linux核心与驱动八丿Android Linux内核的配置和编译:$ make ARCH=arm goldfishdetconfig .config$ make ARCH=arm CROSS_COMPILE=path/arm-none-iinux-gnueabi Android 通用的 Kernel 使用的处理器为 goldfish 这是 种ARM 处理器。这个 Linux 编

3、译生成的结果在 Android 的模拟器中使用。_丿Goldfish处理器的编译结果:vmlinux为内核的ELF文件,zlmage为内核的压缩映 像文件。LD 4nHnuxSYSMAP System map第第一部分Linux核心与驱动八丿SYSMAP tmp System mapOEUCOPY arctVarm/booVImage Kemd: arch/ami/booi/lmage Is roady ASarch/ann/bool/coiripressed/liead.o GZIP arch/arm/booc/compressed/piflgy.gz ASarch/afm/boot/coi

4、npressed/plggy.o CC arctVaiTn/boot/conipressed/niisc.o IDafci) )/ami/boo(/c( (Mn|xessedAnlin( (ix OBJCOPY arcWarm/boot/z Imagr- Kernel:arch/arm/boot/zImage is readyvmlinux和zlmage分别对应Android弋码prebuilt中的预编译的arm内核。丿第一部分Linux核心与驱动Android 模拟器使用的处理器的 goldfish 的配置文件为:arch/arm/mach-aoldfisht9口口System lypeCO

5、NFIG.AR( H G(M,DFISH=y” AndroidCONFIG_ANDRO1D=yCONFIG ANOROIDCONH ANDROID,# CONF IANDRCHDR AMCONS OLE IS not sotCONFIG ANDROiOCONFIG.ANDROJD#NctwortongopionsCONFIG.AMDROIDPARANOIDNLTWORKy# UBI - Unsorled block images#CONFIG_ANDROiD_PMEM-ygoldfish是一种ARM处理器,其核心内容的路径为:arch/arm/mach-aoldfishAndroid还需要在标

6、准的Linux内核中需要增加必要的驱动,用于对系 统用户程序的支持。在android中的 驱动主要分成两种类型: 口Android专用驱动口Android使用的设备驱动BINDI R IPC-yI =llIMt匸OUTPUT-y LOWM匸MORYJCILLER二y第W丿Ashmem :匿名共享内存驱动Logger :轻量级的log驱动Binder驱动(Binder Driver):基于OpenBinder驱动.为Android平台提供IPC的支持能源管理(Android Power Management):轻誥级的能源管理.基于Linux的能源管理.为嵌入 式系统做了优化Android Po

7、wer Management ( PH ):定时器驱动,用于唤醒设备Low Memory Killer :在缺少内存的情况下.杀死进程Android PMEM :第2.1Ashm2.2binder第W丿物理内存驱动72.1 AshmemAndroid的Ashmem的含义为:AnonymousShared Memory匿名共享内 存,通过内核的机制,为用户空间程序提供分 配内存的机制。Ashmem设备节点名称:/dev/ashmem主设备号为10 ( Misc Driver )次设备号动态生成_2.1 AshmemAshmem的代码路径:kernel/include/linux/ashmem.h

8、kernel/mm/ashmemc在用户空间C libutil库对Asheme M装 并提供接口:system/core/include/cutils/ashmemhsystem/core/libcutils/ashmem-dev.c system/coe/libcutils/ashmemhostc2.1 BinderAndroid的Binder驱动程序为用户 层程序提供了IPC(进程间通信)的支 持,Android整个系统的运行依赖Binder驱动Binde设备节点名称:/dev/binder主设备号为10 ( Misc Driver )次设备号动态生成_2.1 Ashmembinder的代

9、码路径:kernel/include/linux/bindehkernel/drivers/misc/binder.c在用户空间libutil工具库和ServiceManager守护进程调用Binder接口提供对整个 系统的支持:frameworks/base/cmds/servicemanager/frameworks/base/include/utils/framewoks/base/libs/utils/_丿V丿2.1 LoggerAndroid的Logger驱动程序为用 户层程序提供Log的支持,这个驱动作为 一个工具来使用。Logger有三个设备节点:/dev/log/main/de

10、v/log/event/dev/log/radio主设备号为10 (Misc Driver )次设备号动态生成2.1 AshmemLogger驱动的代码路径:kernel/include/linux/loggerh kenel/divers/misc/loggec在用户空间logcat程序调用Logger驱 动:system/core/logcat/V丿第三部分Android使用的设备驱动3.1framebuffer驱动3.2Event输入设备驱动3.3v412摄像头一视频驱动3.4OSS音频驱动3.5AISA首频驱动3.6MTD驱动3.7蓝牙驱动3.8 Wlan驱动framebuffer驱动

11、的设备节点:/dev/fbO/dev/graphics/fbO主设备号为29 ,次设备号递增生成。代码路径:include/linux/fbh drivers/video/fbmem.c显示驱动使用驱动。3.1 framebuffe显示驱动Event的字符设备的设备节点:/dev/inDut/eventX主设备号为13,设备节点为64-95Input驱动程序的头文件:include/linux/ inputh代码路径:divers/input/iriDut.c:核心代码divers/inDut/evdevc : Event部分白勺j实现。丿丿摄像头(Camera)视频驱动驱动通常使用Video

12、 For Linux V412驱动的设备节点:/dev/video/videoX主设备号为81 ,次设备号063。V4I2驱动主要头文件路径:include linux vidcodev.h : v41第版的头文件include Iinux videodev2h :定义主要的数据接口和常量3.2Ev文件接1HZ用iodlpolltradEEmSSZml冃户空阿对;vmnoueM c*drv cW如inpii期动林D何Cinput c3.3V4IwEvents希今13 6441字袴设济烈动程FTH心wpuLrtgftrr.amct冬班amcniipin 调用Tj注刖丿include media

13、v412-dev.h 1 _i5备头文件.具休设备便用其中的接口注册V4I2驱动核心实现路径:driver/media/video/v4l2devc丿OSS ( Open Sound System )开放声音 系统。OSS驱动的设备节点:/dev/mixer/dev/sndstat/dev/dspOSS主设备号为14,次设备号为各个设 备。3.3V4I丿OSS驱动程序的主要头文件:indude linux soundcdrd.h : OSS驱动的主要头文件Linclude linux sound.h :定义OSS驱动的次设备号和注册函数 OSS驱动程序的核心:3.4 OSS音频驱动3.5ALS

14、A音频驱动ALSA ( Advaneed Linux SoundArchitecture )高级 Linux 声音体系。ALSA 驱动的设备节点:/dev/snd/controlCX /dev/snd/DcmXXXc/dev/snd/DcmXXXD/dev/snd/sea /dev/snd/timer主设备号为116.次设备号为各个设备。ALSA驱动程序的头文件:indkdeZsoun也亜amdJi: ALSA驱动的主要头文件include sound core.h : ALSA岖动核心数据结构和具体驱动的注册 南薮ALSA驱动程序的核心实现:f文:K 用丿Flash 驱动通常使用MTD (

15、memory technologydevice ),内右技来设幺。MTD 的字符设备:/dev/mtdX主设备号为 90。MTD 的块设备:/dev/block/mtdblockX主设备号为 13。MTD驱动程序头文件路径:include linu mid rnid.hMTD源代码路径:drivers mid mldcore.c : MTD核心.定义MTD原始设备drivers midmldchar.c : MTD字符设备drivers mid midblock.c : MTD块设备3.5 ALSA音频驱动A丿3.6蓝牙驱动在 Linux 中.蓝牙设备驱动是网络设备,使用 网络接口。蓝牙设备的

16、网络协议:协议族:AF BLUETOOTH ( 31 )蓝牙协议部分头文件:include/net/bluetooth/hci_core h include/net/bluetooth/bluetooth h 蓝牙协议源代码文件:net/bluetooth/*蓝牙驱动程序部分的文件:drivers/bluetooth/*3.6 蓝牙驱动 蓝牙的驱动程序一般都通过标准的HCI 控制实 现。但根据硬件接口和初始化流程的不同,又存在一些差别。这类初始化动作一般是一些晶振频率,波特 率等基础设置。比如 CSR 的芯片一般通过 BCSP 协议完成最初的初始化 配置,再激活标准 HCI 控制流程。对 Linux 来说,一旦 bluez 可以使用 HCI 与芯 片

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论