Zigbee协议栈ZStack构架

Zigbee协议栈ZStack构架协议栈版本信息:ZigBee2006\ZStack-1.4.3-1.2.11、ZStack协议栈构架  Zigbee协议栈就是将各个层定义的协议都集合在一起,以函数的形式实现,并给用户提供一些应用层API,供用户调用。协议栈体系分层架构与协议栈代码文件夹对应表如下:   整个协议栈的构架,如图所示APP:应用层目录,这是用户创建各种不同工程的区域,在这个目录

大家好,又见面了,我是你们的朋友全栈君。



协议栈版本信息: ZigBee2006\ZStack-1.4.3-1.2.1

1ZStack协议栈构架

   Zigbee协议栈就是将各个层定义的协议都集合在一起,以函数的形式实现,并给用户提供一些应用层API,供用户调用。协议栈体系分层架构与协议栈代码文件夹对应表如下:

Zigbee学习第四天-2——Zigbee协议栈ZStack构架
    整个协议栈的构架,如图所示

Zigbee学习第四天-2——Zigbee协议栈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、ZigBee2006协议栈源码库结构分析

   了解了ZigBee2006协议栈整个构架后,再来看看协议栈源码库结构是什么样的,各层的具体文件是什么,建立不同的项目、添加自己的应用层任务及处理函数需要修改什么文件。

   ZigBee2006协议栈ZStack-1.4.2文件目录及说明如下:

   Zigbee学习第四天-2——Zigbee协议栈ZStack构架
   打开SmapleAPP项目工程

先看APP层:

Zigbee学习第四天-2——Zigbee协议栈ZStack构架
   从上图可以看出,对于不同的项目,大部分代码都是相同的,只是在用户应用层,添加了不同的任务及事件处理函数。因此一般情况下,用户只需额外添加上图中的三个文件(主文件、头文件、操作系统接口文件)就可以完成一个项目,然后编写自己的任务处理函数就可以了。

HAL层目录:

Zigbee学习第四天-2——Zigbee协议栈ZStack构架 

Common目录下的文件是公用文件,基本上与硬件无关,hal_assert.c文件是断言文件,用于调试,hal_drivers.c是驱动文件,抽象出与硬件无关的驱动函数,包含有与硬件相关的配置和驱动及操作函数。Include目录下主要包含各个硬件模块的头文件,Target目录下的文件是跟硬件平台相关的,可以看到有两个平台,其中我们正在用的是CC2430EB平台。

MAC层目录:

Zigbee学习第四天-2——Zigbee协议栈ZStack构架
     MAC分为高层和低层两层,Include目录下包含了MAC层的参数配置文件及LIB库的函数接口文件。

Zigbee学习第四天-2——Zigbee协议栈ZStack构架
     其中Zmac.c是ZStack MAC层接口文件,Zmac_cb.c是ZMAC需要调用的网络层函数。

ZMain目录:

Zigbee学习第四天-2——Zigbee协议栈ZStack构架

 

Z-Stack 由main()函数开始执行,main()在Zmain.c中,该函数共做了2件事:一是系统初始化,另外一件是开始执行轮转查询式操作系统,OnBoard.c中包含了对硬件开发平台各类外设进行控制的接口函数。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/140321.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月8日 上午11:40
下一篇 2022年5月8日 上午11:40


相关推荐

  • c语言计算利息答案是0.0,C语言 | 计算存款利息

    c语言计算利息答案是0.0,C语言 | 计算存款利息例 2 用 C 语言计算存款利息 假设有本金 1000 元 想存一年 有三种方法可选择 活期 年利率为 0 0036 一年期定期 年利率为 0 0225 存两次半年定期 年利率为 0 0198 请分别计算出一年后按 3 种方法所得到的本息和解题思路 这个问题的算法很简单 关键在于找到公式 若存款额为 principal 0 也就是本金活期存款一年后的本息和为 principal 0 1 interest Rate1

    2026年3月16日
    1
  • Hash冲突的解决方式

    Hash冲突的解决方式在 Java 编程语言中 最基本的结构就是两种 一种是数组 一种是模拟指针 引用 所有的数据结构都可以用这两个基本结构构造 HashMap 也一样 当程序试图将多个 key value 放入 HashMap 中时 以如下代码片段为例 HashMapm newHashMap nbsp m put a rrr1 nbsp m put b tt9 nbsp m put c

    2026年3月26日
    2
  • arcgis二次开发python-ArcGIS 二次开发专题 序「建议收藏」

    arcgis二次开发python-ArcGIS 二次开发专题 序「建议收藏」依据ArcGIS组件式开发及应用的目录结构,将系统性的学习ArcGIS二次开发的道路分为三个部分。这个系列包含以下三个部分:Part1基础1.前言1.1组件式GIS1.2ArcObject开发的特点与历史2.使用ArcGISEngine控件编程3.几何形体对象Geometry4.地图组成5.空间数据符号化6.空间数据管理7.空间分析8.空间数据编辑9.地图输出10…

    2022年7月23日
    14
  • Navicat mysql报错 1142 – SELECT command denied to user ‘xxx‘@‘localhost‘ for table ‘user‘

    Navicat mysql报错 1142 – SELECT command denied to user ‘xxx‘@‘localhost‘ for table ‘user‘话我就撂这儿了,只要你认真看完,你就能解决。困了我一天一夜的问题终于解决了,问题也不知道是怎么产生的,点击“用户”或者修改“information_schema”的值就会提示错误,似乎是因为权限不足,错误入下图。首先你要知道数据库的用户是怎么回事。每个数据库都有账号密码,连接特定的数据库需要对应的账号密码,这个很容易理解,PHP里的mysqli_connect你们也用的多了。主机上的…

    2022年10月1日
    10
  • C正则表达式用法总结

    C正则表达式用法总结判断用户输入的密码是否合法 判断用户输入的邮箱格式是否合法

    2026年3月20日
    2
  • 将XPS文件转换成PDF格式有哪些方法?「建议收藏」

    将XPS文件转换成PDF格式有哪些方法?「建议收藏」XPS文件在我们日常工作中使用比较少,大部分时候我们都会将它转换成PDF格式后进行修改或保存等操作,那么如何将XPS转换成PDF呢?方法1:修改后缀我们都知道XPS跟PDF一样都可以通过虚拟打印生成,所以这两种格式比较类似,我们可以直接通过修改后缀名的方法转换。在XPS文件处右击选择“重命名”,然后直接将文档名称中后缀.xps修改为.pdf即可。不过这种方式有时可能会导致文档无法打开。方法2:另存目前很多PDF软件都可以直接打开XPS文件,我们在文件处右击将打开方式修改为PDF阅读器打开文档后,将

    2022年5月4日
    85

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号