1、初识Ztack

一、Zigbee协议
下图展示了ZigBee无线网络协议层的架构图。ZigBee的协议分为两部分,IEEE 802.15.4定义了PHY(物理层)和MAC(介质访问层)技术规范;ZigBee联盟定义了NWK(网络层)、APS(应用程序支持子层)、APL(应用层)技术规范。ZigBee协议栈就是将各个层定义的协议都集合在一直,以函数的形式实现,并给用户提供API(应用层),用户可以直接调用。
在这里插入图片描述
二、Ztack协议
ZigBee协议主要有msstatePAN协议栈、freakz协议栈和TinyOS协议。不过今天介绍Z-Stack协议,它是德州仪器推出业界领先的ZigBee协议栈,最新版本符合ZigBee 2007 Pro规范,它支持多种平台,Z-Stack包含了网状网络拓扑的几近于全功能的协议栈,在竞争激烈的 ZigBee领域占有重要的地位。
1、从官网下载安装后,在安装目录生成如下图所示的文件及文件夹
在这里插入图片描述
(1)Getting Started Guide CC2530文件,是安装卸载协议栈的说明文件;

(2)Components是Z-Stack协议栈的各个功能部件的实现;

(3) Documents是TI的开发文档的,里面很多都是讲述协议栈的API;

(4) Projects是TI协议栈的例子程序,一个个例子程序都是以一个个project的形式给我们的,学好这些例子程序里面的一两个,基本你能做事情了。

(5)Tools,这个文件夹是放TI的例子程序的一些上位机之类的程序,作为工具使用。

2、Components文件夹目录

如上所述,该目录存放了Z-Stack协议栈的主要代码,如下图所述,其中:
在这里插入图片描述
(1)hal文件夹为硬件平台的抽象层

(2)mac文件夹包含了802.15.4物理协议的实现说需要代码文件的头文件,由于TI公司处于某种考虑,这部分并没有给出具体的源代码,而是以库文件的形式存在\Projects\zstack\Libraries文件夹给出

(3)mt 文件夹包含了为系统添加在电脑上有Z-tools调试的功能所需要的源文件

(4)osal包含了操作系统抽象层所需要的文件

(5)service文件夹保护了Z-Stack提供的两种服务:寻址服务和数据服务所需要的文件

(6)stack文件夹是components文件夹最核心的部分,是ZigBee协议栈具体实现部分,在在其下有分为了af(应用框架),nwk(网络层),sapi(简单应用接口)、sec(安全)、sys(系统头文件),zcl(ZigBee簇库),zdo(ZigBee设备对象)等7个文件夹

(7)zmac文件夹包含了Z-Stack MAC 导出层文件。

3、样例文件

(1)打开项目样例文件(Projects\zstack\Samples\SampleApp\CC2530DB)
在这里插入图片描述
(2)工程目录结构
在这里插入图片描述
三、主函数分析

 1 int main( void )
 2 {
 3   // Turn off interrupts
 4   osal_int_disable( INTS_ALL );
 5 
 6   // Initialization for board related stuff such as LEDs
 7   HAL_BOARD_INIT();
 8 
 9   // Make sure supply voltage is high enough to run
10   zmain_vdd_check();
11 
12   // Initialize board I/O
13   InitBoard( OB_COLD );
14 
15   // Initialze HAL drivers
16   HalDriverInit();
17 
18   // Initialize NV System
19   osal_nv_init( NULL );
20 
21   // Initialize the MAC
22   ZMacInit();
23 
24   // Determine the extended address
25   zmain_ext_addr();
26 
27 #if defined ZCL_KEY_ESTABLISH
28   // Initialize the Certicom certificate information.
29   zmain_cert_init();
30 #endif
31 
32   // Initialize basic NV items
33   zgInit();
34 
35 #ifndef NONWK
36   // Since the AF isn't a task, call it's initialization routine
37   afInit();
38 #endif
39 
40   // Initialize the operating system
41   **osal_init_system();**
42 
43   // Allow interrupts
44   osal_int_enable( INTS_ALL );
45 
46   // Final board initialization
47   InitBoard( OB_READY );
48 
49   // Display information about this device
50   zmain_dev_info();
51 
52   /* Display the device info on the LCD */
53 #ifdef LCD_SUPPORTED
54   zmain_lcd_init();
55 #endif
56 
57 #ifdef WDT_IN_PM1
58   /* If WDT is used, this is a good place to enable it. */
59   WatchDogEnable( WDTIMX );
60 #endif
61 
62   **osal_start_system();** // No Return from here
63 
64   return 0;  // Shouldn't get here.
65 } // main()

如上的代码,可总结为如下所示的程序框图,其中最关键的是初始化OSALosal_init_system()和启动系统 osal_start_system(),下一节我们将逐一分析。
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值