android系统移植学习笔记一
系统框架
applicationjava应用程序
applicationfarmeworkjava应用程序框架子
librarics/androidruntimec/c++本地库/android运行时环境
linuxkernelLinux内核与驱动
对内核的依赖:
电源管理
文件系统
内存管理
进程管理
网络协议栈
驱动模型
本地框架;
bionic标准系统函数库
webCoreweb浏览器引擎使用
surfaceflinger用于2d和3d显示
opencore基础多媒体框架,最新版使用stagefright
skia2d图形引擎
3Dlibraries3d加速
sqLite轻型关系数据库
虚拟机
每个android应用程序都用一个自已的Dalvik虚拟机来执行
java文件经过编译器编译,通过sdk中的dx工具转化为.dex格式后交虚拟机执行
android运行库
java核心库
dalvik虚拟机
系统移植工作:
1驱动移植:
安装交叉编译环境
编译内核
常见驱动:
输入设备
输入子系统
文件目录:D:\tools\linux-3.0.16\linux-3.0.16\drivers\input
核心代码:input.c
事件部分的实现:
各类子设备:
文件目录D:\tools\linux-3.0.16\linux-3.0.16\drivers\input
joystick摇杆
keyboard按键
touchscreen触摸
mouse鼠标
显示设备
Framebuffer显存的一个映像,可以直接进行读写操作
代码路径:D:\tools\linux-3.0.16\linux-3.0.16\drivers\video\nvidia
设备节点:dev/fb*
摄像头
视频采集
视频输出
直接传输视频
设备节点文件:deb/video/videox
音频
有三种硬件接口:
pcm(pulsecodemodulation脉冲编码调制)
Iis(inter-ICsound)
ac97(Auciocodec1997)
声卡驱动中有两种音频框架
Oos(opensoundsystem)开发声音系统
Alsa提供音频和midi(musicalinstrumentdigitallinterface)的支持
MTD
内存技术设备(memorytechnologydevice)flash
代码路径:D:\tools\linux-3.0.16\linux-3.0.16\drivers\mtd
设备节点文件dev/block/mtdblockx
MMC
MultiMediaCard
代码路径:D:\tools\linux-3.0.16\linux-3.0.16\drivers\mmc
设备节点:dev/block/mmcblkx
WIFI
代码路径:
有线:D:\tools\linux-3.0.16\linux-3.0.16\drivers\net
无线:D:\tools\linux-3.0.16\linux-3.0.16\drivers\net\wireless