学习Zstack之1第一步:安装Zstack默认安装路径为:C:\TexasInstruments\ZStack-1.4.3。安装之后在C:\TexasInstruments\ZStack-1.4.3目录下有各PDF文档为:GettingStartedGuideCC2430.pdf,这个肯定是要看的。既然把它放到这么前面,说明它是入门中的入门文档。下面就简单介绍下这个文档:1、介绍了安装ZStack-CC2430-1.4.3.exe需要的硬件软件条件:需要电脑、操作系统为Windows2000或WindowsXP。至于更高或更低版本的本人没有尝试。2、讲了安装流程。这个有点多余了,这年月哪个有电脑的没有安装上百上千次的软件啊?但是需要强调的是安装路径----默认就好!3、接下来就是让我们看的第一个文档为:Start-Programs-TexasInstruments-ZStack-1.4.3-Z-StackUser’sGuide,第二步:Z-Stack用户指导1、介绍1.1、适用范围本文档适用于CC2430ZigBee开发板----CC2430ZDK。2、产品包描述(TI提供的CC2430ZDK工具包)2.1、安装包内容这个就是上面提到的的ZStack-CC2430-1.4.3.exe安装之后的所有内容了。说白了就是包含Zstack开发所需要的所有软件和文档资料等。2.2、开发板介绍两块SmartRF04EB评估版,每个都可以用于CC2430EM评估模块。如图1-1所示:Figure1:ChipconSmartRF04EBEvaluationBoardwithCC2430EM5块CC2430DB评估板,如图1-2所示:Figure2:ChipconCC2430DBDevelopmentBoard10个SOC_BB评估板,每个都可以用于CC2430EM或CC2431EM。如图1-3所示:Figure3:ChipconSOC_BBBatteryBoard2.3、电缆也就是包含开发包所需要的电缆,如RS232串口线,USB线等等附属配件。3、安装配置3.1、主机配置一台个人计算机----也就是电脑哈。我想玩嵌入式的应该都有,而现今不过时的配置就可以:下面是最低配置.NET1.1架构WindowsXPServicePack1(i如果是WindowsXP)1个串口(也就是RS232接口)s1USB接口个人认为要求已经相当低了,如果你的电脑没有这配置,个人强烈建议马上扔掉!不过如今笔记本电脑很少有串口的,所以建议使用台式电脑,而且装机的时候一定要把串口引出,否则就比较麻烦了!3.2、目标板需求其实也是开发环境需求---IAREW8051。目前需要的版本为7.30B及以上。要求还是比较高的,因为目前这个版本没有破解的。但是在上有30天评估版下载。这个版本使用一定要小心,因为如果30天之后仅仅是卸载IAR重新安装是没有用的,一般最笨的办法是重新安装操作系统。解决这个问题最好的办法就是买正版,呵呵,我想绝大多数像我这样的中国人都不会买的。除此之外最好的办法就是破解,但是目前这个破解极少,都是需要收费的,而且都是国外网站才有,所以我们就只好期望中国的高人抓紧破解并公开了!当然其他解决办法就相对来说很多了,比如安装后弄个还原点什么的;或者安装后我不停地使用(每天24小时),30天之后我觉得你也学会了,就不用IAR这个版本了,说不定就移植到低版本上去了;等等类似之法我觉得都可以的。本人采用的是本办法中相对比较聪明的,也是一位高人告诉我的:装个虚拟操作系统,在虚拟操作系统下时间可以随时更改,让它一直停留在某个时间,主要30天的试用就比较慢长了,只要你不要忘记改那时间。4、产品安装过程4.1、安装Z-Stack这个也就是安装ZStack-CC2430-1.4.3.exe的过程。4.2、IAR安装一般来说安装选择默认路径,但是自定义路径也不会出问题的。注意IAR版本7.30B及以上版本才可以运行1.4.3协议。4.3、设备IEEE地址每个CC2430DB,CC2430EM,和CC2431EM都已经排列了一个唯一的64位物理地址(IEEE地址),这个地址已经写到了CC2430内部FLASH里面,在CC2430DB,CC2430EM,和CC2431EM板的底部有这个地址标签。这个地址被写入到FLASH的0x1FFF8地址中,注意这个地址也可以更改的,通过些FLASH软件,一般0xFFFFFFFFFFFFFFFF地址被认为是无效地址。5、配置并试用Z-Stack5.1、配置Z-Stack这个详见5.3节。5.2、逻辑类型这里主要是介绍了ZIGBEE协议中的三种设备类型:ZigBee协调者(ZC):这个设备被配置为初始化并建立一个PAN网络ZigBee路由器(ZR):该设备被配置为加入一个存在的网络,可以加入一个协调求或路由器,然后允许其他设备加入它,在网络中路有数据信息。ZigBee终端节点(ZED):该设备被配置为加入一个存在的网络,可以加入一个协调求或路由器。5.3、建立样品应用设备:SampleApp基本上就是采用SampleApp应用中的Demo例子来演示整个流程,就是采用一个协调器和一个或多个路由器来形成一个ZigBee网络演示。在该例子中主要通过SmartRF04EB板上的某些跳线来完成设备类型的选型,当然这个方法在程序中是需要判断哪个按键被拉低或拉高,对于做个设计的来说应该是相当好理解的。申明:由于本人很穷,所以没钱买TI原装开发包,当然也就没有上面提到的硬件,本人采用的是某家公司(为了避免广告,这里就不说明了)的硬件系统。5.4、建立一个SampleLight协调器设备至于提到的硬件连接这里一律省略。无疑:首先要打开对应工程,如图1-4所示:图1-4在工作窗口中选择DemoEB,如图1-5所示:图1-5然后选择工程菜单(Project)下的全部编译(RebuildAll)选项,如图1-6所示:图1-6然后选择工程菜单(Project)下的调试(Debug)选项,如图1-7所示:图1-7下载完之后就可以退出调试状态,通过选中调试菜单下的停止调试选项,如图1-8所示:图1-8按照此种方法下载至少两个CC2430EM模块,就可以进行Demo演示了。6、Z-Stack示范至于详细的示范流程,这里先不说了,因为本人采用的硬件与原装有点差异,即使按照这个方法下载仍然不能演示,因为我这个不能用跳线来选择设备类型。所以我必须进入程序把跳线判断程序进行简单必要的修改才能演示。该文档介绍的演示结果及现象都是基于CHIPCON原厂评估板。7.PanID和通道(Channel)选择ZigBee协议规范规定,一个14位的个域网标志符(PANID)来标识唯一的一个网络。Z-Stack可以用两种方式由用户自己选择其PANID,当ZDAPP_CONFIG_PAN_ID值设置不为0xFFFF时,那么设备建立或加入网络的PANID由ZDAPP_CONFIG_PAN_ID指定;如果设置ZDAPP_CONFIG_PAN_ID为0xFFFF;那么设备就将建立或加入它发现网络中的“最好”的网络。关于这里提到的“最好”的网络,我觉得可能是有些参数评估,只不过这里没有详细的介绍,在后续文档中应该有介绍的。在2.4G频段上,IEEE802.15.4/ZIGBEE规范规定了16各频道。用户可以通过选择DEFAULT_CHANLIST不同的值可以选择不同的频道,其频道如图1-9所示。改协议默认频道为0xB及0x00000800。图1-9DEFAULT_CHANLIST和ZDAPP_CONFIG_PAN_ID都作为IARIDE中的编译选项可以进行设置,在应用文件中的…\Projects\Tools\CC2430DB目录下的f8wConfig.cfg文件中有相应设置,如图1-10所示。图1-10学习Zstack之2上节基本上初步认识了Zstack的一些情况,今天继续我的学习,打开Sample例子看看,究竟ZIGBEE是怎么回事。毫无疑问:如果是第一次打开这个例子工程,肯定很迷糊,因为此时我迷糊了。对图2-1我简直是相当迷糊。图2-1这么多文件夹,打开之后又有那么多文件,从何看起?不要着急,特别是有些人拿到之后,啥都不知道的人第一个问题就是:我要实现XXX,在哪修改或者在哪添加我的函数呢?凡是我遇到这样的客户,我就可以肯定他技术部咋的。就连我这个外行都知道,不把这些弄明白,就是实现XXX只需要修改一个字母,那也不知道在哪改啊?所以我不急,但是我也理解很多客户,因为有时候项目催的比较急,毕竟老板都是外行嘛!两条路:1就是先看主函数,2就是看看TI提供例子说明文档没有。我这里先看看主函数再说哈!因为我就知道从主函数看起.没办法大概每个文件夹找啊,主函数的特征还是比较明明显的,见图2-2所示:图2-2下面把主函数复制过来简单看下:ZSEGintmain(void){//Turnoffinterrupts------------关闭中断osal_int_disable(INTS_ALL);//InitializeHAL-----------初始化HAL,关于HAL是什么我想后面会有介绍的。HAL_BOARD_INIT();//Makesuresupplyvoltageishighenoughtorun----电压检测,最好是能保证芯片能正常工作的电压zmain_vdd_check();//Initializestackmemory-------------初始化stack存储区zmain_ram_init();//InitializeboardI/O------------初始化板载IOInitBoard(OB_COLD);//InitialzeHALdrivers-------------初始化HAL驱动HalDriverInit();//InitializeNVSystem--------------初始化NV系统,NV是什么后面我想也会有介绍的osal_nv_init(NULL);//Determinetheextendedaddress------------确定扩展地址(64位IEEE/物理地址)zmain_ext_addr();//InitializebasicNVitems----------------初始化基本NV条目zgInit();//InitializetheMAC----------------初始化MACZMacInit();#ifndefNONWK//SincetheAFisn'tatask,callit'sinitializationroutineafInit();#endif//Initializetheoperatingsystem----------初始化操作系统,看样子这里面还有OS,麻烦了……..!osal_init_system();//Allowinterrupts-------------允许中断osal_int_enable(INTS_ALL);//Finalboardinitialization------------------最后的版在初始化InitBoard(OB_READY);//Displayinformationaboutthisdevice---------------显示设备信息zmain_dev_info();/*DisplaythedeviceinfoontheLCD*/------------液晶支持显示#ifdefLCD_SUPPORTEDzmain_lcd_init();#endifosal_start_system();//NoReturnfromhere-------------------这里没有返回,大概是进入OS了。}//main()可以看到基本上都是初始化函数,因为函数名称都基本上带了init字样的,呵呵,个人觉得TI的变成习惯比我好,一看名称就知道大概功能了。