z-stack调试之ZDApp_init

zigbee组网过程浅析 zigbee协议栈使用的是zstack版本,该协议栈的整体功能有点类似于操作系统。下面以SimpleApp例程为例,对协议栈的组网流程进行描述。        协议栈是用C语言实现的,由于C语言的入口都是main函数,因此需要找到main函数,下图为协议栈各层列表(主要包括应用层、硬件层、MAC层、网络层、安全层、服务层等),TI公司的编程比较规范,文件的命名就意味着相关的功能。 图1 协 阅读详情

协议栈版本z-stack1.43-1.2.1,SimpleApp

本人一般调试程序一般习惯自上而下的原则,在调试z-stack的过程中,在osal_init_system()就卡住了。进入osal_init_system()发现问题出在ZDApp_init().

ZDApp_init()是ZD层的初始化函数。首先,我找到了ZD层的定义。ZDO即zigbee device object(zigbee设备对象,用来描述设备的状态)TI的ZDO层的API函数提供了创建网络,发现网络,假如网络,绑定应用终节点和管理安全的功能。ZDO层所有功能的定义和调用都在ZDProfile里面。

ZDProflie描述了zigbee设备在ZDO执行的每一个细节,它定义了设备的description和cluster(簇就是一组应用的命令和回复的集合),通过定义消息结构体ZDProfile提供:设备建立网络,设备和服务发现,终端绑定、绑定和不绑定,网络管理服务 功能。(从TI提供的官方文档上面,我们获得了如上信息。)

默认startup a network是在ZDApp_init()里面。但是,application可以不用理会这个默认习惯。条件编译选项选择了HOLD_AUTO_START、NV_RESTORE,application就能控制设备网络的开始,通过调用ZDOInitDevice()。

void ZDApp_Init( byte task_id )
{
  uint8 capabilities;

  // Save the task ID
  ZDAppTaskID = task_id;  //分配任务ID

  // Initialize the ZDO global device short address storage
  ZDAppNwkAddr.addrMode = Addr16Bit;
  ZDAppNwkAddr.addr.shortAddr = INVALID_NODE_ADDR;//初始化短地址
  (void)NLME_GetExtAddr();  // Load the saveExtAddr pointer.

  // Check for manual "Hold Auto Start"
  ZDAppCheckForHoldKey();//检测SW5是否按下,如果按下设置标志位devState = DEV_HOLD

  // Initialize ZDO items and setup the device - type of device to create.
  ZDO_Init();

  // Register the endpoint description with the AF
  // This task doesn't have a Simple description, but we still need
  // to register the endpoint.

  afRegister( (endPointDesc_t *)&ZDApp_epDesc );

#if defined( ZDO_USERDESC_RESPONSE )
  ZDApp_InitUserDesc();
#endif // ZDO_USERDESC_RESPONSE

  // set broadcast address mask to support broadcast filtering
  NLME_GetRequest(nwkCapabilityInfo, 0, &capabilities);
  NLME_SetBroadcastFilter( capabilities );

  // Start the device?
  if ( devState != DEV_HOLD )
  {
    ZDOInitDevice( 0 );
  }
  else
  {
    // Blink LED to indicate HOLD_START
    HalLedBlink ( HAL_LED_4, 0, 50, 500 );
  }

  ZDApp_RegisterCBs();
} /* ZDO_Init() */

这里启动网络,在条件编译里面设置了hold——auto——start的话,检测到按键SW5后系统才会继续运行


ZStack协调器节点配置操作指南 深入讲解ZStack协调器节点的配置流程与关键步骤,帮助用户快速掌握ZStack网络中的核心节点设置方法,提升组网效率与稳定性。 阅读详情

相关推荐

ZigBee快速入门:从核心概念到点对点通信实践

在物联网领域,低功耗无线通信技术是实现设备互联的关键基础。ZigBee作为一种基于IEEE 802.15.4标准的无线协议,以其低功耗、自组网和高可靠性在智能家居、工业传感等场景中广泛应用。其核心技术原理在于采用完整的协议栈架构,将网络管理功能与应用层分离,支持星型、树型和网状网络拓扑,其中网状网络具备强大的自愈能力和多路径传输特性。从工程实践角度,开发者需要理解协调器、路由器和终端设备三种角色,并通过端点与应用Profile实现设备间的互操作。本文以TI CC2530硬件平台和Z-Stack协议栈为例,详

weixin_33925615的博客 275

ZStack之ZDApp_Init解析

[注:本文源自博客园http://www.cnblogs.com/cherishui/,为尊重劳动者成果,如需转载请保留此行] 以下代码分析基于ZStack-CC2530-2.5.1a,开发环境为 IAR Embedded Workbench for 8051 IDE,版本号为8.30.2. ZDApp_Init在系统初始化时被调用,主要用来建立网络,注册系统消息和ZDO消息。     地址...

weixin_34054931的博客 517

Z-Stack中的HOLD_AUTO_START编译选项分析

Z-Stack中的HOLD_AUTO_START编译选项分析,TI的ZSATCK 2007 PRO

Zigbee网络设备启动—主要函数说明

使用的协议栈版本信息: ZigBee2006\ZStack-1.4.3-1.2.11、ZDApp_Init()及其中几个函数的说明.(1)ZDApp_Init()****************************************void ZDApp_Init( byte task_id ){  uint8 capabilities;  // Save the task ID  ZDA

河北正定欢迎您-少占鱼 1314

Fast-LIO2代码解析 古月居

FAST-LIO,FAST-LIO2与FASTER-LIO - 古月居FAST-LIO2代码解析(一) - 古月居FAST-LIO2代码解析(二) - 古月居FAST-LIO2代码解析(三) - 古月居FAST-LIO2代码解析(四) - 古月居FAST-LIO2代码解析(五) - 古月居FAST-LIO2代码解析(六) - 古月居

li4692625的博客 2785

机械臂速成小指南(七):从旋转矩阵到齐次变换——机械臂位姿的数学表达

本文详细介绍了机械臂位姿描述的数学基础,包括旋转矩阵、欧拉角和齐次变换等核心概念。通过解析旋转矩阵的几何意义和合成方法,以及欧拉角的直观描述,帮助读者理解机械臂位姿的数学表达。文章还探讨了齐次变换在工程实践中的应用,并提供了数值稳定性、坐标系约定和计算效率等实用建议。

cuda7parallel的博客 835

ZIGBee组网流程

转载:http://blog.sina.com.cn/s/blog_9d48d26f01015tph.html 第一个功能:协调器的组网,终端设备和路由设备发现网络以及加入网络 //第一步:Z-Stack  由 main()函数开始执行,main()函数共做了 2 件事:一是系统初始化,另外一件是开始执行轮转查询式操作系统 int main( void )                

tanqiuwei的专栏 9155

echarts实现折线图上下限区域展示

效果图: 画这种区域中主要是利用了series的两个属性: 思路:上下限都画上区域,然后折线利用图形透明度隐藏,给上区域加上颜色,给下区域加上白色(echarts图背景是啥色,就加啥色) lineStyle: { opacity: 0 }, // 图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形 areaStyle: { color: 'rgba(0,122,255,0.1)' }, // 填充的颜色 我的需求是最大天数、最小天数、

小太阳的博客 1万+

Zigbee网络设备启动流程—终端(自启动模式)

使用的协议栈版本信息: ZigBee2006\ZStack-1.4.3-1.2.1 Zigbee网络设备启动流程—终端(自启动模式)—以SampleApp的终端为例. 1、终端预编译信息 通过project->options->c/c++compiler->extraOptions可以看到终端所带的配置文件为: -f $PROJ_DIR$\..\..\..\Tools\CC2430DB

xiaoaide01的专栏 2597

Python主要智能优化算法库汇总

最近几年简单浏览和对比了一些智能算法的库。现将各种库的主要信息、相关优缺点简单整理如下,各位同学可根据自己的需求和喜好进行选择。 文章目录1、DEAP2、mealpy3、scikit-opt (国产良心)4、Geat2(国产用心)5、pygmo26、pyswarms7、SciPy(想不到吧)小结 1、DEAP 项目地址:https://github.com/DEAP/deap 安装: pip install deap 优点: 起点高,发表在Journal of Machine Learning Rese

半个冯博士 2万+

FPGA远程升级避坑指南:用AXI Quad SPI IP读写N25Q128 Flash的完整流程

本文详细介绍了FPGA远程升级过程中使用AXI Quad SPI IP读写N25Q128 Flash的完整流程,包括IP核配置、Flash操作指令集、双镜像备份设计及生产级远程升级协议。通过最佳实践和避坑策略,帮助开发者实现可靠的镜像更新方案,提升系统可靠性和可维护性。

weixin_30542079的博客 673

NLME_GetExtAddr函数

以前经常接触(void)NLME_GetExtAddr();这个函数,只知道它是用来获得扩展地址的,但是弄不明白为什么不设一个变量来保存获得的扩展地址呢?经过一番研究,终于弄明白了原因。 (void)NLME_GetExtAddr();在调用的时候,会将获得的扩展地址(IEEE地址)保存到saveExtAddr这个数组里,saveExtAddr是在ZDApp.h里定义的:extern uint8

cucmakeit的专栏 3244

用STM32L552驱动AD9102:一个硬件工程师的实战避坑指南(附完整代码)

本文详细介绍了如何使用STM32L552微控制器驱动AD9102任意波形发生器芯片,从硬件设计到波形生成的完整实战指南。内容包括电源架构、时钟电路设计、输出调理电路等关键硬件设计要点,以及软件驱动架构、波形存储优化和典型波形生成实例。通过实战经验分享,帮助硬件工程师避开常见设计陷阱,提升开发效率。

weixin_30889885的博客 333

zigbee z-stack 协调器断电后,重新上电无法恢复

1、是否宏定义了NV_RESTORE=1;NV_INIT=1;(协调器、路由器、终端都要定义)定义位置如下 2、下载模式选Erase flash,选择位置: 3、ZDOInitDevice初始化时,不旁路NV;源代码有按键选择,直接改为0: if ( 0 )//HalKeyRead() == SW_BYPASS_NV );位置:ZDApp.c 623行 搞了两天这问题;搞得脑壳痛;记录。 用的协议栈版本: Revised: $Date: 2012-02-16 16:04:32 -080

u012327215的博客 1907

MYSQL、ORACLE、PostgreSQL数据库对象层次及权限管理对比

本文为出于自己扩展、比较、图形化的思维路径自行总结归纳,可能有些细节不太准确,欢迎指正。MySQL、Oracle、PostgreSQL关系型数据库都有管理员用户、用户、权限管理、表函数索引等数据库对象,schema。但在数据库对象隶属层次上有差异和相同的地方。

rachel_2016的博客 1490

Python程序—定子故障三相永磁同步电动机振动与电流数据集

1.0 kW 电机匝间短路故障数据: 正常匝间短路振动数据: 匝间短路故障,严重度为2.26%: 匝间短路故障,严重度为2.70%: 匝间短路故障,严重度为3.35%: 匝间短路故障,严重度为4.41%: 匝间短路故障,严重度为6.48%: 匝间短路故障,严重度为12.17%: 匝间短路故障,严重度为21.69%1.5 kW 电机匝间短路故障数据: 正常匝间短路振动数据: 匝间短路故障,严重度为1.57%: 匝间短路故障,严重度为1.88%: 匝间短路故障,严重度为2.34%

m0_66465741的博客 1320

Z-STACK的一些小内容

这段工作期间,要和ZIGBEE打交道,其实以前也参与到一些Project中,或多或少的接触了ZIGBEE。对TI的Z-Stack也有了一些初步的了解,其实我个人对Z-Stack没有太多的热情,感觉这样写代码,让我看起来有点费力,当然这是我写代码的经验尚浅。闲话不多说了,Project要为软件做测试,但是需要组建千奇百怪的网络出来以便于调试。所以不能直接使用Z-STACK的默认配置,要自己主动去更...

weixin_30889885的博客 134

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

zstack流程梳理与串口事件详解及zigbee调试助手实现细节

首先先梳理一遍zstack的流程 协议栈的文件包层次结构: App:应用层目录,这是用户创建各种不同工程的区域,在这个目录中包含了应用层的内容和这个项目的主要内容,在协议中一般是以操作系统的任务实现的。 HAL:硬件层目录,包含有与硬件相关的配置和驱动及操作函数 MAC:MAC层目录,包含了MAC层的参数配置文件及其MAC的LIB库的函数接口文件 MT:实现通过串口可控制各层,并与各层进行直接交互 NWK:网络层目录,包含网络层配置参数文件网络层库的函数接口文件及APS层库的函数接口

GeekTalnex的博客 2366

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

CC2530移植Z-Stack协议key配置注意事项

项目遇到的问题:调试zigbee通信项目时,之前一直使用开发板卖家提供的ZStack-CC2530-2.5.1a协议栈,调试完成后将程序烧写到自己制作的硬件上也能正常运行,后来使用TI官方的Z-Stack Home 1.2.2a协议栈,将程序烧写到开发板上能正常运行,而将程序烧写到自己做的硬件上终端设备不能加入zigbee网络,LED灯一直闪烁。 原因:通过排查发现,此问题与HAL_KEY_JO

professionalmcu的专栏 1109

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

手把手教你用CC2530和Z-Stack协议栈DIY一个ZigBee环境监测器(附完整代码)

本文详细介绍了如何使用CC2530芯片和Z-Stack协议栈构建一个ZigBee环境监测系统,涵盖硬件选型、电路设计、协议栈配置、终端节点程序设计和协调器数据处理等关键步骤。通过实战指南和完整代码示例,帮助读者快速实现温湿度、空气质量等环境参数的监测,适合物联网开发者和电子爱好者参考。

程涛 393

ZigBee物联网开发实战:基于Z-Stack协议栈的快速入门与设备通信实现

物联网通信协议是连接物理世界与数字世界的核心技术,其中低功耗、自组网是其关键特性。ZigBee作为一种基于IEEE 802.15.4标准的无线通信协议,通过星形、树形和网状网络拓扑,实现了设备间的可靠、低功耗通信。其技术价值在于为智能家居、工业传感等场景提供了稳定、可扩展的组网解决方案。在工程实践中,开发者常使用TI的Z-Stack协议栈进行快速开发,通过协调器与终端设备的绑定机制,实现设备发现与数据交换。本文以Z-Stack协议栈为例,详细解析了从环境搭建、工程配置到实现无线控制LED的完整流程,涵盖了信

weixin_29186249的博客 300

华中科技大学计网实验cpt组网_无线传感器网络实验报告(十三)树型网络拓扑...

实验十三: 树型网络拓扑13.1实验目的1. 了解网络拓扑的基本概念;2. 掌握星网拓扑的实现过程;3. 学习星网拓扑的编程思想。13.2 实验环境 1. 硬件平台:ZigBee模块5个(1个Status,4个Data)、ZB-LINK调试器、USB3.0数据线、USB方口线两根、RJ11连接线;2. 软件平台:WinXP/Win7、IAR开发环境、SmartRFFlashProgrammer、Z...

weixin_26704349的博客 1948

CC2531无线MCU开发实战:从ZigBee协议栈到低功耗设计

在嵌入式系统和物联网领域,微控制器(MCU)与无线通信技术的集成是构建智能节点的核心。其原理在于通过高度集成的系统级芯片(SoC),将计算、存储、射频收发及丰富外设整合于单一硅片,从而在物理尺寸、功耗与成本间取得最佳平衡。这种集成方案的技术价值在于极大简化了硬件设计,降低了开发门槛,并提升了系统可靠性与能效比。它广泛应用于智能家居、工业传感、无线遥控等需要稳定、低功耗无线连接的场景。本文聚焦于德州仪器经典的CC2531 SoC,它集成了增强型8051内核、IEEE 802.15.4射频前端及USB控制器,是

weixin_34023982的博客 327

zigbee终端无法重连的问题解决

zigbee终端无法重连的问题解决1.zigbee重连的原因(1)zigbee由于各种原因的干扰导致信号太差而掉线。 (2)协调器重启。2.zigbee终端重连的处理(1)zigbee掉线后会进入回调函数:void ZDO_SyncIndicationCB( uint8 type, uint16 shortAddr );产生ZDO_NWK_JOIN_REQ,之后会重新初始化网络:case ZDO_

MENGHUANBEIKE的专栏 7197

Zstack协议栈结构的初步解析

喝水不忘挖井人转: http://rf.eefocus.com/module/forum/thread-555910-1-1.htmlZstack协议栈是由TI公司在2007年4月推出的Zigbee无线通讯协议,是一种半开源式的协议栈,历经多年发展,功能不断完善,当前最新版本为2.5.1-a。网上资料有的说zstack协议栈是开源的,但是实际上zstack中的很多关键代码都是以库文件的形式给出的...

weixin_34416649的博客 1345

【转自小峰博客】协调器的启动【自动模式】

首先请让我向大家介绍下强人小峰,看完他写的多篇博客感悟颇多哦! 使用的协议栈版本信息: ZigBee2006\ZStack-1.4.3-1.2.1Zigbee网络设备启动流程—协调器(自启动模式)—以SampleApp的协调器为例.1、协调器预编译信息通过project->options->c/c++compiler->extraOptions可以看到协调器所带的配置文...

weixin_30655569的博客 299
上一篇: ZigBee Z-stack 学习之osal_task
下一篇: z-stack初始化物理地址
cucmakeit
博客等级 码龄14年 30粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值