本文说明如何在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 | cd ~/work/project/Copper4Cr |
配置
- 打开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
下载
1 | git clone https://github.com/zephyrproject-rtos/net-tools ~/work/build |
编译
1 | cd ~/work/build/net-tools |
运行
编译完后,分别开两个Terminal,然后进入net-tools执行
1.Create helper socket1
./loop-socat.sh
2.Start TAP device routing daemon1
sudo ./loop-slip-tap.sh
这样会建立一个tap0网卡,之后qemu可以通过tap0网卡和Ubuntu互通1
2
3
4
5
6
7
8
9tap0: 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 | cd coap_server/ |
注意:
- 在执行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