基于ARM的ZigBee网关设计:Linux驱动与协议栈实现

需积分: 39 17 下载量 108 浏览量 更新于2024-08-10 收藏 3.4MB PDF 举报
"基于ARM的嵌入式无线ZigBee网关的设计与实现 - 黄河硕士论文" 本文详细探讨了在内核版本为2.6.11的嵌入式系统中,如何实现定时功能,特别是针对ZigBee通信技术的应用。由于该系统不支持JESD204B接口,因此不能依赖硬件实现定时,而是通过软件方法来达成。文章提到了一种利用库函数gettimeofday实现定时的方法,这个函数需要包含<sys/time.h>头文件。 核心代码示例展示了如何使用gettimeofday获取时间戳,并通过自定义的TimeGetDiff函数计算时间差。TimeGetDiff函数接收两个timeval结构体参数,分别表示起始时间和结束时间,通过比较这两个时间戳的微秒差值来判断是否超时。Timeval结构体包含两个字段:tv_sec(秒)和tv_usec(微秒)。在示例中,SYMBOLS_TO_TIME是一个宏,用于将符号数量转换为微秒,1个symbol等于16微秒。程序通过判断处理时间是否超过SYMBOLS_TO_TIME(12)设定的阈值来决定是否跳出循环。 论文的背景部分提到了ZigBee作为一种新兴的无线通信技术,因其短距离、低功耗、低成本等特性,在家庭自动化、楼宇自动化和工业监控等领域有广泛应用。随着ZigBee技术在工业现场的推广,需要设计能够连接ZigBee设备与传统以太网的无线ZigBee网关。作者选择基于ARM920T内核的Samsung S3C2410作为网关的主处理器,以及符合802.15.4标准的CC2420作为无线收发器,并采用开源的嵌入式Linux操作系统进行开发。 软件部分,主要由无线收发器驱动程序和网关程序两部分组成,其中网关程序包括Zigbee协议栈模块和网关通信模块。开发语言为标准C,驱动和测试部分使用Bash脚本。论文详细阐述了Linux驱动程序设计的关键点,ZigBee协议栈的移植,以及网关通信程序的设计、编译、调试和测试流程。最终,成功实现了ZigBee设备数据和状态向上级数据服务器的转发。 此外,作者对未来的工作方向提出了改进思路和方法,包括可能的优化和扩展。关键词涉及到ZigBee协议栈、嵌入式Linux、ARM920T、SPI驱动等技术领域。这篇论文为理解ZigBee网关的实现提供了深入的见解,对于从事相关领域的开发者和研究人员具有较高的参考价值。