为什么我的 Cooja 模拟器的 RPL 边界路由器(天空节点)不通过串行通信将数据包传输到 HTTP 服务器,而 Cooja 节点却可以?

问题描述 投票:0回答:2

我刚开始使用 Contiki-NG 操作系统和 Cooja 模拟器。我正在关注此链接中的教程,我遵循的步骤是:

  1. 我从 Contiki-NG 的示例文件创建了一个 RPL 边界路由器节点(天空节点)。
  2. 我在 RPL 边界路由器节点周围创建了一些 hello-world 节点(天空节点)。
  3. 我使用 Cooja 模拟器的 GUI 创建一个到 RPL 边界路由器的串行套接字。 GUI 显示客户端已连接。
  4. 在存放RPL边界路由器源代码的目录中
    examples/rpl-border-router
    ,我打开一个终端并输入
$ make TARGET=zoul connect-router-cooja

此命令的输出不会打印 Web 服务器已启动。

  1. 当模拟运行时,此命令为我提供服务器的 IPv6 地址。据我了解,这是RPL边界路由器的IPv6地址。当我 ping 该路由器时,我会收到来自服务器的连续响应。

  2. 但是,当我 ping hello-world 节点(子节点)时,我没有从 ping 中得到任何响应。

  3. 当我输入http://[router-address-IPv6]时,页面没有响应。

  4. 当我这样做时

    $ wget http://[router-address-IPv6]
    它尝试了 20 次但失败了。它给出错误“失败:协议错误。”

  5. 据我了解,当我在终端中输入时

$ ls /dev/tty*

我应该能够看到多个串行端口,如果我的模拟正在运行并且边界路由器已连接,其中

/dev/ttyUSB0
应该是其中之一,但我没有看到一个。

  1. 在 Cooja 模拟器上,如果我转到
    Tools > Radio messages
    ,我会看到 hello-world 数据包正在传输到边界路由器。
  2. 当我转到
    tools/serial-io
    并输入
    $ ./tunslip6
    时,我得到:
    ipaddress: Success

我希望在浏览器中输入

http://\[router-address-IPv6\]
时看到一个网页。我还希望在
/dev/ttyUSB0
 下看到 
$ ls /dev/tty*

更新 1:当我重复相同的步骤但这次使用 Cooja 微粒而不是天空微粒时,我能够打开网站并查看邻居和路由链接。然而

$ make TARGET=zoul connect-router-cooja
命令仍然没有提及任何“Web 服务器已启动”消息。
$ ls /dev/tty*
仍然没有按预期显示任何
/dev/ttyUSB0

它只适用于 Cooja motes 的原因是什么?

iot cooja contiki-ng
2个回答
0
投票

如果你在COOJA中运行模拟的Tmote Sky,/dev/tty.*将永远不会出现。我猜想完整的 Contiki-NG 和网络服务器适合 Tmote Sky 是有边界的 - 这可能是问题的一部分。但我不完全确定。


0
投票

这不是答案,但我正在尝试类似的东西:@Colosen 你能建议吗?

我被困在4号了。 我正在使用 cooja motes(首先添加边界路由器,然后添加 hello-world mote)

~/contiki-ng/examples/rpl-border-router$ make TARGET=zoul connect-router-cooja
../../arch/cpu/arm/cortex-m/Makefile.cortex-m:6: ../../arch/cpu/arm/CMSIS/CMSIS does not exist or is empty.
../../arch/cpu/arm/cortex-m/Makefile.cortex-m:7: Did you run 'git submodule update --init' ?
../../arch/cpu/arm/cortex-m/Makefile.cortex-m:8: *** "".  Stop.

所以我愿意

git submodule update --init

~/contiki-ng/examples/rpl-border-router$ git submodule update --init
Submodule 'arch/cpu/arm/CMSIS' (https://github.com/ARM-software/CMSIS_5.git) registered for path '../../arch/cpu/arm/CMSIS'
...
Submodule path '../../tools/sensniff': checked out '70029fc5b21485cfd4afb8037c49661212d0935a'

然后我再次尝试

make
,但现在我收到此错误:

:~/contiki-ng/examples/rpl-border-router$ make TARGET=zoul connect-router-cooja
../../Makefile.include:157: *** Target "zoul" compiler "arm-none-eabi-gcc" cannot be found.  Stop.
~/contiki-ng/examples/rpl-border-router$ l
Makefile  README.md  border-router.c  build/  project-conf.h  webserver/

这是我的

ls /dev/tty*
输出:

~/contiki-ng/examples/rpl-border-router$ ls /dev/tty*
/dev/tty    /dev/tty12  /dev/tty17  /dev/tty21  /dev/tty26  /dev/tty30  /dev/tty35  /dev/tty4   /dev/tty44  /dev/tty49  /dev/tty53  /dev/tty58  /dev/tty62  /dev/ttyS0
/dev/tty0   /dev/tty13  /dev/tty18  /dev/tty22  /dev/tty27  /dev/tty31  /dev/tty36  /dev/tty40  /dev/tty45  /dev/tty5   /dev/tty54  /dev/tty59  /dev/tty63  /dev/ttyS1
/dev/tty1   /dev/tty14  /dev/tty19  /dev/tty23  /dev/tty28  /dev/tty32  /dev/tty37  /dev/tty41  /dev/tty46  /dev/tty50  /dev/tty55  /dev/tty6   /dev/tty7   /dev/ttyS2
/dev/tty10  /dev/tty15  /dev/tty2   /dev/tty24  /dev/tty29  /dev/tty33  /dev/tty38  /dev/tty42  /dev/tty47  /dev/tty51  /dev/tty56  /dev/tty60  /dev/tty8   /dev/ttyS3
/dev/tty11  /dev/tty16  /dev/tty20  /dev/tty25  /dev/tty3   /dev/tty34  /dev/tty39  /dev/tty43  /dev/tty48  /dev/tty52  /dev/tty57  /dev/tty61  /dev/tty9
© www.soinside.com 2019 - 2024. All rights reserved.