智能家居架构分析.ppt_第1页
智能家居架构分析.ppt_第2页
智能家居架构分析.ppt_第3页
智能家居架构分析.ppt_第4页
智能家居架构分析.ppt_第5页
免费预览已结束,剩余23页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于Android的智能家居 项目背景 什么是Android Android一词的本义指 机器人 同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称 该平台由操作系统 中间件 用户界面和应用软件组成 号称是首个为移动终端打造的真正开放和完整的移动软件 平台优势 挣脱运营商束缚 Google应用 丰富的硬件 无限制的开发 开放性 发展趋势 目前 Android智能手机正处于快速增长期 2011年7月末 Android智能手机在国内的占有率达到34 8 在半年之内超过了iPhone手机 仅次于Symbian智能手机 2011 7各类操作系统智能手机中国占有率 价格优势 系统概述 两大模块 智能家居 M0 A8 智能居 平台测试 A8 智能家居 设计思想 房间温度 房间湿度 房间光照 房间电压 房间防盗 来宾登记 温度控制 风扇模拟 光照控制 LED模拟 报警控制 蜂鸣器模拟 A8 M0 个人职责 个人职责 Android架构 层次接口表 流程图 1 1 初始化加载JNI的库 流程图 2 2 JNI层实现对App层的方法 流程图 3 3 HAL层实现对JNI层的函数接口 流程图 4 4 HAL层调用驱动层的函数接口 App framework层 在Android应用层中的程序或组件都是用Java语言开发的 这些Java代码编译后变成Dex格式的字节码 由Dalvik虚拟机执行 在执行过程中需要调用本地库时 由虚拟机载入这些本地库 然后让Java函数调用库中的函数 虚拟机相当于一座桥梁 让Java与本地库能够透过标准的JNI界面互相沟通 应用程序在虚拟机里执行 通过函数System loadLibrary 通知虚拟机载入指定的库 例如在Java代码中包含代码如 System loadLibrary libuart runtime so 虚拟机就会在Android文件系统的 system lib 目录中查找llibuart runtime so库文件 虚拟机载入libuart runtime so后 Java代码就可以与库文件结合起来一起执行 framework入口 JNI层 当第一次加载此库时 调用此函数注册本地方法 jintJNI OnLoad JavaVM vm void reserved JNIEnv env NULL jintresult 1 LOGI JNI OnLoad if vm GetEnv void JNI OnLoad 函数完成 1 把虚拟机环境信息保存到本地库的一个结构体 JNIEnv 的实例中 2 建立一个应用层中的UART控制服务与本地库的JNI函数表 3 返回虚拟机本地库使用的JNI版本 JNI入口 HAL Stub HALstub是一种代理人 proxy 的概念 stub虽然仍是以 so的形式存在 但HAL已经将 so档隐藏起来了 Stub向HAL提供操作函数 operations 而runtime则是向HAL取得特定模块 stub 的operations 再callback这些操作函数 这种以indirectfunctioncall的架构 让HALstub变成是一种包含关系 即HAL里包含了许许多多的stub 代理人 Runtime只要说明类型 即moduleID 就可以取得操作函数 对于目前的HAL 可以认为Android定义了HAL层结构框架 通过几个接口访问硬件从而统一了调用方式 HAL层 conststructuart module tHAL MODULE INFO SYM common tag HARDWARE MODULE TAGversion major 1 version minor 0 id UART HARDWARE MODULE ID 模块ID 上层的Service通过这个ID应用当前Stubname uartHALmodule author farsight methods uart module methods 入口函数管理结构体 HAL MODULE INFO SYM变量是andriodHAL模块通用的入口地址 且必须为这个名字 这样编译器才会将这个结构体的导出符号变为 HMI 这样这个结构体才能在使用库时被dlsym函数找到 进而返回给hw get module函数 HAL入口 权限的问题 由于Android应用程序无权限操作底层设备 如打开 读写等 而我们需要通过读写USB转成的串口的设备节点ttyUSB0 来读写Zigbee模块 所以我们需要修改设备权限为777最高权限 一种简单的方法是在system core rootdir下的uevent rc脚本里加入 dev ttyUSB00777rootroot即可 但是我们2 1版本里无此脚本 最初想法是在init rc脚本里添加chmod0777 dev ttyUSB0来修改 但是这样有一个致命的缺陷 即Zigbee模块必须在开机前就已连接在板上 若是开机时未识别到 还需把掉再插一次 但脚本已经执行过了 所以放弃此方法 我们采取的方法 1 通过给APK签名 赋予应用程序system的权限 2 在init rc中注册servicechmod4uart 去执行chmod4uart sh3 编写chmod4uart sh 通过setpropctl startchmod4uart获得root权限

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论