在Contiki OS中使用Rime和6LoWPAN

时间:2014-02-20 15:42:15

标签: ipv6 contiki

我正在尝试使用Contiki OS提供的6LoWPAN实现。

我的问题是Rime正在工作而没有设置标志UIP_CONF_IPV6。一旦我设置标志以激活IPv6支持,编译器就会报告位于rime_sniffer_add()以及{{1}中的函数rime_sniffer_remove()rime.c的“多重定义” }}。

有人设法解决了这个问题还是一个有效的例子?

2 个答案:

答案 0 :(得分:1)

我想补充一点,虽然这是一个老问题,但它可以使用更明确的解释。

你不能在Contiki中同时使用Rime和6LoWPAN,因为网络堆栈支持单个网络驱动程序(如果你查看netstack.h)。

默认驱动程序是rime。如果定义UIP_CONF_IPV6标志,它将定义WITH_UIP6标志,该标志又将网络驱动程序设置为sicslowpan。

收到消息后,MAC驱动程序(在本例中为llsec)直接调用网络驱动程序定义的input()函数。没有分组报头的解复用,因此,再次,它是rime或sicslowpan,如在编译时定义的

现在 - 您可以使用rime发送消息。据我所知,从代码中可以看出,这些嗅探器用于辅助功能,例如为雾霾或6lowpan启用更详细的powertrace。这不是必需的,所以你可以注释掉嗅探器。但是,再说一遍,即使你可以同时编译rime和6lowpan,并且可以发送消息,你也不会收到任何东西(经过试验和测试......)。

如果你想用6lowpan进行广播,请使用多播地址进行广播,使用icmp或udp。

希望这会有所帮助。 Misel

答案 1 :(得分:0)

如果有人对使用Contiki的6LoWPAN感兴趣:

正确的方法是使用基本上为IPv6和6LoWPAN设计的RPL 请参阅Contiki的udp_rpl示例以设置服务器/客户端通信。适当的标志将启用6LoWPAN标头压缩。