您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > Android系统传感器软件模块的设计与分析解析
基于Android系统传感器软件模块的设计与分析第一章绪论1.1课题研究时代背景以及研究意义随着目前人们对手机依赖程度的不断增加,国内外无论何种品牌的手机均在技术上较传统有了质的飞跃。在现代化背景下,手机性能提升成都不断加大,相关功能也层出不穷,传统手机的基础型功能已经远远无法满足于人们使用手机的需求。在生活水平以及生活质量不断提升条件下,人们对手机的期待程度逐步提升,现如今已经希望手机能够像电脑一样实现多功能,例如收发邮件、处理文档、播放视频、玩游戏、上网等,且功能性的要求也处于不断提升过程之中。例如文档处理方面,需要手机能够读取多种不同类型的文档形式,包含word、PowerPoint、pdf等格式;播放视频同样需要满足多种格式需求,且视频的清晰程度要求也在上升之中;玩游戏需要实现大型游戏,也就是对手机内存的要求不断提升;上网则是对速度的要求,需要手机能够接收到3G、4G网络,实现高速上网。于是乎,智能手机的智能程度不断提升,不同品牌的手机厂商为了实现竞争力的提升以及市场特异性的优势,在操作系统方面开始了独自研发,让广大用户能够通过操作系统实现游戏、功能型软件等应用程序的自主开发。操作系统属于第三方程序的一种,目前智能手机产品主要存在中国台湾宏达(HTC)、韩国三星、美国摩托罗拉、加拿大RIM(黑莓)、美国苹果、诺基亚等,在操作系统方面主要有三星Bada、BlackBerryOS、Symbian、WindowsPhone、iPhoneOS、Android等。本文研究内容主要为Google的Android系统,这是一种建立在Linux平台开源的手机操作系统,也是全球第一个真正实现开源为移动终端研发的操作系统。它利用了自身免费、开源的特点,让Android系统在短短几年内便迅速的占领了消费者市场,成为了行业巨头。Android系统从技术层面能够被分为多个层面,也就是Linux驱动层、硬件抽象层、框架层、应用层,在传感器模块方面,其同样涉及到了这四个层次的方方面面。在应用层中,编写语言以Java为主,通常情况下属于第三方自主开发,也存在少部分为Google提供给用户的应用软件或是游戏,框架层为Google自主研发产品,在代码体系上处于完整状态,有完善的接口为用户提供操作体验,同时为第三方应用程序的研发提供支持与帮助。硬件抽象层能够提供硬件驱动模块,其状态为封闭源码形式,能够有效分格驱动层与框架层,让Android框架层在研发过程中可以实现完全不受驱动程序干扰。对于驱动层而言,其能够按照硬件设计针对传感器实时寄存器以及初始化的读写,促进传感器工作的正常化。本文基于这一背景,以实现传感器模块的开发为目标,研究了其在驱动层以及硬件抽象层的工作原理,旨在为开发者更便捷的解决传感器相关知识。1.2国内外研究背景分析Android是Google公司的成员之一,早在2007年年底便已经推出(2007-11-05)。该系统属于建立在Linux内核基础之上的智能型操作系统,并且只能够适用于手机智能,在次年9月,HTC(宏达)与Google联手推出了一款T-MobileG1,这是Android智能系统的第一款手机,能够支持WCDMA网络,同时还可以搜索到WIFI并自动连接无线网络,通过无线网实现上网功能。依赖着Google的开源特性以及技术支持,Android在短时间内便迅速占领了消费者市场,并一跃处于行业内的领先地位。目前,Android系统在全球的主要竞争对手为RIM的BlackberryOS以及苹果公司的iOS。据调查显示,在2011年的首个季度,Android在全球市场份额方面已经超过了原有行业巨头塞班系统,并且超过程度随着消费者市场的倾向化越来越明显,逐步成为了全球第一。在2012年2月,数据调查显示该系统占到了全球手机智能操作系统的52%以上,其中在我国市场占有率更是达到了68%以上。在智能型手机逐步普及背景下,该系统的游戏、软件等应用程序也在不断完善与发展,相信这个比例也处于不断增多过程之中。作为智能型手机的重要组成部分,传感器功能的目的在于让手机功能更为丰富多彩,让手机用户的体验感不断提升。在Android智能系统中,其对传感器的支持较为多元化,例如接近传感器、温度传感器、压力传感器、光线传感器、陀螺仪、方向传感器、磁力域传感器、加速度传感器等,这些传感器的应用让手机功能实现了丰富多元化的用户体验,从而进一步刺激消费者购买欲。通常而言,智能型手机在传感器方面均会支持接近传感器、光线传感器、方向传感器、磁力域传感器、加速度传感器,但也有一些在研发上投入较多的智能系统能够支持手机陀螺仪。对于Android智能系统而言,其传感器模块涉及到了系统本身的不同层次。传感器设备的运作需要建立在字符控制、设计基础之上,因此在驱动方面经常呈现出普通字符驱动状态;在硬件抽象层方面也会按照原有驱动来设计硬件抽象层。在硬件抽象层中,设计者必须将各种传感器整合成为一体,让其能够在同一环境中正常运作。1.3主要研究内容本文主要对磁力传感器、加速传感器等,并借助MSM7227芯片为平台,对喘口气模块的构建进行分析,并分析其特征,主要分析内容为:1、国外Android发展现状及其系统构架进行研究和分析;2、ndroid下传下传感器中的硬件抽象层结构进行分析和总结,并编写其传感器的硬件抽象层代码;3、深入研究Android传感器的工作原理,并编写其驱动程序;4、通过模拟和还原设计,Android传感器模块,并通过MSM7227芯片版来实现其传感功能;在现有的传感器硬件的构架当中,其抽象层需要协调多个传感器,因此,抽象层设计的好坏直接关系到整个模块能否正常的运转,这就使得在实现传感器模块过程中,首先要解决抽象层问题,另外对代码的调试也不容忽视。1.4本论文的结构安排本研究主要内容,主要划分为七个章节的内容,各个章节的内容主要包括一下几个方面:第一个章节,论述。主要对本研究课题的背景、意义进行介绍,对国内外Android智能手机的研究状况进行了深入分析,探讨了本研究课题的主要内容、目的。第二个章节,介绍相关的技术。对开发过程中所需要使用的关键技术与理论知识进行介绍,主要包括Android编译统、Linux内核概念、Android平台框架等多个方面的介绍。第三个章节,对Android传感器模块进行深入的分析,探究Android传感器模块的设计。通过分析Android传感器模块,将其划分为Linux驱动层、HAL、传感器应用层,传感器模块的功能主要是可以实现Linux驱动层、硬件抽象层,然后对Linux驱动层、硬件抽象层的工作流程进行深入分析。第四个章节,实现Android传感器模块的主要方法。利用Android提供的接口函数,以此来实现传感器模块硬件抽象层,采用input子系统与字符设备实现驱动层传感器的设备控制以及信息数据传输。第五个章节,结束语。对本研究课题中的重点内容进行一个总结,分析Android产品的发展前景。第二章传感器底层软件的总体设计2.1Android系统的基本结构一般来说,Android系统主要分为四层结构,如上图,即:应用程序层、应用程序框架层、系统运行层以及Linux内核层。2.1.1应用程序层介绍Android平台除了是操作系统外,还包含诸如SMS短信客户端程序、图片浏览器、网页浏览器以及电话拨号程序等等应用程序。此类应用程序都采用Java语言进行编写的,此外,此类应用程序还能被其他程序进行替换,这就提升了手机操作系统的灵活性,区别于传统手机操作系统中,应用程序被固化在其系统内部。2.1.2应用程序框架层介绍应用程序框架层是实现核心功能的层级,它不仅能够简化组件的重用,提升程序运行速度,还能使开发人员对程序的的快熟开发,框架层能够实现模块的个性化拓展,因此应用程序框架层是进行Android开发的重要基础。HomeContactsPhoneBrowser……ActivityManagerPackageManagerTelephonyManagerResourceManagerLocationManagerWindowManagerXMPPServiceContentProviderViewSystemNotificationManagerSufaceManagerSGLSSLLibcOpenGL/ESFreeTypeWebKitSQLiteMediaFrameworkAndroidRuntimeCoreLibrariseDalvikVMDisplayDriverFlashMemDriverBluetoothDriverCameraDriverBinder(IPC)DriverUSBDriverKeypadDriverWiFiDriverPowerManagemenAduioDrivers程序功能:(1)ActivityManager,即活动管理器。其主要功能是对Android系统中的各个应用程序的周期,同时还拥有导航回退功能。(2)WindowManager,即窗口管理器。其主要功能是对窗口下的各个应用程序进行管理。(3)ContentProvider,即内容提供器。其主要功能是在开启应用程序后,促使不同的应用程序之间能够进行存取或分享相关数据,如:复制粘贴功能等。(4)ViewSystem,即通常的视图系统。其主要功能为,对相应的程序,构建其基本组件。(5)NotificationManager,即通告管理器。通告管理器主要功能为对应用程序进行提示信息,其通常的表现形式为,在状态栏进行显示信息。(6)PackageManager,包管理器。主要的功能,就是管理Android系统内部中的全部程序。(7)TelephonyManager,即电话管理器。顾名思义,就是对系统内的所有移动设备功能进行有效管理。(8)ResourceManager,即资源管理器。其主要功能为应用程序提供各种非代码资源,例如图片、本地化字符串(就是通俗的表情包)、或自定义图片字符等等。(9)LocationManager,即位置管理器。其主要是为应用程序提供位置服务。(10)XMPPService,即XMPP服务。此版块主要提供GoogleTalk服务。2.1.3系统运行库层介绍系统运行库层,主要包括Android运行时与系统库两个部分。系统库。整个应用系统赖以形成的支架即系统库。系统库是整个应用程序框架层与Linux内核层连接的纽带。SurfaceManager:其主要功能为,在运行多个应用程序时,能够对程序进行有效管理,并实现存取操作间的互动,并且也能实现2D绘图与3D绘图进行显示、合成。MediaFramework:即多媒体库,它是一个基于C++的实现,能够播放和录制多种格式的音频、视频,其主要的编码格式有:MP3、MP4、MPEG4、H264、ARM及AAC格式。SQLite:即轻型的关系数据库引擎,它主要遵守ACID的关系型数据库管理系统,由于其占用资源非常低,所以许多产品都嵌入此种数据库。OpenGL|ES:即OpenGLforEmbeddedSystems,是OpenGL三维图形API的子集,能够对手机、游戏主设备、PDA等设备等进行嵌而设计的。FreeType:在系统运行库层中,其主要提向量字与点阵字的描绘和显示功能,它能够提供统一的接口来访问多种字体,其主要包括CID、OpenType、CFF、Type1、WindowsFON/FNT、X11PCF、TrueType等。SGL:为底层的2D图形渲染引擎。SSL:即SecureSocketsLayer安全套接层,其主要功能是实现网络通信提供数据完整性。Libc:Libc基于BSD的标准C系统数据库,ANSI为最基本的C语言,其主要功能为对embeddedlinux的设备定制。2.1.4Android运行时使用用Java语言,对Android程序在Android运行过程中,Android程序的Dalvik虚拟机与核心库进行深入分析。核心库,主要提供Java语言功能(API为主),如Android
本文标题:Android系统传感器软件模块的设计与分析解析
链接地址:https://www.777doc.com/doc-3629850 .html