目录
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基本工作原理相关推荐

  1. 简述Z-Stack的基本工作原理与流程(OSAL操作系统)

    首先上图,跟着图中的函数顺序来感受Z-Stack的工作流程: Z-Stack协议栈总的来说做了两件事,系统的初始化和启动OSAL操作系统. 系统初始化:从main函数看,首先是调用了osal_init ...

  2. 2021年大数据ELK(十八):Beats 简单介绍和FileBeat工作原理

    全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 Beats 简单介绍和FileBeat工作原理 一.Beats 二.FileB ...

  3. 深入理解Nginx工作原理

    1 反向代理 1.1 概念 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给intern ...

  4. 高频开关电源原理_程控开关电源的工作原理

    本文介绍了开关电源的工作原理以及它的特点. 程控开关电源要要比线性电源复杂得多. 下图是典型的开关电源工作原理图. 首先对 220 V/50Hz 的 AC 输入,通过桥式整流器进行整流 储能电容对整流 ...

  5. Servlet生命周期与工作原理

    Servlet生命周期分为三个阶段: 1,初始化阶段  调用init()方法 2,响应客户请求阶段 调用service()方法 3,终止阶段 调用destroy()方法 Servlet初始化阶段: 在 ...

  6. java的工作原理你知道吗_每天用Mybatis,但是Mybatis的工作原理你真的知道吗?

    近来想写一个mybatis的分页插件,但是在写插件之前肯定要了解一下mybatis具体的工作原理吧,于是边参考别人的博客,边看源码就开干了. 核心部件:SqlSession Executor Stat ...

  7. linux网络管理原理,Linux__网络管理(物理层 数据链路层 网络层工作原理)

    千锋云计算逆战班11点后打卡 今天学习后,进行复习下,物理层 数据链路层  网络层 的工作原理 物理层关心的两件事情:1.信号 2.介质 先说信号:信号分为模拟信号和数字信号 模拟信号: 模拟信号,不 ...

  8. HDD工作原理 导图

    以上导图介绍了我们使用的 (HDD)机械硬盘的基本构造以及核心工作原理,对于大家扫盲有所帮助 参考文档: https://blog.csdn.net/yizhaoxin/article/details ...

  9. 路由和交换机工作原理

    路由器与交换机的工作原理 计算机网络往往由许多种不同类型的网络互连连接而成.如果几个计算机网络只是在物理上连接在一起,它们之间并不能进行通信,那么这种"互连"并没有什么实际意义.因 ...

  10. Google工作原理

    今天在晚上看到一个图,讲解google的工作原理,感觉写的不错.贴过来方便以后深入的研究. 转载于:https://www.cnblogs.com/muyuge/archive/2010/07/06/ ...

最新文章

  1. oracle job使用详解及job不运行的检查方法
  2. itext库产生word文档示例(.doc)
  3. 万维网报务器与浏览器各有什么功能,浏览器是如何获得服务器上的信息的,第3章因特网的应用.ppt...
  4. Hadoop SSH免密登录公钥生成并实现不同主机间的免密登录
  5. LeetCode 30 串联所有单词的子串
  6. JAVA——Java操作MySQL数据库的简单工具类[CLASS:DatabaseUtil]
  7. android theme 使用方法,Android入门之Style与Theme用法实例解析
  8. centos 7.0上RabbitMQ 3.5.6版本多实例启动操作讲解
  9. android线性布局快捷键,【整理】Android图形界面知识学习与总结之:Linear Layout线性布局...
  10. 腾讯疯狂扩展7000人!我居然挂在了项目这块。。。
  11. ArchLinux借助Winetricks-zh安裝WineQQ8.1
  12. bzoj 3398: [Usaco2009 Feb]Bullcow 牡牛和牝牛(DP)
  13. 【转】Jenkins+Ant+Jmeter接口自动化集成测试实例
  14. Android-Universal-Image-Loader的工具类封装
  15. 软件专业大学生常用的刷题、找答案、找资源的网站
  16. 《人月神话》——2人月神话
  17. Latex 箭头上面写字母
  18. mysql filtered_为什么Mysql explain extended中的filtered列值总是100%
  19. Clickhouse入门学习、单机、集群安装部署
  20. 【算法】高精度(加减乘除)包含高精度*高精度高精度/高精度

热门文章

  1. vue实现马赛克功能
  2. python实现excel表格图片识别,并转换成excel文件
  3. 2017计算机基础模拟试题,2017年计算机一级考试PS及基础模拟多选试题
  4. 2015年ps计算机试题,2015年计算机一级考试《PS》模拟试题及答案(一)(2)
  5. ttest函数使用方法_【Excel函数】TTEST函数 - 曹海峰个人博客
  6. 揭秘:客服如何创造价值和自我超越
  7. 如何在visio里将图形进行任意角度旋转
  8. java如何知道城市是省会_全国各省的省会都是怎么确定的?
  9. 五菱“神车”再添一员,小型电动车迎来“均值回归”?
  10. 【The Economist】2018经济学人杂志经济学人双语版阅读分享资源