ZigBee协议栈OSAL介绍

讨论ZigBee协议栈的构成以及内部OSAL的工作机理。ZigBee协议栈OSAL介绍操作系统抽象层OSAL常用术语:1.资源(Resource):任何任务所占用的实体都叫资源,如变量、数组、结构体2.共享资源(SharedResource):两个或两个以上任务使用的资源,为防止破坏资源,任务在操作共享资源吋是独占状态。3.任务(Task):即线程,简单的穆序的执行过程。任务设计时将问题尽可能分成多个任务,每个任务独立完成某项功能,同时赋予优先级、CPU寄存器和堆栈空间。一般一•个任务设计为一•个无限循环。4.多任务运行(Muti-taskRunning):其实同一时刻只有一个任务运行。5.内核(Kernel):内核负责管理各个任务。包括:分配CPU时间;任务调度;任务I'可的通信。6.互斥(MutualExclusion):多任务通信最审用方法是共亨数据结构。保护共享资源常'用的方法:关中断;使用测试并置位指令(T&S指令);禁止任务切换;使用信号量;7.消息队列(MessageQueue):用于任务间传递消息。OSAL提供如下功能:任务注册、初始化和启动;任务间的同步、互斥;中断处理;储存器分配和管理;OSAL运行机理:OSAL就是一种支持多任务运行的系统资源分配机制。OSAL是一•种基于事件驱动的轮询式操作系统。、voidosal_start_system(void)是ZigBee协议栈的灵魂,不断的查看事件列表,如果有事件发生就调用相应的事件处理函数。SYS_EVENT_MSG是一-个事件集合,是山协议栈定义的事件,即系统强制事件(MandatoryEvents),它的定义为:#defineSYS_EVENT_MSG0x8000;它包含如下事件:AFINCOMINGMSGCMD收到一个新的无线数据ZDO_STATE_CHANGE网络状态发生变化事件,利用它判断终端加入网络后何时向协调器发送数据包。ZDO_CB_MSG指示所有注册的ZDO响应消息。AF_DATA_CONFIRM_CMD调用AF_DataRequest()发送数据时,需要确认信,鼠。OSAL消息队列消息与事件的区别:消息:事件和数据的封装事件:驱动任务去执行某些操作的条件OSAL维护一个消息队列,即消息链农OSAL添加新任务耍添加新任务要编写两个函数:1.新任务的初始化函数2.新任务的事件处理函数OSAL应用编程接口API(ApplicationProgrammingInterface)有8个消息管理任务同步时间管理中断管理任务管理内存管理电源管理非易失性闪存管理消息管理API:主要用于处理任务间消息交换,包括任务分配消息缓存、释放消息缓存、接收消息、发送消息osal_msg_allocate()分配缓存空间osal_msg_deallocate()释放消息缓存空间osal_msg_send()一个任务发送消息到消息队列osal_msg_receive()—个任务从消息队列接收属于6的消息任务同步API:用于任务间的同步,允许一个任务等待某个任务发生。osal_set_event()运行一个任务设置某一事件时间管理API:用于开启关闭定时器osal_start_timerEx()设置一个定时时间,时间到后,相应事件被设置。osal_stop_timerEx()停止Q启动的定时器中断管理API:用于控制中断的开启和关闭。很少用任务管理API:用于对OSAL进行初始化和启动osal_init_system()初始化OSAL,该函数是第一个被调用的OSAL函数osal_start_system()之前重点讲的函数内存管理API:用于在堆上分配缓存区,以下的两个API函数要成対使用,防止内存泄露。osal_mem_alloc()在堆上分配指定大小的还存区osal_mem_free()释放之前函数分配的缓存I乂电源管理API:主要用于电池供电的ZigBee网络吊点非易失性闪存管理API:Non-VolatileMemory,NV—般指Flash或EEPROM,每个NV分配唯一的ID号。osal_nv_item」nit()初始化NV条目,如果NV条目不存在,创建并初始化该条目,如果存在,每次调用osal_nv_read()和osal_nv_write()之前必须调用该函数。osal_nv_read()从NV条目中读収数据,可读収整条也可读収部分。osal_nv_write()写数据到NV条目ZigBee协议栈中中口应用详解使用串口的基本步骤:1.初始化串口,设置波特率、中断等。2向发送缓冲区发送数据或者从缓冲区读取数据。ZigBee协议栈中提供的与串口相关的函数:HalUARTOpen()HalUARTRead()HalUARTWrite()冋调函数是通过函数指针(函数地址)调用的函数,如果把函数指针作为参数传递给另一个函数,当通过指针调用它所指向的函数时,称为函数的冋调。冋调函数不是山该函数的实现方直接调...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

确认删除?