基于cc2530的无线传感网络系统研究毕业论文(编辑修改稿)内容摘要:

heck_timer(). do { if (tasksEvents[idx]) // Task is highest priority that is ready. { break。 } } while (++idx tasksCnt)。 if (idx tasksCnt) { uint16 events。 halIntState_t intState。 HAL_ENTER_CRITICAL_SECTION(intState)。 events = tasksEvents[idx]。 tasksEvents[idx] = 0。 // Clear the Events for this task. HAL_EXIT_CRITICAL_SECTION(intState)。 events = (tasksArr[idx])( idx, events )。 HAL_ENTER_CRITICAL_SECTION(intState)。 tasksEvents[idx] |= events。 // Add back unprocessed events to the current task. HAL_EXIT_CRITICAL_SECTION(intState)。 } 操作系统专门为所有事件创建了一个数组 tasksEvents[],每一个 项目 对应存放着每一个任务的所有事件。 在这个函数中,先通过一个循环来遍历数组 tasksEvents[],找到第一个具有事件的任务(即具有待处理事件的优先级最高的任务,因为序 列号越低,优先级越高),然后跳出循环,此时就得到了需要处理事件任务的序号 idx,然后执行 events=tasksEvents[idx]语句,把具有高优先级的高优先级的任务的事件取出,接着调用函数 (tasksArr[idx])(idx,events) 来执行具体的处理函数。 tasksArr[]是一个函数指针数组,根据不同的时间任务序号( idx)来执行不同的函数。 图 系统初始化流程图 osal_start_system():执行操作系统 开始 osal_int_disable(INTS_ALL):关闭所有终端 HAL_BOARD_INIT():初始化系统时钟 zmain_ram_init:初始化堆栈 zmain_add_check():检测芯片电压是否正常 InitBoard(OB_COLD):初始化 LED,配置系统定时器 HalDriverInit:初始化芯片各个硬件模块 zmain_ext_addr():形成节点 MAC 地址 osal_ext_init():初始化 FLASH 存储 zgInit():初始化一些非易失变量 ZMacInit():初始化 MAC 层 osal_init_system():初始化操作系统 afInit():初始化应用框架层 osal_int_enable(INTS_ALL):开全部中断 InitBoard(OB_READY):初始化按键 zmain_dev_info():在液晶上显示设备信息 SampleApp 中函数数组 tasksArr[]代码如下 : const pTaskEventHandlerFn tasksArr[]= { macEventLoop, // MAC 层任务处理函数 nwk_event_loop, //网络层任务处理函数 Hal_ProcessEvent, //板硬件抽象层任务处理函数 if defined(MT_TASK) MT_ProcessEvent, //调用任务处理函数 endif APS_event_loop, //应用层任务处理函数,用户不需要修改 ZDApp_event_loop, //ZigBee 设备应用层任务处理函数,用户可以根据需要更改 SampleApp_ProcessEvent //SerialApp 的用户任务处理函数 } 用户一般只需要修改协议栈的三个文件就可以完成一个项目,一个存放具体任务事件处理函数( SampleApp_ProcessEvent)的主文件,一个就是主文件的头文件,最后一个是 操作系统的接口文件( Osal开头),是用来存放任务处理函数数组 tasksArr[]的文件。 ZStack 开发的一些基本概念 1)设备类型:在 ZigBee 网络中有三种逻辑设备类型:协调器( coordinator) ,路由器( router),终端设备( enddevece)。 2)信道: 868MHz 的射频频段分的一个独立信道, 915MHz 的射频频段分的 10 个独立信道, 的射频频段被分为 16 个独立的信道。 设备通过扫描信道选择噪声最小的信道作为所见网络的信道。 3) PANID: PANID 是指网络编号,用于划分不同的 ZigBee 网络。 设备的 PANID 值与 ZDAPP_CONFIG_PAN_ID 值的设置有关。 当网络ZDAPP_CONFIG_PAN_ID 设置为 0xFFFF,则协调器将在 0x0000~0xfffff之间随机产生一个的 PANID,路由器和终端节点将会在自己的默认信道上随机选择一个网络加入,网络协调器的 PANID即为自己的 PANID。 如果协调器的 ZDAPP_CONFIG_PAN_ID 设置不是 0xFFFF 值,则协调器可以根据自己的网络长地址( IEEE 地址)或 ZDAPP_CONFIG_PAN_ID值随机产生 PANID;而路由器和终端节点的 ZDAPP_CONFIG_PAN_ID 值设置不是 0xFFFF 值,它们会以 ZDAPP_CONFIG_PAN_ID 值作为 PANID。 如果在默认的信道上已经有该 PANID 值相同的网络存在,则协调器会继续搜寻其他的 PANID,直到找到网络不冲突为止。 4)描述符: ZigBee 网络每一个设备都有一些描述符,来描述设备类型和应用方式。 描述符包含节点、简单和默认用户描述符等。 用户通过改变这些描述符可以定义自己的所要知道设备。 描述符的定义和创建配置项在文件 和 中。 描述符信息可以被网络中的其他设备获取。 5)绑定:绑定时一种两个或者多个应用层上建立的逻辑链路。 一个节点上可以建立多个绑定服务,绑定也可以由多个目标设备。 在最新的 ZStack 版本里,被称为资源绑定,网络中的每一个设备都必 须执行绑定机制。 绑定允许应用程序发送一个数据包并且、不需要知道目标地址。 APS 层从绑定表中确定目标地址,然后将数据向目标应用或者目标组发送。 绑定有三种方式:终端设备绑定、辅助绑定和解除绑定。 通常前两种使用较多。 终端设备绑定:通过协调器来实现,绑定的双方要同时向协调器发送绑定请求,通过协调器调用 ZDO_RegisterForZDOMsg()函数在应用层注册绑定请求,需绑定的设备调用绑定请求函数发送给协调器,协调器调用终端邦定处理函数处理绑定请求,然后协调器反馈信息给绑定设备。 绑定可以在终端与终端之间,也可以在路由器与路由器之间进行绑定服务。 辅助绑定:每一个设备和应用都可以通过信道向另一个设备发送ZDO 消息,帮助其它节点建立绑定。 首先,协调器在 ZDO 层注册辅助绑定消息事件,待绑定节点在 ZDO 层注册绑定请求,协调器调 用绑定请求处理函数,等待绑定节点接收到请求后,处理绑定请求,建立绑定表,并调用发送函数发送响应消息给协调器,最后协调器收到反馈信息调用发送状态函数处理绑定反馈信息。 解除绑定:只需要发送一个请求给协调器移除绑定,协调器通过解除绑定信息来响应移除请求。 6)配置文件:配置文件( Profile)是指应用程序框架。 它是由ZigBee 开发商提供,用户通过它进行基础 ZigBee 技术开发的。 配置文件定义不同设备对消息帧的处理,不同的设备之间可以通过发送命 令、数据请求来实现通信。 7)端点:端点( Endpoint)是一种网络通信中的数据通道,每一个设备都被看做一个节点,每个节点都有物理地址和网络地址,长地址和短地址可供其他设备发送数据的目的地址,每个设备都有 241个端点,而 0 端点保。 如果选择 “ 绑定 ” 方式来的通信,那么需要在网络层注册多个端点进行数据发送、接收和绑定表的建立。 且不需要绑定的两个节点的地址信息。 8 )簇 ZigBee 技术有两种通信方式:间接通信和直接通信。 间接通信:指各个节点通过端点绑定建立连接,这种方式不需要知道目的地址信息,这其中包括 IEEE 地址或网络短地址, ZStack底层会自动从栈的绑定表中查找目地设备的具体网络地址并将其发送出去。 直接通信:不需要绑定关系,它使用网络短地址作为参数调用适当地 API 来实现通信。 直接通信的关键就是网络地址的获得。 它可以通过目地节点的 IEEE 地址来查询短地址的方法。 通常, ZigBee 节点的 IEEE 地址是固定的,被写在节点的 EEPROM 中,这个作为 ZigBee节点的参数一般会被标示在节点上。 所以,有了 IEEE 地址以后,可以通过部分网络 API 的调用,得到相应的网络短地址。 而簇就是在建立 Profile 时所需要的一个概念,它是一簇 网络变量的集合,在同一个 Profile 中, ClusterID 是唯一的。 在间接寻址方式中,建立绑定表时用户需要弄清楚 Cluster 的含义和属性。 对于可以建立绑定关系的两个节点,它们的 Cluster 的属性必须一个是 “ 输入 ” ,一个是 “ 输出 ” ,而且 ClusteID 值相等,只有这样,它们才能建立绑定,在 直接寻址方式中,常用 ClusterID 作为参数,数据或命令发送到与之相应地址的 Cluster 上。 通信方式 Zigbee 的通讯方式主要有三种点播、组播、广播。 点播,思义点对点通。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。