一图读懂ZStack协议栈的基本架构和工作机理

   Z-Stack协议栈是一个基于任务轮询方式的操作系统,说白了就是不断的去查询任务中哪个任务被触发然后进行处理,其任务调度和资源分配由操作系统抽象层OSAL管理着。

    你可以理解为:Z-Stack协议栈 = OSAL操作系统 + CC2530硬件模块 + AF无线网络应用
    Z-Stack协议栈只做了两件事情:首先进行系统的初始化,然后启动OSAL操作系统。在任务轮询过程中,系统将会不断查询每个任务是否有事件发生,如果有事件发生,就执行相应的事件处理函数,如果没有事件发生,则查询下一个任务。

    OSAL操作系统:1、任务调度 2、资源分配

    CC2530硬件模块: 定义的IO口、串口、ADC相应的寄存器和功能的实现

    AF无线网络应用:发送和接收无线数据


    深入理解OSAL的调度机制和工作机理,是灵活应用Z-Satck协议栈进行Zigbee无线应用开发的重要基础。深入的理解OSAL操作系统的关键是要理解

任务初始化函数osalInitTasks()

任务标识符taskID

任务事件数组taskEvents[]任务事件处理函数指针数组tasksArr[]之间的对应关系以及它们在OSAL运行过程中的执行情况

    没错,Z-Stack协议栈就这么的简单!!!

    你把下面的这张图看明白了,你就把Z-Stack协议栈的核心搞清楚了!!!

上述示意图可以这样概括,一个任务号对应一个任务初始化函数,用来初始化相应任务的一些配置,同时对应着一个任务处理函数,用来相应任务号的任务被触发后的调研该任务处理函数进行相应任务的处理。而一个任务号对应多个事件来触发,

同一个任务号的事件会同一个任务处理函数处理,只是在任务处理函数中相应的事件ID进行了区别和对应的处理,如下图所示。

 

其中事件触发主要由osal_msg_send( byte destination_task, byte *msg_ptr ) 和osal_set_event(task_id, event_flag)函数触发。

 

参考链接:https://blog.csdn.net/ohy3686/article/details/82534996

 

  • 4
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yiye_pianzhou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值