zephyr下coap调试环境搭建

本文说明如何在zephyr下面搭建coap server调试环境。该调试环境通过修改zephyr的coap_server sample code为IPV4访问,使用chrome的copper插件进行coap方法操作访问qemu上运行的zephyr的coap server,并使用wireshark抓包分析。

简介 链接到标题

本文主要介绍以下几部份内容:

  • 安装chrome copper插件
  • 安装qemu net-tool
  • 修改coap server为IPV4
  • copper访问coap server并用wireshark抓包

copper插件 链接到标题

chrome使用的copper插件是Copper4Cr

下载 链接到标题

git clone https://github.com/mkovatsc/Copper4Cr.git ~/work/project/Copper4Cr

安装 链接到标题

cd ~/work/project/Copper4Cr
./install.sh

配置 链接到标题

  1. 打开chrome浏览器更多工具->扩展程序
  2. 将页面右上角的开发者模式开启
  3. 点击加载已解压缩的扩展程序选择~/work/project/Copper4Cr/app
  4. 点击加载已解压缩的扩展程序选择~/work/project/Copper4Cr/extension
  5. 点击Copper (Cu4Cr) Application的详细信息,复制ID,例如“dopnegibpdlhbcaoclcmmefoeenaehmb”
  6. 修改~/work/project/Copper4Cr/extension/endpoint/ClientPortChrome.js文件内的appId为上面复制的ID值

net-tool 链接到标题

下载 链接到标题

git clone https://github.com/zephyrproject-rtos/net-tools ~/work/build

编译 链接到标题

cd ~/work/build/net-tools
make

运行 链接到标题

编译完后,分别开两个Terminal,然后进入net-tools执行 1.Create helper socket

./loop-socat.sh

2.Start TAP device routing daemon

sudo ./loop-slip-tap.sh

这样会建立一个tap0网卡,之后qemu可以通过tap0网卡和Ubuntu互通

tap0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
inet 192.0.2.2  netmask 255.255.255.0  broadcast 0.0.0.0
inet6 2001:db8::2  prefixlen 64  scopeid 0x0<global>
inet6 fe80::780f:8ff:fee9:2904  prefixlen 64  scopeid 0x20<link>
ether 7a:0f:08:e9:29:04  txqueuelen 1000  (以太网)
RX packets 130  bytes 10337 (10.3 KB)
RX errors 0  dropped 0  overruns 0  frame 0
TX packets 575  bytes 92701 (92.7 KB)
TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Coap server 链接到标题

修改为IPV4 链接到标题

代码来源于zephyr的coap sample code https://github.com/zephyrproject-rtos/zephyr/tree/master/samples/net/coap_server 修改为IPV4的代码参见 https://gitee.com/lgl88911/zephyr_app/tree/master/coap_server 主要修改了下面两个地方:

  • coap_server/prj.conf : 修改为IPV4的配置
  • coap_server/src/coap-server.c : 移除ipv6的代码,替换为ipv4的代码

编译运行 链接到标题

cd coap_server/
mkdir build
cd build
cmake -GNinja -DBOARD=qemu_cortex_m3 ..
ninja run

注意:

  • 在执行ninja run前必须运行前面的net-tools的两个sh将tap0建立起来,否则不能成功运行附带coap_server的qemu
  • qemu启动后设置的IP地址为192.0.2.1,因此coap_server的IP地址就是192.0.2.1

coap server访问和分析环境 链接到标题

copper插件使用 链接到标题

安装coapper后,点击chrome上copper图标,会弹出coap URL的输入界面,如下图: copper 在coap URL中输入coap://192.0.2.1,连接后会List出资源,如下图: copperdis

wireshark抓包 链接到标题

启动wireshak,选择tap0网卡开始抓包 wireset应用显示过滤器中输入coap进行过滤,然后通过copper进行GET,PUT等操作,就能在wireshark中抓到coap数据进行分析 wirecap

参考 链接到标题

https://github.com/mkovatsc/Copper4Cr
http://docs.zephyrproject.org/subsystems/networking/qemu_setup.html#networking-with-qemu
http://docs.zephyrproject.org/samples/net/coap_server/README.html