ZigBee_协议栈简介_beestack_Geek_LFP的博客-程序员秘密

技术标签: Zstack  ZigBee  协议栈简介  OSAL  zigbee  

非开源协议栈:
1、freescale 解决方案
协议栈种类:
1.1 802.15.4标准mac
1.2 SMAC
1.3 SynkroRF
1.4 ZigBee RF4CE
1.5 ZigBee 2007
最简单的就是SMAC,是面向最简单的点对点应用的,不涉及网络的概念;

其次是IEEE802.15.4,一般用来组建简单的星型网络,而且提供了源代码,可以清楚地看到网络连接的每个步骤,分别调用了哪些函数;

BeeStack(符合zigbee 2007)是提供的最复杂的协议栈,但是看不到代码,它提供给你一些封装好的函数,比如创建网络函数,你直接调用它,协调器就把网络创建好了,终端节点调用它则寻找可以加入的ZigBee网络并尝试加入。
其中硬件平台可以为下面中的任一种:
MC13202 ( 2.4 GHz射频收发器)
MC13213 ( 2.4 GHz射频收发器和带60K闪存的8位MCU)
MC13224V ( 2.4 GHz平台级封装(PIP) –带有128KB闪存、96KB RAM、80KB ROM的 32位TDMI ARM7处理器 )
MC13233

(带有HCS08 MCU的2.4 GHz片上系统 )
MC13202没有自带mcu,在做应用时,需要用户在自己的扩展板上加上mcu,既需要实现对外围设备的底层控制,也需要实现协议栈。下面的几种均有自带mcu,协议栈的实现在自带的mcu上实现,功能较简单的可直接使用片上的mcu资源进行控制;功能复杂的应用,最好协议栈实现与外围控制分开,大多数应用都选择arm芯片作为控制芯片;
详细信息可以查看http://www.freescale.com.cn/products/rf/ZigBee.asp

2、microchip 解决方案
协议栈种类:
ZigBee Smart Energy Profile (SEP) Suite
PRO ZigBee
RF4CE ZigBee
均是一整套的协议集,价格不菲;
硬件平台:
Pic18(mcu)+MRF24J40(2.4GHZ 射频收发器)+天线
与freescale 的mc13202相似,MRF24J40也只是射频收发器,不包含mcu,协议栈的实现需要借助于外围的mcu,当然微芯公司选择的是pic18及以上的芯片作为其主控mcu,通过spi接口与MRF24J40通信,查询其寄存器的状态,实现协议栈功能。
详见:http://www.microchip.com/

3、ST 意法半导体 解决方案
协议栈:
EMZNET ZigBee protocol stack
硬件平台:
Sn250 集成了 2.4GHZ的无线收发模块和emberznet16位微处理器;
详见:http://www.stmicroelectronics.com.cn/cn/analog/product/219474.jsp

半开源协议栈:
1、TI的解决方案:
协议栈(免费):
z-stack系列(不同的平台)
ZStack-CC2530-2.5.0
ZStack-EXP5438-2.5.0
ZStack-MSP2618-2.5.0
ZStack-LM9B96-2.5.0
ZStack-ZAP-MSP430-1.0.4
详见:http://www.ti.com/tool/z-stack
硬件平台:
cc2530(带有增强型8051mcu)
cc2530+cc2591(增加发射功率)
cc2520(2.4GHz ZigBee/IEEE 802.15.4 射频收发器)
CC2538(Cortex M3)
常用的是前两种;对要求不高的应用,不用另加mcu直接使用,非常方便。
详见:http://www.ti.com.cn/lsds/ti_zh/analog/zigbee.page

开源协议栈:
1. msstatePAN
Cortex M3

来自 https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=0&rsv_idx=1&ch=6&tn=98012088_dg&wd=CC2538&rsv_pq=8c7683ac0000e031&rsv_t=f2fa44LwaQha384oMXVahU7f56qPh%2FMCRBV6k9bcViU84pe7UDItkG%2BlKtRr9u9Ldw8&rqlang=cn&rsv_enter=1&rsv_sug3=6&rsv_sug1=6&rsv_sug7=100&rsv_sug2=0&inputT=4735&rsv_sug4=4736

msstatePAN协议栈是由密西西比大学的R.Reese教授为广大无线技术爱好者开发的精简版ZigBee协议栈,基于标准C语言编写,基本具备了 ZigBee协议标准所规定的功能,最新版本为V0.2.6,该版本支持多种开发平台,包括PICDEM Z、CC2430评估板、MSP430+CC2420(Tmote)以及WIN32虚拟平台。源代码是开放的,整个协议栈是基于状态机(FSM)实现的。如果你的程序构架不是基于操作系统的,有限状态机应该是一个很好的选择。而且OS(operating system)中进程的状态也是个各个状态间的切换。
该协议栈的网站地址如下 http://www.ece.msstate.edu/~reese/msstatePAN/
在网站上我们可以看到起最近的更新是在2007年,到目前为止已经有三年多的时间没有更新升级了。

  1. freakz协议栈和contiki操作系统。
    freakz是一个彻底的开源zigbee协议,配合contikj操作系统,相当于Z-Stack+OSAL。相对于另外一个开源的WSN(Wireless Sensor Networking,无线传感网)操作系统TinyOS来讲,contiki的代码全部为C语言写成,用GCC进行编译,对广大应用C语言多年的开发者 来说,减少了学习另外一种语言与编译平台所带来的时间花费。
    其下载地址如下:
    http://www.sics.se/contiki/
    http://sourceforge.net/projects/freakz/
    这里介绍一个专门研究开源ZigBee协议的网站,主要是frankz协议栈,已经写了很多好的文章。下面是他们的网站:
    http://www.feibit.com/

  2. TinyOS
    TinyOS是UC Berkeley(加州大学伯克利分校)开发的开放源代码操作系统,专为嵌入式无线传感网络设计,操作系统基于构件(component-based)的架构使得快速的更新成为可能,而这又减小了受传感网络存储器限制的代码长度。TinyOS的构件包括网络协议、分布式服务器、传感器驱动及数据识别工具。它只是一个操作系统,不过现在已经成立了 TinyOS ZigBee Working Group 已经开始设计开源的zigbee。非常值得我们的期待。

TI_ZStack协议栈部分层功能介绍:
APP:应用层,用户可以根据需求添加自己的任务。这个目录中包含了应用层和项目的主要内容,在协议栈里面一般是以操作任务实现的。
HAL:硬件驱动层,包括与硬件相关的配置、驱动以及操作函数。
OSAL:协议栈的操作系统。
Profile:AF层,包含AF层处理函数。
Security&Services:安全服务层,包含安全层和服务层处理函数,比如加密。
Tools:工程配置目录,包括空间划分和Zstack相关配置信息。
ZDO:ZDO设备对象层。包括网络建立、发现网络、加入网络、应用端点的绑定和安全管理服务。
ZMac:MAC层,包括MAC层参数及MAC层的LLB库函数、回调处理函数。
ZMain:主函数目录,包括入口函数及硬件配置文件。
Output:输出文件目录,由IAR自动生成。
NWK:网络层,节点地址类型的分配、协议栈模板、网络拓扑结构、网络地址分配的选择、包含用户自定义参数
MAC:介质访问控制协议是传感器网络底层的基础结构,它决定了无线信道的使用方式。
ZDApp.c //包含网络启动与节点加入流程函数

基于IEEE802.15.4无线传输标准
Ad-hoc:基于自组网的对等网络
Zstack协议栈是一个半开源的协议栈,其中MAC层和ZMAC层的源代码没有全部

ZigBee_ZStack_OSAL简介:
OSAL运行起来后不停地询检有无事件发生,如果询检到某个任务有事件发生,便将此事件传递给事件处理函数进行事件的处理。

OSAL主要作用是:实现任务的注册、初始化以及任务的开始;任务间的消息交换;任务同步和中断处理;存储器分配和管理。

OSAL术语:
任务:也称作一个线程,是一个简单的程序。被赋予一定的优先级,有自己的一套CPU寄存器和堆栈空间,一般将任务设计为一个无线循环。有就绪态、运行态、挂起态(封锁态)、被中断态四种状态。
多任务运行:“多任务运行”其实是一种假象,实际上只有一个任务在运行,CPU可以使用任务调度策略将多个任务进行调度,每个任务执行的时间很短,任务之间的切换很频繁。
资源:任何一个任务所占用的实体都可以称为资源,如一个变量、数组和结构体。
共享资源
内核:在多任务系统中,内核负责管理各个任务,主要包括为每个任务分配CPU时间、任务调度和负责任务间的通信。
互斥:在多个任务系统中,多个任务在访问数据时具有排他性,即称为互斥。保证每个任务数据访问的唯一性。
消息队列:消息队列用于任务间传递消息,通常包含任务间同步的信息。

osal_init_system()
此函数是任务系统中的主循环函数。它将仔细检查所有的任务事件,并且为含有该事件的任务调用任务事件处理函数。如果有特定任务的事件,这个函数将为该任务调用事件处理例程来处理事件。相应任务的事件处理例程一次处理一个事件。一个事件被处理后,剩余的事件将等待下一次循环。如果没有事件,这个函数使处理器程序处于睡眠模式。

OSAL系统文件中:
taskArr数组,该数组的每一项都是一个函数指针,指向了事件的处理函数
taskCnt变量,保存任务总个数
taskEvent指针,指向了任务事件的首地址
taskEvent和taskArr数组中的数组是一一对应的,taskArr数组中的第 I 个事件处理函数对应taskEvent中的第 I 个任务事件。

系统消息事件包含以下几种:
按键事件;
接收消息事件;
消息接收确认事件;
网络状态改变事件;
绑定确认事件;
匹配响应事件。

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

智能推荐

Android 9.0适配_安卓9相机_依生依世的博客-程序员秘密

Android 9.0适配一.新功能1.WiFi RTT室内定位2.刘海屏支持(1)调试(2)页面的刘海使用模式(3)刘海相关API(4)适配方式3.解码图片4.动画二.所有应用的变更1.访问受限2.非SDK接口访问限制3.安全行为变更4.UTF解码5.xt_qtaguid文件访问6.FLAG_ACTIVITY_NEW_TASK7.屏幕旋转8.相机枚举三.目标(target)API28的变更1.前...

Web安全测试之XSS_weixin_33940102的博客-程序员秘密

2019独角兽企业重金招聘Python工程师标准>>> ...

elasticsearch分词器安装与使用_那些乐趣的博客-程序员秘密

1.分词器开源项目下载地址:https://github.com/medcl/elasticsearch-analysis-ik/2.点击上图红圈releases可以查看该开源项目迭代的版本,根据自己安装的es版本选择对应的版本下载3.我这里下载的linux版本的,把下载好的项目进行解压,进入到解压的项目里面运行mvn clean package进行打包,会出现一个t...

Maven报错: Could not resolve archetype org.apache.maven.archetypes:maven-archetype-webapp_weixin_34301307的博客-程序员秘密

郁闷了两天,创建maven项目时,eclipse报错:Could not resolve artifact org.apache.maven.archetypes:maven-archetype-webapp,详细信息如下图:此类报错产生的原因分以下两种: 1、Catalog 相关类型缺失;2、ide下载相关jar包时未能完整下载。针对以上两种原因的解决方案如下...

微信小程序资源汇总_饿了么微信小程序框架_Vincentzyc的博客-程序员秘密

微信小程序汇总(10月16日更新小程序100+个教程或资讯与50+个Demo)1:微信小程序官方工具:https://mp.weixin.qq.com/debug/w … tml?t=14764346784612:微信小程序简易教程:https://mp.weixin.qq.com/debug/wxadoc/dev/?t=14764346775993:微信小程序设计指南:http...

16第一章 ASP.Net编程基础知识_weixin_30791095的博客-程序员秘密

第一章 ASP.Net编程基础知识第一章 ASP.Net编程基础知识本章首先介绍用ASP.Net技术编制服务器端动态网页所需的网络和HTML标记语言方面的有关知识。然后介绍ASP.Net技术基础。9.1 网络基础用ASP.Net技术编制服务器端动态网页,必然要和网络打交道,具备一些网络方面的知识是必要的。这里假设读者已经学习过计算机基础课程,在此...

随便推点

一、创建物料组件:BAPI_NETWORK_COMP_ADD_wangxiang4321的博客-程序员秘密

BAPI_NETWORK_COMP_ADD" alt="创建物料组件相关BAPI: BAPI_NETWORK_COMP_ADD" src="http://s5.sinaimg.cn/mw690/003wFBDZgy6Fp1m7pfS04&690">主要的输入参数:好像price_unit 也可以不输入BAPI_NETWORK_COMP_ADD" alt="创建物料组件相关B

JQUERY 控制checkbox只能勾选一个_checkbox 控制只能勾选一个_body13_13的博客-程序员秘密

var allBox = $(":checkbox");    allBox.click(function () {        allBox.removeAttr("checked");        $(this).attr("checked", "checked");    });

使用@babel/preset-env的总结[email protected]/preset-env: 'chrome' is not a valid top-lev_大猫会长的博客-程序员秘密

babel7废弃了@babel/polyfill,转而使用core-js和regenerator-runtime,如下图但在实际使用中,我发现不用在js文件中引入下方2个包import 'regenerator-runtime/runtime';import 'core-js/stable';只需在.babelrc中如下配置那么如下图,使用npm run bb打包时会自动引入对应的补丁最后使用npm run build打包出来的js就可以兼容对应的api了...

集成学习,adaboosting与Gradient Boosting 原理解析_adaboosting and gradient boosting_zhuimeng999的博客-程序员秘密

姓名:Jyx 班级:csdn人工智能直通车-5期 描述:这是本人在学习人工智能时的学习笔记,加深理解集成学习集成学习将各种不同的学习器联合起来,以期提高总体的预测效果。为发掘各个学习器的优点,需要一套专门的方案来进行联合。 1. 几何平均。将各个分类器的预测结果进行几何平均。其基本原理是使联合后的概率与各个学习器预测的概率的KL距离最小化 2...

CNN-tracking-文章导读_liujun-st的博客-程序员秘密

1.MDnet:learning multi-domain convolution neural networks for visual tracking    MDnet是vot2015的冠军paper,由韩国Postech的Bohyung Han发表,测试了代码,在多个benchMark上的测试结果都比较好,但是速度比较慢,1fps,下面就开始介绍这篇paper的整体思路。

设计模式系列-开篇_伍特的博客-程序员秘密

单例懒汉饱汉子枚举双重检测锁登记注册式懒汉饱汉子枚举双重检测锁登记注册式

推荐文章

热门文章

相关标签