zephyr下coap调试环境搭建

Creative Commons
本作品采用知识共享署名

本文说明如何在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

下载

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

安装

1
2
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

下载

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

编译

1
2
cd ~/work/build/net-tools
make

运行

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

1
./loop-socat.sh

2.Start TAP device routing daemon

1
sudo ./loop-slip-tap.sh

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

1
2
3
4
5
6
7
8
9
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的代码

编译运行

1
2
3
4
5
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