陀螺传感器在Android操作系统上的应用及移植开发

///陀螺传感器在Android操作系统上的应用及移植开发

陀螺传感器在Android操作系统上的应用及移植开发

陀螺传感器在Android操作系统上的应用及移植开发

摘 要

随着智能手机及平板电脑的发展,由其是Aplle公司发布的Iphone手机和Ipad平板电脑。人们越来越喜欢在智能手机及平板电脑玩游戏,比如塞车呀,枪击游戏等。传统的技术已不能满足人们对于游戏体验的要求,后来苹果公司在Iphone及Ipad上加入了9轴传感器技术,使其智能手机在用户体验上得到了大大的提升,其它的品牌厂商迅速跟进。目前在Android比较高端的平板及手机都有加了9轴传感器技术,分别是陀螺仪,加速度,和指南针。未来这些技术将进入非常普及的阶段,将成为手机平板的标准配置。

在这一篇文章中我们将介绍在Invernsense MPU3050的SDK基础上研究如何将其移植到Android操作系统里面,并以实践的方式完成整个项目,其意义是通过这个项目使我们能够理解Android的架构,并能够移植陀螺仪的驱动程序,且可以延伸到其它的驱动程序方面,比如WIFI等驱动程序,为我们以后的工作中积累更多的实践经验。

关键词:Android, Invensense,Mpu3050,移动,移植, 手机,平板电脑,陀螺仪,驱动。

1 绪 言:


Android是Google公司在最近几年才发布的手机操作系统,凭借其对Java的整合力,Android快速发展,目前也形成非常大的产业链,但是对Android非常熟悉的人却不是太多,本文我们将以实际的案例来熟悉Android系统,以增加对驱动的移植和对整个开发过程的了解,熟悉其开发的过程,为进一步研究Android驱动的开发移植打下坚实的基础。

1.1 课题背景

前些年的一天,有位同事正神情专注地拿着手机晃来晃去,走近一看,原来在玩赛车游戏,车辆的方向变化竟然会机身的上下高低不同而自行感应。所以我也拷来装上,可同是Android手机,我的能如此操作,纳闷了。后来请教后才明白,理由是我的手机”陀螺仪”。

手机陀螺仪有玄机”陀螺仪”在智能手机上的运用已经逐渐,那么陀螺仪起了作用?陀螺仪的原理说穿了很简单,物体在高速旋转后,其轴心就有着指向的稳定性。日常生活中见过小孩玩陀螺,只要陀螺在旋转,就能立着不倒,陀螺仪的名称也得来。关于陀螺仪的原理大家不必去深入探讨,只知道,陀螺仪是在立体空间内全方位的角度偏移检测仪器。

另外重力感应也可当做陀螺仪,市场上手机其实不带有陀螺仪,与之很类似使用了重力感应器。大名鼎鼎的小米手机用重力感应器取代了陀螺仪(要节省成本嘛)。手机重力感应指的是手机内置重力摇杆芯片,支持摇晃切换所需的界面和功能,甩歌甩屏,翻转静音,甩动切换视频等,是非常具有使用乐趣的功能。重力感应器说得简单点,你本来把手机拿在手里是竖着的,你将它转90度,横过来,它的页面就跟随你的重心自动反应过来,也说页面也转了90度,极具人性化。

现在智能手机上都有内置重力感应器,有些非智能手机也有。其常见的运用有玩平衡球,还有横屏浏览网页、看小说之类。重力感应与陀螺仪的区别重力传感对于空间上的位移感受维数较少,能做到6个方向的感应就已经很不错了,而陀螺仪则是全方位的。毫不夸张地说,这级别上的产品。不过,重力感应一样代替陀螺仪的游戏,只不过精准度打了折扣。

陀螺仪除了玩对应的游戏之外,其他运用也很广泛,不得不说的是其导航功能的引入。当汽车行驶到隧道或城市高大建筑物附近,GPS信号时,陀螺仪来测量汽车的偏航或直线运动位移,以而继续导航。实际上,专业手持式GPS上也装了陀螺仪,手机上安装了相应的软件,其导航能力绝不亚于船舶、飞机上用的导航仪。

  除了导航,陀螺仪还和手机上的摄像头配合防抖,这会让手机的拍照摄像能力很大的提升。在按动手机屏幕上虚拟快门的一瞬间手机的抖动走势很大,而陀螺仪会甄别这一情况,寻找最稳定的刹那拍摄。君不见iPhone 4/4S拍出来的虚片会比不带有陀螺仪的手机少很多。

1.2 课题研究的目的和意义

本课题研究的目的是为了探索现代传感器在手持设备上的应用,以及如何将一个陀螺仪传感 移植到目前流行的Android操作系统中,因硬件接线的方式本身比较简单,所以我们将不讨论硬件线路图等,我们只讨论其软件的移植方法,本课题将主要针对嵌入式软件工程师工作的这一部分,并通过案例的方式来逐步了解Android系统的工作原理,还有陀螺仪MPU3050是如何在Android手机上工作的。通过这个案例我们可以了解如何去移植一个Android手机外设,并在未来可以将此方法应用于实际的工作中,相信对以后的工作都有一些指导意义。

1.3 本课题研究的任务和要达到的效果

本课题研究的任务是将一个陀螺仪(MPU3050)移植到手机上,当然厂商本身有提供一个SDK包,我们须要将其整合到我们的Android操作系统里面,然后测试其功能是否达到要求。

我们可以到网上下载或者自己写一个陀螺仪的测试程序来验证最终完成的效果,比如塞车游戏等等,当你转动手机角度的时候看看应用程序是否也有进行相应的动作。

2陀螺仪的原理和发展

2.1 陀螺仪原理:

当一个旋转物体的旋转轴所指的方向在不受外力影响时,是不会改变的。人们根据这个道理,用它来保持方向,制造出来的东西就叫陀螺仪。陀螺仪在工作时要给它一个力,使它快速旋转起来,一般能达到每分钟几十万转,可以工作很长时间。然后用多种方法读取轴所指示的方向,并自动将数据信号传给控制系统

[6]。

2.2 陀螺仪的发展简史:

自1910年首次用于船载指北陀螺罗经以来,陀螺已有100多年的发展史,发展过程大致分为4个阶段:第一阶段是滚珠轴承支承陀螺马达和框架的陀螺;第二阶段是20世纪40年代末到50年代初发展起来的液浮和气浮陀螺;第三阶段是20世纪60年代以后发展起来的干式动力挠性支承的转子陀螺;目前陀螺的发展已进入第四个阶段,即静电陀螺、激光陀螺、光纤陀螺和振动陀螺[7].

而进入普通百姓生活中的第一个陀螺仪(手机)则是在2010年6月,第一款带有三轴陀螺仪的智能手机iPhone4在苹果公司正式发布。苹果公司的iOS一直都是手机游戏的最佳平台之一。在iPhone4中,我们玩游戏的方式多种多样,虚拟摇杆、触控操作、重力感应、声控、摄像头等都可以用来控制游戏。此后,魅族MX等搭载Android系统的智能手机也顺利的加入了三轴陀螺仪技术。与此同时,支持三轴陀螺仪的软件和游戏也在不断增加。重力感应、陀螺仪等传感器的出现充分增强了玩家的操作体验,缩短了现实与虚拟世界的距离,另外小米等国产手机也在其内部加了陀螺仪以增加其用户体验。

在平板方面,比如最早开始使用陀螺仪的Acer500的平板内置了9轴传感器技术,包括Ipad等等也都加入了9轴传感器,可以说以后的智能手机,平板都将标准配置9轴传感器。

3、陀螺仪的应用

3.1陀螺仪在军事上的应用

在军事上陀螺仪第一次应用于第二次世界大战时德国的V-2火箭。现代导弹、宇航飞行器等多采用惯性制导的方法。1970年,我国人造地球卫星发射成功,其中也应用了惯性制导技术。20世纪90年代的海湾战争中,法国的AS-30激光制导空对地导弹命中率95%,美国的”拉斯姆”中程空对地导弹则创造了”百公里穿杨”的记录。为攻击一座水电站,一架A-6飞机在116km的距离上,发射了一枚”拉斯姆”导弹,而附近另一架A-7飞机发射的第二枚导弹,竟穿过第一枚导弹打开的墙洞击中目标。

3.2 陀螺仪在手持设备上的应用

2010年首次将”三轴陀螺仪”置入新产品iPhone 4中。”三轴陀螺仪”在手机中的应用,让用户能够更加得心应手的玩各种大型游戏,尤其是设计类游戏等,同时还可以配合GPS等来进行定位。在安装了三轴陀螺仪的智能手机中,当你移动手机时,无论是哪个方向摆动,GyroRotate软件的立方体都会有相应的转动。同时智能手机中安装三轴陀螺仪,能够将让在玩第一人称射击时,拥有最好的视觉效果,这对于玩游戏的体验来说是十分重要的。此后其它的手持设备商迅速跟进,小米,华为等国内厂商也在一些高端机型中加入了陀螺仪的功能,目前Iphone,IPAD及部分高端Android智能手机都有加入陀螺仪。

4陀螺仪传感器在Android操作系统上的移植

  1. Android系统原理
    1. Android发展简介

    Android是基于Linux内核的软件平台和操作系统,是Google在2007年11月5日公布的手機系统平台,早期由Google开发,后由开放手机联盟(Open Handset Alliance)开发。它采用了软件堆层(software stack,又名以软件叠层)的架构,主要分为三部分。低层以Linux内核工作为基础,只提供基本功能;其他的应用软件则由各公司自行开发,以Java作为编写程序的一部分。另外,为了推广此技术,Google和其他几十个手机公司创建了开放手机联盟。Android在未公开之前常被传闻为Google电话或gPhone。大多传闻认为Google开发的是自己的手机电话产品,而不是一套软件平台[1]。到了2010年1月,Google开始发表自家品牌手机电话的Nexus One。

    最初Android的版本为Android1.1,后来在此基础上进行了大量的改进,所以又产生了多个版本,目前为止版本大致为:

    Android1.5, Android 1.6, Android 2.0, Android 2.1, Android 2.2, Android 3.0, Android 3.1, Android 3.2, Android 4.0, Android 4.1, Android 4.2等等

4.1.2 Android系统架构

如下图描述了Android的基本原理,红色部分是Kernel层,黄色部分是Android Runtime即运行库,绿色部分为相关的库文件,蓝色的就是Framework和Aplliction层,下面我们作简单介绍。

1:Linux Kernel(红色部分)

最开始Android是基于Linux 2.6提供核心系统服务,例如:安全、内存管理进程管理、网络堆栈、驱动模型。Linux Kernel也作为硬件和软件之间的抽象层,它隐藏具体硬件细节而为上层提供统一的服务,最新版本的Android4.0是基于Linux3.0,但其linux内核跟标准的linux内核有所差异。

1)、android没有使用linux的X窗口系统;

2)、android没有采用glibc作为C库,另开发了一套Bionic Libc来代替glibc;

3)、增加了一些android专用的驱动程序 ,比如Android Alarm,Ashmem,Low Memory Kille,Android PMEM,USB Gadget驱动等。

2、Android Runtime(黄色部分)

  Android系统包含了一个核心库的集合,提供大部分在Java编程语言核心类库中可用的功能。每一个Android应用程序是Dalvik虚拟机中的实例,运行在他们自己的进程中。Dalvik虚拟机设计成,在一个设备可以高效地运行多个虚拟机。Dalvik虚拟机可执行文件格式是.dex,dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。 大多数虚拟机包括JVM都是基于栈的,而Dalvik虚拟机则是基于寄存器的。两种架构各有优劣,一般而言,基于栈的机器需要更多指令,而基于寄存器的机器指令更大。dx 是一套工具,可以将 Java .class 转换成 .dex 格式。一个dex文件通常会有多个.class。由于dex有时必须进行最佳化,会使文件大小增加1-4倍,以ODEX结尾。 Dalvik虚拟机依赖于Linux 内核提供基本功能,如线程和底层内存管理

3、Library(绿色部分)

这一部分是用C/C++写的库类,它提供给Android系统的各个组件使用。这些功能通过Android的应用程序框架(application framework)供开发者使用。它主要包括如下的库:

1:系统C库——标准C系统库(libc)的BSD衍生,调整为基于嵌入式Linux设备。

2:媒体库——基于PacketVideo的OpenCORE。它们支持播放和录制许多流行的音频和视频格还有图片等,包括MPEG4, AAC,PNG 等。

3:LibWebCore——Web浏览器引擎,驱动Android 浏览器和内嵌的web视图

4:3D库——基于OpenGL ES 1.0 APIs的实现。库使用硬件3D加速或包含高度优化的3D软件光栅

4: SQLite——所有应用程序都可以使用的强大而轻量级的关系数据库引擎

4、Application Framework(蓝色部分)

  通过提供开放的开发平台,Android使开发者能够编制极其丰富和新颖的应用程序。开发者可以自由地利用设备硬件优势、访问位置信息、运行后台服务、设置闹钟、向状态栏添加通知等等,很多很多。 开发者可以完全使用核心应用程序所使用的框架APIs。应用程序的体系结构旨在简化组件的重用,任何应用程序都能发布他的功能且任何其他应用程序可以使用这些功能(需要服从框架执行的安全限制)。这一机制允许用户替换组件。 所有的应用程序其实是一组服务和系统,包括: 视图(View)——丰富的、可扩展的视图集合,可用于构建一个应用程序。包括包括列表、网格、文本框、按钮,甚至是内嵌的网页浏览器内容提供者(Content Providers)——使应用程序能访问其他应用程序(如通讯录)的数据,或共享自己的数据 资源管理器(Resource Manager)——提供访问非代码资源,如本地化字符串、图形和布局文件 通知管理器(Notification Manager)——使所有的应用程序能够在状态栏显示自定义警告 活动管理器(Activity Manager)——管理应用程序生命周期,提供通用的导航回退功能

5、Application(蓝色部分)

Android应用层都是用Java编译写的,它提供了一些基本的Demo程序和一些常用的应用程序,包括电子邮件客户端、SMS程序、日历、地图、浏览器、联系人和其他设置,系统也提供了相应参考设计代码供相关开发人员参照并开发出优质的程序。


  1. Linux底层架构

    下图介绍了Linux的架构,我们简要概述如下:


最里面的一层是我们的硬件,最外层是我们常用的各种应用,比如说使用firefox浏览器,WORD等等。硬件是我们的物质基础,为了我们方便调用内核,我们将内核的功能总结成为系统调用(system call)。系统调用看起来就像是的C语言函数,你也可以在程序中直接调用。Linux系统有两百多个这样的系统调用。系统调用给了上层程序一个清晰的接口,隐藏了内核的复杂结构。一个操作系统上的功能可以看作是系统调用的组合的效果,而且一个操作系统不可能作出超越系统调用的动作。由于系统调用非常基础,所以有时使用起来很麻烦。比如说一个简单的给变量分配内存空间的操作,就需要动用多个系统调用。Linux定义一些库函数(library routine)来将系统调用组合成某些常用的功能,以方便我们编程。比如上面的分配内存的操作,看以定义成为一个库函数(像malloc()这样的函数)。再比如说,在读取文件的时候,系统调用要求我们设置好所需要的缓冲。

至于shell,可以看作一种特殊的应用。实际上我们之前所说的命令行, shell是一个命令解释器(interpreter),当我们输入”ls -l”的时候,它将此字符串解释为1) 在默认路径找到该文件(/bin/ls),2) 执行该文件,并附带参数”-l”。我们之前用>表示重新定向,用|表示管道,也是通过shell进行理解&或者|的含义,再通过系统调用指挥kernel建立具体的重定向或者管道机制。在没有图形界面之前,shell充当了用户的界面,当用户要运行某些应用的时候,要通过shell输入命令,以建立运行程序。shell可以执行符合shell语法的文本,这样的文本叫做shell脚本(script) [4]

  1. MPU3050陀螺仪介绍
    1. Invensense公司介绍

      Invensense是传感器与可携式行动设备开发与销售的全球领导者,拥有世界一流的性能,尺寸和成本。该公司的努力已引进世界上第一个集成双轴陀螺仪,其防震功能提供数字相机与行动电话极高的画面质量。基于航迹推测和与定位置的服务为可携式导航设备(PNDs)和行动电话皆有极高的性能。
      Invensense创新开发,在MEMS运动传感器的设计与制作的基础上,结合专利nasiri加工,终于使世界上第一个集成双轴陀螺仪克服了目前手持式消费产品的难题,提供市场上以最小的足迹,最低的成本和最高效能传感器,Invensense的IDG家庭陀螺仪的传感器是专为简易的整合为设计,目前Invensense传感器出货量已达百万。
      Invensense由史蒂芬于2003年成立,总公司位于美国加州圣荷西 。Invensense主要投资者包括artiman合资企业, partech国际和高通公司
      [8]

4.2.2 MPU3050产品特色

Mpu3050采用I2C的方式与主机进行通迅,并集成了加速度与指南针的算法,这样可以减少主机CPU的负担,使产品更具稳定性和效率性,而9轴的传感器技术也使得使用MPU3050的手持设备拥有更好的用户体验。

4.2.3 MPU3050系列产品介绍

MPU-3050™系列产品运动处理组件为业界第一个内建数字运动处理™(DMP™: Digital Motion Processor™)硬件加速引擎的三轴陀螺仪。现今多用途智能型手机要求小尺寸、低耗能的陀螺仪,必需能提供运动游戏要求之宽广的带宽,并提供导航辅助系统、录像与相机防手抖系统、精准动作人机接口控制系统所需之高敏感度及低噪声性能。MPU-3000是产业第一个针对智能型手机完整运动处理所设计的系列产品,特性为运动感测范围最广由250到2000°/sec、内建16-bit的模拟/数字转换器(ADCs)、可程控的数字滤波器、出厂前校准至1%的敏感度、内建六轴的多个感测组件融合算法技术(sensor fusion),以及13mW的低耗电量。
4x4x0.9mm大小的尺寸,加上I²C或SPI的数字接口,MPU-3000系列是在类似产品中第一个能满足手机需求的产品。MPU-3000延用传统惯性传感器结构,加了业界第一个的内建数字运动处理器(DMP)。DMP连同内建之FIFO,不仅能减轻主机应用程序处理器之高频运动演算,也能减少中断(interrupt)次数与主机每秒运算指令数(MIPS),进而改善整体系统效能。
MPU-3000的另一创举为它整合了第二个I²C接口来链接外接的加速器至DMP,此机制使DMP得以接收整合之陀螺仪与加速器的输出,执行六轴的多个感测组件融合算法技术(sensor fusion),再以Quaternion输出到手机应用处理器,并减轻传感器时间同步化及融合演算带给主机的负荷。其他MPU-3000的特性包含内部频率产出、内建温度传感器、可程序化的中断(initerrupt),以及能使影像、录像、GPS数据与传感器同步化的FSYNC机制。
关于供电电源弹性,MPU-3000除了模拟供电接脚外,独立的VLOGIC参考接脚可用来设定I²C的逻辑准位。VLOGIC的电压范围最低可由1.71V到最高VDD
[3]

其内部框图如下:


4.3 MPU3050驱动架构

Invensense公司提供了全部的Linux驱动及Android相关的运行库,而且配置文档也说的非常清楚,驱动包介绍如下。

4.3.1 Linux层驱动架构:负责硬件的驱动注册,获取I2C相关的坐标数据上报给Android系统。

4.3.2
HAL层驱动架构:即Android库类(MPL → Motion Processing Library运动处理库,包含了数据坐标的核心算法处理,为上层应用提供API的调用,手势识别,电源管理等等。

4.4 MPU3050的移植

4.1 软件移植方法说明

在上面我们了解了陀螺仪的原理,发展历史及Android的历史,原理还有MPU3050这一颗芯片的介绍后,我们现在将开始用一个实际的案例来说明如何把MPU3050的驱动整合到Android的系统之中,大概的方法我们将参考Invensense公司提供的参考手册一步一步的进行移植动作,在这个过程中我们还须要边做边测试边发现问题,其中调整陀螺仪方向参数和了解移植驱动的原理或许是我们工作的重点。

4.4.2 Linux层驱动移植

1:移植环境:

操作系统:Ubuntu10.4,Androi2.3

手机平台:google Nexus1

其它环境:根据Android编译要求说明,比如要求装JDK6,git,g++等

2:SDK安装

  1. 取得Google Nexus1的SDK包
  2. 解压安装包并设置环境变量

打开 ~/.bashrc : 然后增加如下文本后保存

export PATH=”/usr/local/android-sdk-linux/tools/:${PATH}”

3:编译Nexus1 Kernel

在移植Kernel之前须先确认所有的工具包和环境都是设置好的[2]

  1. 复制N1的相关配置文件

    $ cd Nexus_kernel/cm_kernel

    $ cp ../config .config

  2. 创建编译环境变量
  • $ export N1_CCOMPILER=/home/$USER/N1_DEV/Nexus1/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-
  1. 同步配置

    $ make ARCH=arm CROSS_COMPILE=$N1_CCOMPILER oldconfig

4)Make and Build

  • $ make ARCH=arm CROSS_COMPILE=$N1_CCOMPILER

5)将编译好的Kernel烧写到手机里面。

4:移植Mpu3050到N1

  • 解压 mpu3050.tar.gz 文件.
  • 复制mpu3050 到 drivers/misc/目录.
  • 复制 mpu3050.h (mpu.h, mpu6000.h) 到include/linux 文件夹.
  • 在 drivers/misc/Kconfig 文件中添加: source “drivers/misc/mpu3050/Kconfig”
  • 并在 drivers/misc/Makefile中加入obj-y += mpu3050/



  • 到这一步后我们还须要配置其I2C,具体方法是的其主板配置文件中(arch/arm/mach-msm/board-mahimahi.c)加入如下代码[9]


static struct mpu3050_platform_data mpu3050_data = {

.int_config = 0x10,

.orientation = { 0, 1, 0,

1, 0, 0,

0, 0, -1 },

.level_shifter = 0,

.accel = {

.get_slave_descr = bma150_get_slave_descr,

.adapt_num = 0, // The i2c bus to which the mpu device is

// connected

.bus = EXT_SLAVE_BUS_SECONDARY, //The secondary I2C of MPU

.address = 0x38,

.orientation = { 0, 1, 0,

1, 0, 0,

0, 0, -1 },

},

.compass = {

.get_slave_descr = hmc5883_get_slave_descr,

.adapt_num = 0, // The i2c bus to which the compass device is.

// It can be difference with mpu

// connected

.bus = EXT_SLAVE_BUS_PRIMARY,

.address = 0x1E,

.orientation = { 0, 1, 0,

-1, 0, 0,

0, 0, 1 },

},

};

static struct i2c_board_info __initdata mpu3050_i2c0_boardinfo[] ={

{

I2C_BOARD_INFO(“mpu3050”, 0x68), // 0x68 is the device’s

// address on the bus.

/*.irq = 299, */

.platform_data = &mpu3050_data,

},

};

然后重新编译后烧写文件到系统里面

4.4.3 HAL层移植

1:拷贝MPU3050的SDK到Android的Vendor目录。

2:编辑/invensense/Android.mk (if MPLV3.2.1 or latter /invensense/hardware/Android.ml)设置LOCAT_MODULE并替换如下LOCAL_MODULE := sensors.omap3
by LOCAL_MODULE := sensors.mahimahi[10].

3:然后修改 system/core/rootdir/init.rc文件在on init section:里面增加如下字断。

chmod 777 /dev/mpu

chmod 777 /dev/mpuirq

on boot
section:下面把如下一话加上去

service mpld /system/bin/mpld

user system

critical

4:重新编译Android系统,然后再将编译好的文件烧写的机器里面去

4.4.4 整合测试

经过Linux层和HAL层的移植,我们就完成了把MPU3050移植到Android系统上,接下来我们可以去网上下载一个陀螺仪的程序测试一下其效果,我们这里测试的效果如下:


上面我们配置的Linux的移植,在Android端,我们只须要将Invensense公司提供的SDK复制到相应的$PATH/Vender目录然后配置相关的文件即可,然后编译,然后将Img烧写到Google N1的手机中测试,最后我们对其进行相关测试,测主式的方式可以是官方提供的Demo代码,或者是由第三方开发的游戏程序都可以。

至此我们完成了将Invense的Mpu3050陀螺仪移植到Google N1手机中,我们可以在有陀螺仪的手机中玩一些体感游戏等等,以增加用户的体验

5总结与展望

Invensense公司的陀螺仪驱动移植的过程简单,但是它却涉及到的Android基本的知识,Linux驱动的原理及其工作流程,在移植过程中可以扩大知识面的去研究其具体的运行原理。另外须要说明的是,在移植的过程中当我们把Kernel移植完成后就可以使用Invensnse公司提供的测试工具对其硬件进行大概的测试,如果没有问题,那么我们再进行Android系统HAL的移植。当整个过程都完成的时候我们还须要确认其它X,Y,Z坐标的方向是不是对的,如果方向不对则须要调整驱动里面的三个坐标方向。

由于陀螺仪的技术日益成熟,相信未来的智能手机中都会增加陀螺仪,这也将极大的方便广大的用户群,以后在一些优质有趣的游戏中都会应用到陀螺仪技术,在增加用户体验的同时也给广大的厂商,游戏开发者带来极大的商机,厂商可以卖硬件,而游戏开发者也可以根据其硬件的特性而开发出优质的应用程序.

体感技术必将成为我们生活中的一项常规技术来感染我们的生活,我们也将体会到科技给人们带来的生活品质的提升。

参考文献

  1. <<百度百科>>Android.
  2. <<MPU3060移植说明>>官方指导
  3. <<MPU3060介绍>>Invense官网
  4. (美)史蒂文斯 (美)拉戈 译者:尤晋元 张亚英 戚正伟 << Advanced Programming in Unix Environment>>,2006年出版
  5. <<MPU3060介绍>>Invense官网
  6. 百度,<<陀螺仪原理>> ,2006年1月4日
  7. 宋桂云,<< 陀螺仪的应用及发>> ,2002年11月
  8. Invensense官方网站,Invensense公司介绍
  9. Invensense,Theporting guid for linux kernel,2011年6月
  10. Invensense,The porting guide of IVS MPL to Nexus phone,2011年6月

附录:

Android:是一种基于Linux的自由及开放源代码的操作系统,主要使用于便携设备,如智能手机平板电脑。目前尚未有统一中文名称,中国大陆地区较多人使用”安卓“或”安致“。Android操作系统最初由Andy Rubin开发,主要支持手机。2005年由Google收购注资,并组建开放手机联盟开发改良随后,逐渐扩展到平板电脑及其他领域上。2008年10月第一部Android智能手机发布。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。 2012年11月数据显示,Android占据全球智能手机操作系统市场76%的份额,中国市场占有率为90%

MPU3050: MPU-3000™系列产品运动处理组件为业界第一个内建数字运动处理™(DMP™: Digital Motion Processor™)硬件加速引擎的三轴陀螺仪。现今多用途智能型手机要求小尺寸、低耗能的陀螺仪,必需能提供运动游戏要求之宽广的带宽,并提供导航辅助系统、录像与相机防手抖系统、精准动作人机接口控制系统所需之高敏感度及低噪声性能。MPU-3000是产业第一个针对智能型手机完整运动处理所设计的系列产品,特性为运动感测范围最广由250到2000°/sec、内建16-bit的模拟/数字转换器(ADCs)、可程控的数字滤波器、出厂前校准至1%的敏感度、内建六轴的多个感测组件融合算法技术(sensor fusion),以及13mW的低耗电量。

9轴传感器三轴陀螺仪, 三轴加速传感器, 三轴磁传感器

Abstract

With the development of smartphones and tablets, by its is Aplle company release of the Iphone and the Ipad tablet computer. People are becoming more and more like in the smartphone and tablet computer to play games, such as traffic jam, shooting games, etc. Traditional technology cannot satisfy people to the requirement of game experience, later on apple’s Iphone and Ipad added 9 shaft sensor technology, make its smartphone got a big promotion in the user experience, other brands follow up quickly. At present in Android has more high-end tablet and mobile phone add nine shaft sensor technology, gyroscope, acceleration, and the compass. Very popular phase, these technologies will enter the future will become the standard configuration of mobile tablet.

In this article we will introduce in Invernsense MPU3050 SDK based on how it can be ported to the Android operating system, and by way of practice to complete the whole project, its significance is through this project made us to understand the architecture of Android, and be able to transplant gyroscope’s driver, and can be extended to other drivers, such as WIFI driver, for our more practical experience accumulated in the later work.

Keywords:Android, Invensense,Mpu3050, Porting, smartphonetabletsgyroscope,Driver。

2018-08-19T20:55:58+08:00 七月 7th, 2017|Android开发|3条评论

3条评论

  1. 生如夏花 2017年7月10日 于 下午8:42 - 回复

    学习了

    • cary.jin 2017年7月10日 于 下午8:45 - 回复

      共同进步吧

  2. 茶凉了O 2017年7月11日 于 上午8:35 - 回复

    数字运动处理™(DMP™: Digital Motion Processor™)硬件加速引擎的三轴陀螺仪

评一波