Dalvik虚拟机来运行,让系统在运行程序时可达到优化。Dalvik虚拟机并非运行Java字节码(Bytecode),而是运行一种称为.dex格式的文件。
(3)硬件抽像层
Android 的HAL(硬件抽像层)是能以封闭源码形式提供硬件驱动模块。HAL 的目的是为了把Android framework与Linux kernel隔开,让Android不至过度依赖Linux kernel,以达成kernel independent的概念,也让Android framework 的开发能在不考量驱动程序实现的前提下进行发展。
HAL stub是一种代理人(proxy)的概念,stub是以*.so档的形式存在。Stub 向 HAL"提供"操作函数(operations),并由Android runtime向 HAL 取得 stub 的operations,再callback这些操作函数。HAL里包含了许多的stub(代理人)。Runtime只要说明"类型",即module ID,就可以取得操作函数。
2.1.3系统移植主要工作
Android系统的移植工作的目的是为了在特定的硬件上运行Android系统。在移植的过程中,把握关键要点,减少工作量是一个重要的方面。从工作的角度,通常的方法为,首先要熟悉硬件抽象层的接口,其次要集成和复用已有的驱动程序,主要的工作量在硬件抽象层的实现中。为了更好地理解和调试系统,也应该适当地了解上层对硬件抽象层的调用情况。
图2.1:Android系统架构
移植方面主要的工作有两个部分:
* Linux驱动
* Android系统硬件抽象层
Linux中的驱动工作在内核空间,Android系统硬件抽象层工作在用户空间,有了这两个部分的结合,就可以让庞大的Android系统运行在特定的硬件平台上。
2.2 ZIGBEE技术
2.2.1 Zigbee网络配置
低数据速率的WPAN中包括两种无线设备:全功能设备(FFD)和精简功能设备(RFD)。其中,FFD可以和FFD、RFD通信,而RFD只能和FFD通信,RFD之间是无法通信的。RFD的应用相对简单,例如在传感器网络中,它们只负责将采集的数据信息发送给它的协调点,并不具备数据转发、路由发现和路由维护等功能。RFD占用资源少,需要的存储容量也小,成本比较低。
在一个ZigBee网络中,至少存在一个FFD充当整个网络的协调器,即PAN协调器,ZigBee中也称作ZigBee协调器。一个ZigBee网络只有一个PAN协调器。通常,PAN协调器是一个特殊的FFD,它具有较强大的功能,是整个网络的主要控制者,它负责建立新的网络、发送网络信标、管理网络中的节点以及存储网络信息等。FFD和RFD都可以作为终端节点加入ZigBee网络。此外,普通FFD也可以在它的个人操作空间(POS)中充当协调器(路由),但它仍然受PAN协调点的控制。ZigBee中每个协调点最多可连接255个节点,一个ZigBee网络最多可容纳65535个节点。
2.2.2ZigBee网络的拓扑结构
ZigBee网络的拓扑结构主要有三种,星型网、网状(mesh)网和混合网。
(1) 星型网
星型网是由一个PAN协调点和一个或多个终端节点组成的。PAN协调点必须是FFD,它负责发起建立和管理整个网络,其它的节点(终端节点)一般为RFD,分布在PAN协调点的覆盖范围内,直接与PAN协调进行通信。星型网通常用于节点数量较少的场合。
(2)Mesh网
Mesh网一般是由若干个FFD连接在一起形成,它们之间是完全的对等通信,每个节点都可以与它的无线通信范围内的其它节点通信。Mesh网中,一般将发起建立网络的FFD节点作为PAN协调点。Mesh网是一种高可靠性网络,具有"自恢复"能力,它可为传输的数据包提供多条路径,一旦一条路径出现故障,则存在另一条或多条路径可供选择。Mesh网可以通过FFD扩展网络,组成Mesh网与星型网构成的混合网。
(3)混合网
混合网中,终端节点采集的信息首先传到同一子网内的协调点,再通过网关节点上传到上一层网络的PAN协调点。混合网都适用于范围较大的网络。
2.2.3 ZigBee组网技术
ZigBee中,只有PAN协调点可以建立一个新的ZigBee网络。当ZigBee PAN协调点希望建立一个新网络时,首先扫描信道,寻找网络中的一个空闲信道来建立新的网络。如果找到了合适的信道,ZigBee协调点会为新网络选择一个PAN标识符(PAN标识符是用来标识整个网络的,因此所选的PAN标识符必须在信道中是唯一的)。一旦选定了PAN标识符,就说明已经建立了网络,此后,如果另一个ZigBee协调点扫描该信道,这个网络的协调点就会响应并声明它的存在。另外,这个ZigBee协调点还会为自己选择一个16bit网络地址。ZigBee网络中的所有节点都有一个64bit IEEE扩展地址和一个16bit网络地址,其中,16bit的网络地址在整个网络中是唯一的,也就是802.15.4中的MAC短地址。
ZigBee协调点选定了网络地址后,就开始接受新的节点加入其网络。当一个节点希望加入该网络时,它首先会通过信道扫描来搜索它周围存在的网络,如果找到了一个网络,它就会进行关联过程加入网络,只有具备路由功能的节点可以允许别的节点通过它关联网络。如果网络中的一个节点与网络失去联系后想要重新加入网络,它可以进行孤立通知过程重新加入网络。网络中每个具备路由器功能的节点都维护一个路由表和一个路由发现表,它可以参与数据包的转发、路由发现和路由维护,以及关联其它节点来扩展网络[8-11]。
2.3 ZStack协议栈介绍
2.3.1 ZStack 的安装
Z-Stack 协议栈由TI 公司出品,符合最新的Zigbee2007 规范。它支持多平台,其中就包括CC2530芯片,ZStack 的安装包为ZStack-CC2530-2.4.0-1.4.0.exe,双击之后直接安装,安装完后生成C:\Texas Instruments\ZStack-CC2530-2.4.0-1.4.0 文件夹,文件夹内包括协议栈中各层部分源程序,Documents 文件夹内包含一些与协议栈相关的帮助和学习文档,Projects 包含与工程相关的库文件、配置文件等,其中基于ZStack的工程应放在 Texas Instruments\ZStack-CC2530-2.4.0-1.4.0\Projects\zstack\Samples 文件夹下。
2.3.2 ZStack 的结构
ZStack 的层次结构如下图2.2所示
图2.2 ZStack 层次结构
从层次的名字就能知道代表的含义,比如NWK层就是网络层。一般应用中较多关注的 是HAL层(硬件抽象层)和App 层(用户应用),前者要针对具体的硬件进行修改,后者 要添加具体的应用程序。而OSAL 层是ZStack 特有的系统层,相当于一个简单的操作系统, 便于对各层次任务的管理,理解它的工作原理对开发是很重要的,下面对各层进行简要介绍APP (Application Programming):应用层目录,这是用户创建各种不同工程的区域,在这个目录中包含了应用层的内容和这个项目的主要内容,在协议栈里面一般是以操作系统的 任务实现的。
HAL(Hardware (H/W) Abstraction Layer):硬件层目录,包含有与硬件相关的配置和驱动及操作函数。
MAC:MAC 层目录,包含了MAC层的参数配置文件及其MAC的LIB库的函数接口文件。
MT(Monitor Test):实现通过串口可控各层,与各层进行直接交互。
NWK(ZigBee Network Layer):网络层目录,含网络层配置参数文件及网络层库的函数接口文件。
OSAL(Operating System (OS) Abstraction Layer):协议栈的操作系统。
Profile:AF(Application work)层目录,包含AF层处理函数文件。
Security:安全层目录,安全层处理函数,比如加密函数等。
Services:地址处理函数目录,包括着地址模式的定义及地址处理函数。
Tools:工程配置目录,包括空间划分及ZStack 相关配置信息。
ZDO(ZigBee Device Objects):ZDO 目录。
ZMac:MAC 层目录,包括MAC层参数配置及MAC层LIB 库函数回调处理函数。
ZMain:主函数目录,包括入口函数及硬件配置文件。
Output:输出文件目录,这EW8051 IDE自动生成的。
2.3.3 设
上一篇:
基于Android系统的网络课程系统的设计
下一篇:
记录文件6:基于IOS的易车新闻客户端