前面的6部实验为基本的驱动外设实验,是学习使用基础,实验设备只需要一个cc2538cb节点;从这一部开始实验开始需要两个cc2538cb节点,开始zigbee的无线通信;
此次例程为TinyOS的核心协议栈BLIP,现在的版本是BLIP2.0;大家可以去TinyOS的官网搜索BLIP查看介绍;
如何理解BLIP呢?他的存在意义是什么?我们清楚zigbee到6lowpan的升级,zigbee芯片厂商并没有在硬件部分做6lowpan的压缩解压,这些的完成是纯软件实现的,也就需要一个zigbee(IEEE802.15.4)到6lowpan的转换桥梁,BLIP最重要的功能就是如此;
例程目录tinyos-main-release_tinyos_2_1_2\apps\cc2538_Test\blip\TestLinkLocal
例程为TinyOS的官方固件的代码,以后大家使用会发现我的这些例程基本不修改官方的例程,方便大家的兼容学习;
Makefile文件:
COMPONENT=TestLinkLocalAppC
CFLAGS += -DUSE_TIMER_HANDLER
#CFLAGS += -DUSE_UART_HANDLER
CFLAGS += -DUSE_RF_HANDLER
CFLAGS += -DNOT_USE_PRINTFC_BUT_USE_PRINT
PFLAGS += -DIN6_PREFIX=\"fec0::\"
include $(MAKERULES)
CFLAGS += -DIN6_NO_GLOBAL -DLIB6LOWPAN_HC_VERSION=-1
CFLAGS += -DPRINTFUART_ENABLED
BLIP分为两种模式:短地址(16bit)和IEEE地址(8bytes/64bit)模式,默认采用短地址模式;注意如果后期的实验如边界路由,RPL,CoAP实验;通信都需要选择同一种模式;默认是短地址;大家在完成基本的通讯后可以修改Makefile,尝试IEEE地址模式;具体参考TinyOS官网BLIP文档;
TestLinkLocalAppC.nc文件:
/** Test the link-local communication in the blip stack
*/
configuration TestLinkLocalAppC {
} implementation {
components MainC, LedsC;
components TestLinkLocalC;
components IPStackC;
components new TimerMilliC();
components new UdpSocketC();
TestLinkLocalC.Boot -> MainC;
TestLinkLocalC.SplitControl -> IPStackC;
TestLinkLocalC.Sock -> UdpSocketC;
TestLinkLocalC.Timer -> TimerMilliC;
TestLinkLocalC.Leds -> LedsC;
components StaticIPAddressTosIdC; // Use TOS_NODE_ID in address
//components StaticIPAddressC; // Use LocalIeee154 in address
}