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
配置 链接到标题
- 打开chrome浏览器更多工具->扩展程序
- 将页面右上角的开发者模式开启
- 点击加载已解压缩的扩展程序选择~/work/project/Copper4Cr/app
- 点击加载已解压缩的扩展程序选择~/work/project/Copper4Cr/extension
- 点击Copper (Cu4Cr) Application的详细信息,复制ID,例如“dopnegibpdlhbcaoclcmmefoeenaehmb”
- 修改~/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的输入界面,如下图:
在coap URL中输入coap://192.0.2.1,连接后会List出资源,如下图:

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

参考 链接到标题
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