查看: 5831|回复: 2

号外,号外,增强型FreakZ协议栈重磅推出

[复制链接]
tiantangzai 发表于 2013-3-29 19:26:34 | 显示全部楼层 |阅读模式
本帖最后由 tiantangzai 于 2013-3-29 19:28 编辑

开源FreakZ协议栈勘误

背景
  FreakZ是一个完全开源的Zigbee协议栈,license属于the modified BSD,配合contiki操作系统,相当于z-stack+OSAL。FreakZ协议栈目前还处于初期阶段,早期该协议作者还对版本进行更新,但是从2010-3-20推出0.75版本之后,就再没有对FreakZ协议栈进行更新,即使是这最后的版本,也缺失了很多的功能,甚至一些功能出现了致命性的缺陷。云峰物联科技开发团队自11年5月份对FreakZ协议栈进行全面分析,经过百余次的反复调试,对原有的缺陷不断的修正,并按照zigbee协议标准添加了许多功能,使之成为稳定性更高,可配置性更强的协议栈。以示区别,我们姑且称她为增强型FreakZ协议栈。
勘误表
  下列表格只列出部分,详情请参阅增强版FreakZ协议栈源码:
  更改了树形路由的致命缺陷
  改进了mesh网的路由选择算法,增加了LQI的限制因素
  在MAC层增加了数据的发送队列,提高数据的吞吐量
  修改了64位和16位数据转换成数组的方法,低字节先发送
  增加了数据包发送成功判断的处理
  完善数据挂起位的设置
  增加了数据请求命令超时的处理
  增加了网络的自愈合能力,当出现某个数据链路连续数据包丢失,节点将重新构造到目的节点的数据路径
  增加了对低功耗的支持
  增加了父节点向睡眠节点的广播支持
  增加了邻居表的超时删除功能
  增加了终端节点的地址回收功能
  修改了路由发现算法
  修改睡眠子节点轮询数据的代码,如果父节点有此子节点的多包数据,则子节点周期性醒来时要把所有本节点的数据全部处理
  增加了路由地址的回收更能
  增加了空数据空数据包的返回
  修改了mac_data_req()函数源地址设置错误
  修改了nwk_tre_tree_get_dwnstrm_rtr_addr函数
  修改了nwk_rte_mesh_rrep_handler函数,并添加了删除req_list路由成功的表项
  修改了nwk_rte_tbl.c函数,实现周期性清理长期不用的路由表
  修改了zdo_nwk_select函数算法,增加了LQI的判断
  修改了mac_poll_conf()函数,增加了没有返回ASSOC_REP的处理
  修改了mac_comm_status_ind函数,增加了睡眠节点多次通信失败的处理
  修改了mac_assoc_conf函数,增加了nwk_neighbor_tbl_rem_invalid()函数,删除不在同一信道或PAN ID的所有邻居表
  修改了af.c中的af_tx_handler()函数
  修改了nwk_join_conf()函数,增加了由上层决定是否重新加入网络的状态判断
  修改了nwk_rte_mesh_send_rreq()函数,增加了路由请求加入重发队列的条件

增强型FreakZ协议栈网络构建用户手册

简介
  增强型FreakZ协议栈在原有FreakZ协议栈的基础上,实现了网络的拓扑结构在树型网络和网状网相融合,并针对原有FreakZ协议栈中大量的错误进行修改和完善(具体修改详情请参阅< 开源Freakz协议栈勘误>),使得网络稳定性更强,数据传输途径更优越。在此基础上,增加了类似linux操作系统中命令行操作的方式,方便用户直接通过串口来控制网络的大部分操作。
  撰写该文档的目的是指导用户在串口界面使用命令来进行网络参数的配置,控制网络的建立,数据的传输方式。
网络控制命令行
  本协议包含一些列特殊命令来模拟建立网络、添加网络节点、网络节点列表以及和特定节点通信等等。实际上,通过这些完整的命令行可以实现网络大部分的功能。
2.1 cfgp命令
这条命令用来配置网络的基本参数,命令基本格式如下:
cfgp [-r  -ch  -l  -pan  -s  -p] [value]
  —r 配置节点在网络中的角色,即设备类型,参数值可以为[c r e]分别表示协调器、路由、终端节点。例如使用命令cfgp -r c配置本节点成为一个协调器,注意一个网络中只能配置一个协调器。
  —ch 配置构建或加入网络所在的信道,针对本协议配套的开发板,支持的信道有四个,0~3。例如使用命令cfgp -ch 0,本节点只会加入工作在信道0的网络。
  —l 配置本节点的64位长地址。长地址的范围是0~0xFFFFFFFFFFFFFFFF。
  —pan 配置协调器组件网络的PAN ID或者是配置路由器、终端节点能够加入网络的PAN ID。例如使用命令cfgp -pan A001,本节点组建或者加入的网络的PAN ID为BE01,PAN ID的范围是0~0xFFFF,如果参数值为0xFFFF则表示不指定网络的PAN ID。
  —s 配置本节点是否为睡眠模式。使用该命令cfgp -s enable后节点进入定时睡眠模式,以降低功耗(注意:只有终端节点才可以设置为睡眠模式)。
  —p 指定本节点加入父节点的地址,一般情况下,节点运行后,会寻找链路质量最好的父节点发出入网请求,因此这个参数很少使用。例如使用命令cfgp -p 0后,限制本节点只能加入协调器,如果参数值为0xFFFF,则表示入网不指定父节点。
  值得一提的是,这些参数可以同时配置,且参数的顺序可以随意排列,如命令cfgp -r c -pan A001 -ch 0 -l 12那么节点将配置为协调器,PAN ID 为0xA001,通信信道为0,长地址为0x12。
2.2 sp命令
  sp是保存参数命令,因为通过上述sfgp配置网络的各种参数仅仅存在于内存中,一旦设备掉电,这些参数将全部丢失,通过sp命令将配置的参数保存在处理器的FLASH中,这样,设备在掉电重新启动后,将首先读取这些参数,按照参数的要求组网或者加入网络。
2.3 ls列表命令
  ls用于列出网络的相关信息,基本格式如下:
ls [-aib  -pib  -nib  -nbor  -rte  -am]
通过ls命令把下面的一些信息在串口上打印出来。
—aib 参数表示aps层的一些信息,这些信息大部分是通过cfgp命令配置的信息。
—pib 表示物理层信息
—nib 表示网络层信息
—nbor表示邻居表
—rte 表示路由表
—am 表示网络中节点的长地址和短地址的映射表

2.4 zs启动网络命令
  zs命令没有参数,使用这个命令后,节点将根据所配置的参数进入组建或加入网络的过程。
2.5 sd发送数据命令
  sd命令是通过短地址来进行数据的传输,基本格式如下:
sd  [address] [data]
  例如:sd 2 12 34 56 78 本节点将向网络地址为2的节点发送数据12 34 56 78。同时这条数据的发送允许路由发现。
2.6 sdt发送数据命令
  sdt命令是和sd命令用法基本相同,不同点在于sdt命令发送的数据只能沿树路由发送数据,而不能进行路由发现。
2.7 sdl发送数据命令
  sdl命令是通过长地址来进行数据的传输。基本格式如下:
sdl address data
  例如使用命令sdl 2 12 34 56 78本节点将向长地址为2的设备发送数据 12 34 56 78。同时这条命令的发送允许路由发现。
2.8 sdlt发送数据命令
  sdlt命令和sdl命令用法基本相同,不同点在于sdlt发送的数据只能沿树路由发送数据,而不能进行路由发现。
2.9 lv退出网络命令
  通过lv命令可以使节点退出当前网络,基本格式如下:
lv  [ieee]  [-rj  -rmc]
—ieee 表示网络中节点的长地址,如果ieee为0,那么表示本节点退出当前网络;ieee不为0,则表示对指定的长地址的节点退出当前网络。
—rj 本条参数表示如果指定退出网络的节点有子节点,那么在这个节点退出网络之后,其子节点将重新寻找父节点加入网络。
—rmc 本条参数表示如果指定退出网络的节点有子节点,那么在这个节点退出网络的同时,其子节点也退出网络,不再加入网络。
2.10 shn 显示网络拓扑命令
  Shn用来讲网络中的所有节点的拓扑结构在串口上打印出来,本条命令没有参数。
暗梅幽闻花 发表于 2013-4-7 01:44:35 | 显示全部楼层
  是开源吗
 楼主| tiantangzai 发表于 2013-4-9 09:00:30 | 显示全部楼层
暗梅幽闻花 发表于 2013-4-7 01:44
是开源吗

开源的,为了方便使用,并有配套的开发板

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表