1、Android驱动开发入门及手机案例开发分析 华清远见华清远见1、 Linux驱动开发入门 2、 Android系统对 Linux驱动的优化与调整 3、 Android电源管理框架,策略和应用 4、基于 PXA310上 Andorid手机案例典型驱动开发 主要内容 :1、 Linux的字符设备驱动 /块设备驱动 /网络设备驱动 1、动手实践是最好的学习方法 : DIY一块嵌入式系统开发板 (如 SC2410开发板 )? 买一块嵌入式系统开发板 ? Linux驱动开发入门 :Android内核特点 : Android比起 Linux的 7处增强的地方 Alarm Ashmem/pmem 使得进程
2、间能够共享大块的内存 (如图标 ) Ashmem为内核提供了一种回收这些使用完的共享内存块的办法 Binder 解决 : 标准 Linux进程间通信会花费许多开销 ,并有安全漏洞的问题 power management 提供更多的电源管理策略 ; 使用唤醒锁来管理电源 Android系统对 Linux驱动的优化与调整 :Android内核特点 : Android比起 Linux的 7处增强的地方 low memory killer 当内存不够的时候,该策略会试图结束一个进程 kernel debugger Logger 使得调试信息可以输入到一个内存块中 Android系统对 Linux驱动的
3、优化与调整 :Android电源管理框架,策略和应用 :Android电源管理框架,策略和应用 :1、电源管理驱动 : Android 电源驱动会在 /sys目录下创建子目录 android_power并生成相应的属性文件 ,通过 attribute的 show/store来访问和设置 power state/request. 基于 PXA310上 Andorid手机案例典型驱动开发2、 android HAL层对电源控制的操作 : hardwarelibhardwarepowerpower.c const char * const OLD_PATHS = “/sys/android_powe
4、r/acquire_partial_wake_lock“, “/sys/android_power/release_wake_lock“, “/sys/android_power/request_state“ ; 基于 PXA310上 Andorid手机案例典型驱动开发2、 usb驱动 : Google没有使用原来的那套 gadget驱动架构 (file_storage.c),而是参考 file_storage.c实 现了 一 个新 的 模 型 -composite模 型 : composite.c / 实 现 android下 usb管理的框架 模 型 android.c / 实 现具体 的
5、 usb功能 管理 f_mass_storage.c / 实 现 优 盘功能 f_adb.c / 实 现 adb功能 1)该 框架下 ,有 三个 设备 : composite设备 , 优 盘 设备 , adb设备 2)枚举时 ,首先枚举 composite设备 ,再枚举 优 盘 设备 ,最 后枚举 adb设备 3)composite设备 被枚举时 a)在 获取 DEVICE描述 符 时 ,将 VID,PID上 报给 host b)host第 一 次请求 CONFIG描述 符 时 ,composite设备 告诉 host,它 有一 个 CONFIG, 两个 interface(即两个功能 ),以
6、及告诉 host自己 使用的 端点 IN和 端点 OUT的 地址 c)host会 根据 interface的 个数决定枚举 的 次数 (这 对应 着 优 盘枚举 和 adb枚举 ) 基于 PXA310上 Andorid手机案例典型驱动开发3、 键盘 驱动 : 1)keyboard驱动 要 通过 input_register_device()调用 注册 成 标准 的 输 入设备 /dev/input/event0 驱动上 报 的 按键值要 和 Android系统 里面 的 /system/usr/keylayout/*.kl文件 里面 的 记 录一 致 ,否则 会 导致 android系统 不能
7、正确识别按键消息 基于 PXA310上 Andorid手机案例典型驱动开发3、 键盘 驱动 : 2) Linux输 入系统的 任何 一 次事 件通 知包含 如下 三个 信息 : 事 件 类 型 + 事 件 码 + 事 件 值 (键值 ) =这 3个信息 的作用如下 ,举 例 说明 : 对 键盘输 入设备来 说 :事 件 类 型 EV_KEY,表明 是 键盘送 上来的 数据 事 件 码 KEY_CAMERA表明 是 键盘 上的 camera键被 操作 了 事 件 值表示该 camera键 是 按 下 还 是 松 开 了 对 触摸屏输 入设备来 说 :事 件 类 型 EV_ABS,表明 是 触摸屏
8、送 上来的 绝 对 座标值数 据 事 件 码 ABS_X表明 是 触摸屏当 前 点 的 x座标 事 件 值表示该当 前 点 的 x座标 的 具体绝 对 值 基于 PXA310上 Andorid手机案例典型驱动开发3、 键盘 驱动 : 3)android启 动 时 会 检测 输 入设备 : I/EventHub( 690): New device: path=/dev/input/event2 name=ADS784x Touchscreen id=0x10000 (of 0x1) index=1 fd=44 classes=0x2 E/HAL ( 690): load: module=/sys
9、tem/lib/hw/sensors.default.so error=Cannot find library D/SensorManager( 690): found sensor: null, handle=0 I/EventHub( 690): New device: path=/dev/input/event1 name=gpio-keys id=0x10001 (of 0x2) index=2 fd=46 classes=0x0 I/SystemServer( 690): Starting Bluetooth Service. I/EventHub( 690): New device
10、: path=/dev/input/event0 name=omap_twl4030keypad id=0x10002 (of 0x3) index=3 fd=47 classes=0x1 / A: I/EventHub( 690): New keyboard: publicID=65538 device-id=65538 devname=omap_twl4030keypad propName=hw.keyboards.65538.devname keylayout=/system/usr/keylayout/qwerty.kl 基于 PXA310上 Andorid手机案例典型驱动开发华清深圳 将 于 xx月 开 展 ANDROID开发 班培训 共六天 , 包 括: 3天 应用开发和 3天 ANDROID的系统和驱动开发 具体 内容敬 请 关 注 华清远见 网 站 : http:/ 好消息 : 15 Q&A 16