您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 软件工程 > Android驱动开发入门及手机案例开发分析教程
Android驱动开发入门及手机案例开发分析华清远见华清远见1、Linux驱动开发入门2、Android系统对Linux驱动的优化与调整3、Android电源管理框架,策略和应用4、基于PXA310上Andorid手机案例典型驱动开发主要内容:1、Linux的字符设备驱动/块设备驱动/网络设备驱动1、动手实践是最好的学习方法:DIY一块嵌入式系统开发板(如SC2410开发板)??买一块嵌入式系统开发板??Linux驱动开发入门:Android内核特点:Android比起Linux的7处增强的地方AlarmAshmem/pmem使得进程间能够共享大块的内存(如图标)Ashmem为内核提供了一种回收这些使用完的共享内存块的办法Binder解决:标准Linux进程间通信会花费许多开销,并有安全漏洞的问题powermanagement提供更多的电源管理策略;使用唤醒锁来管理电源Android系统对Linux驱动的优化与调整:Android内核特点:Android比起Linux的7处增强的地方lowmemorykiller当内存不够的时候,该策略会试图结束一个进程kerneldebuggerLogger使得调试信息可以输入到一个内存块中Android系统对Linux驱动的优化与调整:Android电源管理框架,策略和应用:Android电源管理框架,策略和应用:1、电源管理驱动:Android电源驱动会在/sys目录下创建子目录android_power并生成相应的属性文件,通过attribute的show/store来访问和设置powerstate/request.基于PXA310上Andorid手机案例典型驱动开发2、androidHAL层对电源控制的操作:hardware\libhardware\power\power.cconstchar*constOLD_PATHS[]={/sys/android_power/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//实现具体的usb功能管理f_mass_storage.c//实现优盘功能f_adb.c//实现adb功能1)该框架下,有三个设备:composite设备,优盘设备,adb设备2)枚举时,首先枚举composite设备,再枚举优盘设备,最后枚举adb设备3)composite设备被枚举时a)在获取DEVICE描述符时,将VID,PID上报给hostb)host第一次请求CONFIG描述符时,composite设备告诉host,它有一个CONFIG,两个interface(即两个功能),以及告诉host自己使用的端点IN和端点OUT的地址c)host会根据interface的个数决定枚举的次数(这对应着优盘枚举和adb枚举)基于PXA310上Andorid手机案例典型驱动开发3、键盘驱动:1)keyboard驱动要通过input_register_device()调用注册成标准的输入设备/dev/input/event0驱动上报的按键值要和Android系统里面的/system/usr/keylayout/*.kl文件里面的记录一致,否则会导致android系统不能正确识别按键消息基于PXA310上Andorid手机案例典型驱动开发3、键盘驱动:2)Linux输入系统的任何一次事件通知包含如下三个信息:事件类型+事件码+事件值(键值)=这3个信息的作用如下,举例说明:对键盘输入设备来说:事件类型EV_KEY,表明是键盘送上来的数据事件码KEY_CAMERA表明是键盘上的camera键被操作了事件值表示该camera键是按下还是松开了对触摸屏输入设备来说:事件类型EV_ABS,表明是触摸屏送上来的绝对座标值数据事件码ABS_X表明是触摸屏当前点的x座标事件值表示该当前点的x座标的具体绝对值基于PXA310上Andorid手机案例典型驱动开发3、键盘驱动:3)android启动时会检测输入设备:I/EventHub(690):Newdevice:path=/dev/input/event2name=ADS784xTouchscreenid=0x10000(of0x1)index=1fd=44classes=0x2E/HAL(690):load:module=/system/lib/hw/sensors.default.soerror=CannotfindlibraryD/SensorManager(690):foundsensor:null,handle=0I/EventHub(690):Newdevice:path=/dev/input/event1name=gpio-keysid=0x10001(of0x2)index=2fd=46classes=0x0I/SystemServer(690):StartingBluetoothService.I/EventHub(690):Newdevice:path=/dev/input/event0name=omap_twl4030keypadid=0x10002(of0x3)index=3fd=47classes=0x1//A:I/EventHub(690):Newkeyboard:publicID=65538device-id=65538devname='omap_twl4030keypad'propName='hw.keyboards.65538.devname'keylayout='/system/usr/keylayout/qwerty.kl'基于PXA310上Andorid手机案例典型驱动开发华清深圳将于xx月开展ANDROID开发班培训共六天,包括:3天应用开发和3天ANDROID的系统和驱动开发具体内容敬请关注华清远见网站:好消息:
本文标题:Android驱动开发入门及手机案例开发分析教程
链接地址:https://www.777doc.com/doc-8694435 .html