Android从驱动层到应用程序层的通信 您所在的位置:网站首页 驱动层和应用层通信 Android从驱动层到应用程序层的通信

Android从驱动层到应用程序层的通信

#Android从驱动层到应用程序层的通信| 来源: 网络整理| 查看: 265

研究一下Android从驱动层到应用层的通信机制是很有必要的,如新增加一个硬件并在应用层去控制硬件都需要用到,目的是知道需要增加哪些东西删改哪些东西而让系统依然工作正常。

总共需要增改的有四个东西,驱动、服务(jni、java)、应用apk

采用的方式是在驱动层写个字符型设备驱动其中内含一个定时器,每隔2秒发送一个uevent事件并改变sys下相关文件的内容,然后建立一个服务去读取文件并通过intent向上层广播,最后在应用程序层接收此事件并在TextView中显示出来

 

一、驱动层

kernel/drivers/char/uevent_test/test.c

Kconfig

Makefile

驱动层与服务层之间用到的通信机制是sys文件系统的uevent机制,涉及的函数有以下几个

 

在sys文件系统下建立一个类

class_create(THIS_MODULE, "uevent_timer");

在类里建立一个设备

device_create(uevent_timer_class, NULL, UEVENT_TIMER_MAJOR, NULL, "uevent_timer_status");

在设备目录下建立一个文件

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->changed_work, timer_change_work);

通过schedule_work(&uevent_timer_dev->changed_work);来调用timer_change_work函数,在此函数中利用



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有