设备驱动外传感器

设备驱动外传感器

ID:39644169

大小:532.50 KB

页数:11页

时间:2019-07-08

设备驱动外传感器_第1页
设备驱动外传感器_第2页
设备驱动外传感器_第3页
设备驱动外传感器_第4页
设备驱动外传感器_第5页
资源描述:

《设备驱动外传感器》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

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

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

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

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