android从驱动层到应用层

android从驱动层到应用层

ID:16736444

大小:25.50 KB

页数:3页

时间:2018-08-24

android从驱动层到应用层_第1页
android从驱动层到应用层_第2页
android从驱动层到应用层_第3页
资源描述:

《android从驱动层到应用层》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Android从驱动层到应用程序层的通信研究一下Android从驱动层到应用层的通信机制是很有必要的,如新增加一个硬件并在应用层去控制硬件都需要用到,目的是知道需要增加哪些东西删改哪些东西而让系统依然工作正常。总共需要增改的有四个东西,驱动、服务(jni、java)、应用apk采用的方式是在驱动层写个字符型设备驱动其中内含一个定时器,每隔2秒发送一个uevent事件并改变sys下相关文件的内容,然后建立一个服务去读取文件并通过intent向上层广播,最后在应用程序层接收此事件并在TextView中显示

2、出来一、驱动层kernel/drivers/char/uevent_test/test.cKconfigMakefile驱动层与服务层之间用到的通信机制是sys文件系统的uevent机制,涉及的函数有以下几个在sys文件系统下建立一个类class_create(THIS_MODULE,"uevent_timer");在类里建立一个设备device_create(uevent_timer_class,NULL,UEVENT_TIMER_MAJOR,NULL,"uevent_timer_status");

3、在设备目录下建立一个文件device_create(uevent_timer_class,NULL,UEVENT_TIMER_MAJOR,NULL,"uevent_timer_status");在本项目中建立的目录文件是/sys/class/uevent_timer/uevent_timer_status/status注意思在使用kobject_uevent函数发送uevent事件时需要建立一个工作队列来发送,否则会在发送过程中内核死掉。INIT_WORK(&uevent_timer_dev->cha

4、nged_work,timer_change_work);通过schedule_work(&uevent_timer_dev->changed_work);来调用timer_change_work函数,在此函数中利用kobject_uevent(&uevent_timer_dev->clsdev->kobj,KOBJ_CHANGE);来发送uevent事件.当上层读取file时会调用uevent_timer_show_attrs函数来更新及显示文件内容当上层写入file时会调用uevent_timer

5、_store_attrs函数来更新及写入文件内容二、服务层新建以下两个文件frameworks/base/services/jni/com_android_server_UeventTimerService.cppframeworks/base/services/jni/onload.cppframeworks/base/services/java/com/android/server/UeventTimerService.javaYibinCityCitytracktrafficplanningis

6、Yibincityregionalrangewithintracktrafficsystemofonceintegration,andcitytracktrafficalsoisYibinCityCityintegratedtracktrafficsystemintheofpart,foraccurategraspcitytracktrafficresearchofobjectframeworks/base/services/java/com/android/server/SystemServer.j

7、ava      (1)JNI层            JNI是java调用本地的接口,JNI主要工作是打开驱动所创建的file并将其值读出来,      在staticintreadFromFile(constchar*path,char*buf,size_tsize)函数中读取值使用staticJNINativeMethodsMethods[]={        /*name,signature,funcPtr*/        {"native_update","()V",(void*)andr

8、oid_server_UeventTimerService_update},  };注册一个函数native_update以供服务的java层调用修改onload.cpp,在其中加入intregister_android_server_UeventTimerService(JNIEnv*env);在JNI_OnLoad中加入register_android_server_UeventTimerService(JNIEnv*env);在加载时启动此服务(2

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。