概述
目录
ZStack基本工作原理 1
摘要 1
前言 2
1、ZStack协议栈介绍 2
1.1、ZStack 2
1.2、ZStack协议栈的架构 2
2、 ZStack协议栈工作 4
2.1、ZStack的实现 4
2.2、ZStack OSAL API 介绍 5
2.3、ZStack的工作函数 6
参考 8
ZStack基本工作原理
摘要
ZStack是下一代开源的云计算IaaS(基础架构即服务)软件。它主要面向的是未来的智能数据中心,通过提供的API来管理包括计算、存储和网络在内的数据中心的各种资源,ZStack可以做到15分钟完成安装部署,版本间5分钟无缝升级,全API交付,零手工配置;可以单节点管理十万物理机、百万级虚拟机,同时响应数万并发API调用; API层面提供SQL级别的查询,拥有单项查询条件超过400万个,组合查询条件为400万阶乘;内建工作流引擎,可以在错误发生时随时回滚,维护系统一致性。
前言
ZStack于2015年4月首发0.6版本后,迅速获得技术圈关注。国内CSDN、InfoQ、国外The New Stack、51CTO及IT168都对ZStack的架构和技术进行了报道。阿里云(5月13日)、百度开放云(9月5日)、金山云(10月8日)和网易研究院(2016年1月26日)分别邀请ZStack创始团队进行技术交流,为他们的工程师团队讲解ZStack架构和技术。
1、ZStack协议栈介绍
1.1、ZStack
Z-Stack协议栈是一个基于任务轮询方式的操作系统,其任务调度和资源分配由操作系统抽象层OSAL管理着。即Z-Stack协议栈=OSAL操作系统+CC2530硬件模块+AF无线网络应用。
1.2、ZStack协议栈的架构
整个协议栈的架构,如图所示:
APP:应用层目录,这是用户创建各种不同工程的区域,在这个目录中包含了应用层的内容和这个项目的主要内容,在协议栈里面一般是以操作系统的任务实现的。
HAL:硬件层目录,包含有与硬件相关的配置和驱动及操作函数。
MAC:MAC层目录,包含了MAC层的参数配置文件及其MAC的LIB库的函数接口文件。
MT:监控调试层,主要用于调试目的的,即实现通过串口调试各层,与各层进行直接交互。
NWK:网络层目录,涵网络层配置参数文件及网络层库的函数接口文件,APS层库的函数接口。
OSAL:协议栈的操作系统。
Profile:AF层目录,包含AF层处理函数文件。
Security:安全层目录,安全层处理函数接口文件,比如加密函数等。
Services:地址处理函数目录,包括着地址模式的定义及地址处理函数。
Tools:工程配置目录,包括空间划分和Zstack相关的配置信息。
ZDO:ZDO目录。
ZMac:MAC层目录,包括MAC层参数配置及MAC层LIB库函数回调处理函数。
ZMain:主函数目录,包括入口函数main()及硬件配置文件。
Output:输出文件目录层,这个EW8051 IDE自主设计的。
2、ZStack协议栈工作
2.1、ZStack的实现
ZigBee无线网络的实现,是建立在ZigBee协议栈的基础上的,协议栈采用分层的结构协议分层的目的是为了使各层相对独立,每一层都提供一些服务,服务由协议定义,程序员只需关心与他的工作直接相关的那些层的协议,它们向高层提供服务,并由低层提供服务。
在ZigBee协议栈中,PHY、MAC层位于最低层,且与硬件相关;NWK、APS, APL层以及安全层建立在PHY和MAC层之上,并且完全与硬件无关。分层的结构脉络清晰、一目了然,给设计和调试带来极大的方便。
整个Z-Stack采用分层的软件结构,硬件抽象层(HAL)提供各种硬件模块的驱动,包括定时器Timer,通用I/O口GPIO,通用异步收发传输器UART,模数转换ADC的应用程序接口API,提供各种服务的扩展集。操作系统抽象层OSAL实现了一个易用的操作系统平台,通过时间片轮转函数实现任务调度,提供多任务处理机制。用户可以调用OSAL提供的相关API进行多任务编程,将自己的应用程序作为一个独立的任务来实现。
2.2、ZStack OSAL API 介绍
OSAL层是与协议栈独立的,但是整个协议都要基于OS才能运行。OSAL提供如下服务和管理:信息管理、任务同步、时间管理、中断管理、任务管理、内存管理、电源管理以及非易失存储管理。[28][29]
一、信息管理API
信息管理为任务间的信息交换或者外部处理事件(例如:中断服务程序或一个控制循环内的函数调用等)提供一种管理机制。包括允许任务分配或不分配信息缓存、发送命令信息到其他任务、接受应答信息等API函数。
二、同步任务API
该API允许一个任务等待某个事件的发生并返回等待期间的控制。该API的功能是为某个任务设置事件,一旦任何一个事件被设置就修改该任务。
三、时间管理API
该API允许定时器被内部(Z-Stack)任务和外部任务使用。该API提供开始和停止一个定时器的功能,这些定时器能用毫秒(ms)设置。
四、中断管理API
这些API是外部中断和任务的接口。这些API函数允许一个任务为每个中断分配指定服务程序。这些中断能被允许或禁止。在服务程序内,可为其他的任务设置事件。
五、任务管理API
该API用在管理OSAL中的任务,包括系统任务和用户自定义任务的创建、管理和信息处理等。
六、内存管理API
该API描绘了简单的存储分配系统。这些函数允许动态存储分配。
七、电源管理API
这里描写了OSAL的电源管理系统。当OSAL安全地关闭接收器与外部硬件并使处理器进入休眠模式时,该系统提供向应用/任务通告该事务的方式。
2.3、ZStack的工作函数
一.APP层
OSAL_Example.c中存放着操作系统接口文件,并且对于不公的项目,大部分的代码都是相同的,只是在用户应用层,添加了不同的任务及事件处理函数。因此一般情况下,用户只需要额外添加上图中的三个文件(主文件、头文件、操作系统接口文件)就可以完成一个项目,然后编写自己的额任务处理函数就可以了。
二.HAL层目录
common目录下的文件是公用文件,基本上与硬件无关,hal_assert.c文件是断言文件,用于调试,hal_drivers.c是驱动文件,抽象出于硬件无关的驱动函数,包含有与硬件相关的配置和驱动及操作函数。Include目录下主要包含各个硬件模块的头文件,Target目录下的文件是跟硬件平台相关的,可以看到有两个平台,其中我们正在用的是CC2530EB平台。
三.MAC层目录
MAC分为高层和低层,Include目录下包含了MAC层的参数配置文件及LIB库的函数接口文件。
四.ZMac目录
Zmac.c是ZStack MAC层接口文件,Zmac_cb.c是ZMAC需要调用的网络层函数。
五.ZMain目录
Z-Stack有main()函数开始执行,main()中Zmain.c中该函数共做了两件事:一是系统初始化,另外是开始执行轮训查询式操作系统,OnBoard.c中包含了对硬件开发平台各类外设进行控制的接口函数。
参考
[1].杜军朝、ZigBee技术原理与实践、机械工业出版社
[2].https://blog.csdn.net/kangerdong/article/details/86523286
[3].https://blog.csdn.net/weilexuexi12/article/details/71374307
最后
以上就是谦让嚓茶为你收集整理的ZStack基本工作原理的全部内容,希望文章能够帮你解决ZStack基本工作原理所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复