当前位置:首页 >> 信息与通信 >>

ZigBee协议栈OSAL介绍


讨论 ZigBee 协议栈的构成以及内部 OSAL 的工作机理。 ZigBee 协议栈 OSAL 介绍 操作系统抽象层 OSAL 常用术语: 1.资源(Resource):任何任务所占用的实体都叫资源,如变量、数组、结构体 2.共享资源 (Shared Resource) 两个或两个以上任务使用的资源, : 为防止破坏资源, 任务在操作共享资源时是独占状态。 3.任务(Task)

:即线程,简单的程序的执行过程。任务设计时将问题尽可能分成多个 任务,每个任务独立完成某项功能,同时赋予优先级、CPU 寄存器和堆栈空间。一般一个 任务设计为一个无限循环。 4.多任务运行(Muti-task Running):其实同一时刻只有一个任务运行。 5.内核(Kernel):内核负责管理各个任务。包括:分配 CPU 时间;任务调度;任务 间的通信。 6.互斥(Mutual Exclusion):多任务通信最常用方法是共享数据结构。 保护共享资源常用的方法: 关中断; 使用测试并置位指令(T&S 指令); 禁止任务切换; 使用信号量; 7.消息队列(Message Queue):用于任务间传递消息。 OSAL 提供如下功能: 任务注册、初始化和启动; 任务间的同步、互斥; 中断处理; 储存器分配和管理; OSAL 运行机理: OSAL 就是一种支持多任务运行的系统资源分配机制。 OSAL 是一种基于事件驱动的轮询式操作系统。、 void osal_start_system(void)是 ZigBee 协议栈的灵魂,不断的查看事件列表,如果有 事件发生就调用相应的事件处理函数。 SYS_EVENT_MSG 是一个事件集合,是由协议栈定义的事件,即系统强制事件 (Mandatory Events),它的定义为: #define SYS_EVENT_MSG 它包含如下事件: AF_INCOMING_MSG_CMD 收到一个新的无线数据 0x8000;

ZDO_STATE_CHANGE 向协调器发送数据包。 ZDO_CB_MSG 息。 OSAL 消息队列 消息与事件的区别: 消息:事件和数据的封装

网络状态发生变化事件,利用它判断终端加入网络后何时

指示所有注册的 ZDO 响应消息。 调用 AF_DataRequest()发送数据时,需要确认信

AF_DATA_CONFIRM_CMD

事件:驱动任务去执行某些操作的条件 OSAL 维护一个消息队列,即消息链表 OSAL 添加新任务 要添加新任务要编写两个函数: 1.新任务的初始化函数 2.新任务的事件处理函数 OSAL 应用编程接口 API(Application Programming Interface)有 8 个 消息管理 任务同步 时间管理 中断管理 任务管理 内存管理 电源管理 非易失性闪存管理 消息管理 API: 主要用于处理任务间消息交换, 包括任务分配消息缓存、 释放消息缓存、 接收消息、发送消息 osal_msg_allocate() osal_msg_deallocate() osal_msg_send() osal_msg_receive() osal_set_event() osal_start_timerEx() osal_stop_timerEx() 分配缓存空间 释放消息缓存空间 一个任务从消息队列接收属于自己的消息 运行一个任务设置某一事件 设置一个定时时间,时间到后,相应事件被设置。 停止已启动的定时器 一个任务发送消息到消息队列

任务同步 API:用于任务间的同步,允许一个任务等待某个任务发生。 时间管理 API:用于开启关闭定时器

中断管理 API:用于控制中断的开启和关闭。

很少用 任务管理 API:用于对 OSAL 进行初始化和启动 osal_init_system() osal_start_system() 露。 osal_mem_alloc() osal_mem_free() 在堆上分配指定大小的还存区 释放之前函数分配的缓存区 初始化 OSAL,该函数是第一个被调用的 OSAL 函数 之前重点讲的函数

内存管理 API:用于在堆上分配缓存区,以下的两个 API 函数要成对使用,防止内存泄

电源管理 API:主要用于电池供电的 ZigBee 网络节点 非易失性闪存管理 API:Non-Volatile Memory,NV 一般指 Flash 或 EEPROM,每个 NV 分配唯一的 ID 号。 osal_nv_item_init() osal_nv_read() osal_nv_write() 初始化 NV 条目, 如果 NV 条目不存在, 创建并初始化该条目, 从 NV 条目中读取数据,可读取整条也可读取部分。 写数据到 NV 条目 如果存在,每次调用 osal_nv_read()和 osal_nv_write()之前必须调用该函数。

ZigBee 协议栈中串口应用详解 使用串口的基本步骤: 1.初始化串口,设置波特率、中断等。 2.向发送缓冲区发送数据或者从缓冲区读取数据。 ZigBee 协议栈中提供的与串口相关的函数: HalUARTOpen() HalUARTRead() HalUARTWrite() 回调函数是通过函数指针(函数地址)调用的函数,如果把函数指针作为参数传递给另 一个函数,当通过指针调用它所指向的函数时,称为函数的回调。 回调函数不是由该函数的实现方直接调用的,而是在特定的事件或条件发生时,由另一 方调用的,用于对该事件或条件进行响应。 回调函数机制提供了系统对异步事件的处理能力。 首先将异步事件发生时需要执行的代 码编写成一个函数,并将该函数注册成为回调函数,这样当该异步事件发生时,系统会自动 调用事件注册好的回调函数, 回调函数的注册实际上就是将回调函数的信息填写到一个用于 注册回调函数的结构体变量中。 程序中调用回调函数的步骤: 1.定义回调函数 2.初始化时,提供函数实现的一方将回调函数的函数指针传递给调用者 3.当特定的事件或条件发生时,调用者使用函数指针调用回调函数对事件进行处理。 使用条件编译是因为单片机的存储器资源有限。


相关文章:
ZigBee协议栈OSAL层API函数(译)
zigbee协议栈osal任务分... 7页 1下载券 ZigBee协议栈OSAL介绍 3页 1下载券...操作失败 10.5 osal_offsetof() 概述: 这个宏计算出一个单元内结构的内存偏移...
OSAL的工作原理
OSAL的工作原理_计算机软件及应用_IT/计算机_专业资料。OSAL 的工作原理 ZigBee 协议栈依据 IEEE 802.15.4 标准和 ZigBee 协议规范。 ZigBee 网络中的各种操作...
ZStack_OSAL中文说明
osal_run_system() void osalTimeUpdate() void Hal_ProcessPoll() 功能描述 ...3.Zigbee 协议栈 OSAL 分析 3.1 OSAL 运行机理 OSAL 是事件驱动的操作系统(...
OSAL在Zigbee的应用详解【入门级】
OSALZigbee的应用详解【入门级】_信息与通信_工程科技_专业资料。OSALZigbee的应用详解第一部分 OSAL 主循环流程我使用的协议栈版本及例子信息: 我使用的协议栈...
ZigBee协议栈TI Z
ZigBee协议栈TI Z_计算机软件及应用_IT/计算机_专业资料。ZigBee 协议栈 TI Z...Z-stack OSAL API 介绍 OSAL 层是与协议栈独立的,但是整个协议都要基于 OS ...
zigbee协议栈
Z-Stack 包含了网状网络拓扑的几近于全功能的协议栈,在竞争激烈的 ZigBee 领域...Z-stack OSAL API 介绍 OSAL 层是与协议栈独立的,但是整个协议都要基于 OS ...
ZIGBEE学习笔记_图文
操作系统实体只有一行代码:Osal_start_system(); // No Return from here ...Zigbee协议栈--Z-Stack的使用使用方法简介:一般情况下用户只需要额外添加三个...
OSAL系统框架专题(触发事件三种方式的详细介绍)
OSAL 系统框架专题 2010-4-15 2:47:00 9. TI 协议栈所用系统框架探讨。 ...00:18 该睡觉啦~~~ 文章来自:http://www.zigbeetech.com/bbs/viewthread....
zigbee协议栈流程
zigbee协议栈流程_专业资料。关于zigbe协议栈很好的入门资料上节刚刚讲了主函数,在那已经提到了 osal_init_system和osal_start_system函数。而协议栈是通过操作系统 ...
ZigBee协议栈应用分析
ZigBee协议栈应用分析_信息与通信_工程科技_专业资料。ZigBee协议栈应用分析ZigBee...OSAL 是协调协议栈、硬件、任务有条不紊工作的操作系统组(group) ,在这 里...
更多相关标签:
zigbee协议栈介绍 | zigbee osal | zigbee协议栈 | zigbee协议栈详解 | zigbee协议栈有哪些 | zigbee协议栈结构图 | zigbee3.0协议栈 | zigbee协议栈中文说明 |