欢迎来到天天文库
浏览记录
ID:39644169
大小:532.50 KB
页数:11页
时间:2019-07-08
《设备驱动外传感器》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、设备驱动外传-传感器的AndroidJavaFramework框架层收藏1.体系结构2.数据结构3.四大函数本文以重力感应器装置G-sensor为例探索Android的各层次结构。1.体系结构 Android的体系结构可分为4个层次。·第一层次 底层驱动层,包括标准Linux,Android核心驱动,Android相关设备驱动,G-sensor的设备驱动程序即存在于此·第二层次Android标准C/C++库,包括硬件抽象层,Android各底层库,本地库,JNI·第三层次AndroidJavaFramwork
2、框架层·第四层次Java应用程序本文重点关注硬件抽象层,JNI以及Framework。1.1硬件抽象层 硬件抽象层通过例如open(),read(),write(),ioctl(),poll()等函数调用的方式,与底层设备驱动程序进行交互,而这些函数调用是底层设备驱动程序事先准备好的。 用于交互的关键是文件描述符fd,fd通过open()打开G-sensor设备节点而得到,即fd=open("/dev/bma220",O_RDONLY);而/dev/bma220这个设备节点是在底层设备驱动中注册完
3、成的。 其他的函数调用如read(),write()等都通过该文件描述符fd对G-sensor设备进行操作。1.2JNI(JavaNativeInterface) JNI层可以认为是整个体系结构中的配角,概括地讲,它就完成了一项任务,既实现从C++语言到Java语言的转换。JNI层为JavaFramework层提供一系列接口,而这些接口函数的具体实现中,利用例如module->methods->open(),sSensorDevice->data_open(), sSensorDevice->pol
4、l()等回调函数与硬件抽象层进行交互。而这些open(),poll()回调函数在硬件抽象层中具体实现。1.3JavaFramework Framework层提供各种类和类的对象,可作为系统的守护进程运行,也可供上层应用程序的使用。 例如类SensorManager,它作为系统的守护进程在初始化的时候开始运行,其子类SensorThread中的子类SensorThreadRunnable通过sensors_data_poll()实现了对G-sensor数据的轮训访问,而sensors_data_pol
5、l()通过JNI层转换到硬件抽象层去具体实现poll()。2数据结构 一般境况下,硬件抽象层对硬件的描述都分为control和data两大类。2.1sensors_control_context_tstructsensors_control_context_t{ structsensors_control_device_tdevice; intfd;};structsensors_control_device_t{ structhw_device_tcommon; int(*open_dat
6、a_source)(structsensors_control_device_t*dev); int(*activate)(structsensors_control_device_t*dev, inthandle,intenabled); int(*set_delay)(structsensors_control_device_t*dev,int32_tms); int(*wake)(structsensors_control_device_t*dev);};2.2sensors_data_con
7、text_tstructsensors_data_context_t{ structsensors_data_device_tdevice; intfd;};structsensors_data_device_t{ structhw_device_tcommon; int(*data_open)(structsensors_data_device_t*dev,intfd); int(*data_close)(structsensors_data_device_t*dev); int(*po
8、ll)(structsensors_data_device_t*dev, sensors_data_t*data);}structhw_device_t{ uint32_ttag;uint32_tversion; structhw_module_t*module; int(*close)(structhw_device_t*d
此文档下载收益归作者所有