1. 描述

在学习 nRF52832 BLE 芯片的过程中,使用抓包器进行抓包分析能够有效的提高开发效率,同时能够帮助我们快速定位问题。本文使用 Nordic 的 nRF51422 Sniffer 工具,详细介绍该工具配合Wireshark软件的抓包使用过程。

2. 硬件要求

  • nRF51 Dongle (PCA10031)
  • nRF52 Development Kit (PCA10040) 和 USB 线

ingrees抓包 sniffer抓包flags_ingrees抓包

3. 软件要求

在使用该nRF Sniffer工具前,需要先完成以下软件的安装。

  • nRF Sniffer software v2.x 或者更高的版本,可以在Nordic Sniffer产品里下载 Sniffer Download,这里我们选择下载nRF-Sniffer-v2,该文件里面包含了Segger-jlink工具、Dongle固件包、Sniffer的Python源码程序。

ingrees抓包 sniffer抓包flags_ingrees抓包_02

  • Wireshark v2.4.2 或者更高的版本 Download
  • 操作系统 运行Wireshark的环境,Windows 7 或者更高版本。
  • SEGGER J-Link v6.16c(用于下载 Sniffer 工具固件),上面的Sniffer software v2.x里面已经提供了。
  • Python2.7.x Download,安装Python运行环境,运行上面提及的Sniffer软件。(安装时勾选添加环境变量)
  • pyserial v3.4 或者更高版本Download,Sniffer的Python程序中使用到了该模块,安装教程可参照 pyserial安装

4. 安装 nRF Sniffer

  1. 打开 Wireshark 软件,Go to Help > About Wireshark


ingrees抓包 sniffer抓包flags_Nordic52832_03

  1. 点击 Folders,双击 Extcap path

ingrees抓包 sniffer抓包flags_固件_04

  1. 将 nrf_sniffer_(version)_(hash).zip 文件解压到这个目录下,并将extcap目录的内容复制到该目录下,如下图所示。

ingrees抓包 sniffer抓包flags_Wireshark_05

5. 烧录Sniffer Dongle固件

使用 jlink.exe 进行固件烧录,该程序在SEGGER J-Link v6.16c的安装目录C:\Program Files (x86)\SEGGER\JLink_V616c下。

将Sniffer Dongle插到PC上,打开 jlink.exe 命令行窗口,烧录步骤如下:

a. 输入命令 erase

b. 根据硬件型号,选择Dongle类型,这里输入 nRF514422_XXAA (可直接查看Dongle芯片型号)

c. 选择目标接口,这里选择 SWD 下载,输入 s

d. 选择下载速度,输入1000

e. 输入 loadfile + sniffer固件目录

f. 输入 r 重启 Dongle

g. 输入 g 运行 Dongle 固件

ingrees抓包 sniffer抓包flags_nRF Sniffer_06

6. 使用Wireshark抓包

完成以上操作后,就可以使用Wireshark软件进行抓包了,Wireshark的详细操作,可以查阅相关的技术文档。

ingrees抓包 sniffer抓包flags_固件_07

Note:若发现打开Wireshark软件后,没有发现 Sniffer 的端口号,可能的原因是没有安装 pyserial 模块。Nordic对Sniffer的使用过程有一个详细的文档说明,可参阅用户指导说明。

ingrees抓包 sniffer抓包flags_Nordic52832_08