Zigbee协议栈ZStack构架_reading_code_man的博客-程序员宅基地

技术标签: ZStack  



协议栈版本信息: 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中包含了对硬件开发平台各类外设进行控制的接口函数。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u013243314/article/details/27353327

智能推荐

mysql默认排序规则utf8mb4_MySQL utf8mb4排序规则_漩凝的博客-程序员宅基地

文章直通车:utf8mb4 和 utf8utf8mb4排序规则一、先了解下 utf8mb4 和 utf8参考MySQL文档:utf8mb4: A UTF-8 encoding of the Unicode character set using one to four bytes per character.utf8mb3: A UTF-8 encoding of the Unicode char..._utf8mb4 默认排序

install ros-indigo-camera-info-manager-程序员宅基地

CMake Warning at /opt/ros/indigo/share/catkin/cmake/catkinConfig.cmake:76 (find_package): Could not find a package configuration file provided by "camera_info_manager" with any of the following..._install camera_info_manager

java 枚举可以循环吗,Java-枚举-逻辑循环参考-程序员宅基地

Imagine the following made up example:public enum Hand {ROCK(SCISSORS),PAPER(ROCK),SCISSORS(PAPER);private final Hand beats;Hand(Hand beats) {this.beats = beats;}}I will get an error Illegal forward r..._java 支持循环吗?

php 登陆后返回,wordpress 登陆后返回当前页面-程序员宅基地

wordpress网站中用户登陆后不能返回原来界面展开全部 默认情况,WordPress博客登陆之后会直接进入管理后台,但是若想登陆后返回登陆前的页面该怎么办呢?在WordPress中文论坛有个网友提起了这个问题,下面是我给他提供的解决方案:你可以在主题目录下的sidebar.php或者其他文件中添加以下登陆超链接 <a href="<?php echo wp_login_url( h..._wordpass 登录成功返回

Excel-VBA-质量问题可视化管理-13-新增问题1_通过excel宏能否进行质量管控-程序员宅基地

系统:Windows 10软件:Excel 2016本系列是假设一种应用场景,键盘质量检查中,发现问题,如何在键盘图片上进行标记和后续的跟踪管理其实也同样适用在其它应用场景,尤其与位置相关的质量特性管理上核心知识点,用形状表示问题Part 1: 项目功能介绍(更新)上一个部分的功能已经实现,重复的部分不再赘述接下来的几篇文章说一个延伸功能。之前的文章中,1个问题只有一个形状来表征,或者圆形或者矩形。当一个问题需要几个形状的时候,如何实现。这一部分涉及功能如下多形状定义一个问题,采_通过excel宏能否进行质量管控

redis实现购物车mysql_如何用java做一个购物车,用redis来缓存商品id?-程序员宅基地

Redis购物车个人商城系统,后台对购物车数据进行“半持久化”。因为购物车增删改的操作很频繁,如果使用mysql效率会很低,所以使用redis进行存储。如果楼主担心redis会挂,可使用redis集群,还是很靠谱的购物车service层代码:CartService.class@Service@Slf4jpublic class CartServiceImpl implements CartServ...

随便推点

MD5加密工具-程序员宅基地

package com.xuexibaodian.utils;import java.math.BigInteger; import java.security.MessageDigest; public class AppMD5Util { /** * 对字符串md5加密(小写+字母) * * @param str 传入要加密的字符串..._md5加密工具

ggpointdensity:R绘制密度散点图_r语言散点密度图-程序员宅基地

绘制散点图时,若散点数目很多,散点之间相互重叠,则不易观察散点趋势,此时可绘制密度散点图解决导入包library(ggplot2)library(dplyr)library(viridis) # 使用viridis提供的翠绿色标度:scale_fill_viridis()library(ggpointdensity) # 绘制密度散点图library(cowplot) # 图形组合,可以自动对其坐标轴生成绘图数据dat <- bind_rows( tibble(x = rnorm_r语言散点密度图

docker attach 卡住的问题-程序员宅基地

在将image镜像run成容器时使用以下命令sudo NV_GPU=1 nvidia-docker run --name *** -d -p ****:5000 -it -v **/**:/workspace tensorflow:18.09-py3 之前是一直在最后加上 bash 的,但这一次在使用digits镜像时,提示bash是一个无法识别的参数,所以在run成容器时,将命令中的b...

C# webBrowser JS调用C#方法_chromiumwebbrowser js 调用c#-程序员宅基地

第一点:在窗体的类上设置com可见性[PermissionSet(SecurityAction.Demand, Name = "FullTrust")] [System.Runtime.InteropServices.ComVisible(true)]第二点:的构造方法中设置this.webBrowser1.ObjectForScripting = this;..._chromiumwebbrowser js 调用c#

循环小数(Repeating Decimals, ACM/ICPC World Finals 1990, UVa202)-程序员宅基地

UVA202循环小数Repeating Decimals Repeating DecimalsThe decimal expansion of the fraction 1/33 is , where the is used to indicate that the cycle 03 repeats indefinitely with no intervening digits. In fact,