活动介绍

EFR32MG_Sniffer制作及使用说明1

preview
需积分: 0 0 下载量 159 浏览量 更新于2022-08-03 1 收藏 434KB PDF 举报
### EFR32MG_Sniffer 制作与使用详解 #### 一、Sniffer 制作 在本文档中,我们将重点介绍如何基于Silicon Labs的EFR32MG芯片制作一个ZigBee协议分析器(Sniffer)。此Sniffer可用于捕获ZigBee网络的数据包,帮助开发人员进行无线通信协议的调试与分析。 ##### 1.1 烧写 Firmware 文件 **A. 命令行方式** 使用Simplicity Commander软件可以通过命令行完成Firmware文件的烧写工作。具体步骤如下: 1. 打开DOS命令行窗口。 2. 使用以下命令擦除目标设备上的所有内容: ``` "D:\SiliconLabs\SimplicityStudio\v4\Simplicity Commander\commander" device masserase ``` 3. 使用以下命令将sniffer_efr32.hex文件烧写到目标设备上: ``` "D:\SiliconLabs\SimplicityStudio\v4\Simplicity Commander\commander" flash sniffer_efr32.hex ``` **B. 使用Simplicity Commander的Flash Program功能** 另一种方法是通过Simplicity Commander软件的图形界面来完成烧写任务: 1. 打开Simplicity Commander软件。 2. 选择“Tools”菜单下的“Flash Program”选项。 3. 在弹出的界面中,选择要烧写的hex文件(即sniffer_efr32.hex)。 4. 按照提示完成剩余的配置并开始烧写过程。 ##### 1.2 Sniffer Firmware制作 Sniffer的Firmware可以通过Silabs官方提供的Flex SDK来制作。具体步骤如下: 1. 访问Silabs社区提供的教程链接:https://www.silabs.com/community/wireless/zigbee-and-thread/knowledge-base.entry.html/2017/11/09/turning_any_efr32in-cbAD 2. 下载并安装Flex SDK。 3. 遵循文档中的指示,配置开发环境,并编译生成sniffer_efr32.hex文件。 #### 二、抓包 Sniffer制作完成后,可以使用它来捕获ZigBee网络中的数据包。主要步骤如下: 1. 打开Simplicity Studio中的Network Analyzer工具。 2. 连接已烧写好Sniffer Firmware的设备。 3. 开始抓取数据包。 #### 三、常用串口命令 在使用Sniffer的过程中,可能需要通过EVB板的串口发送控制命令来调整抓包行为。以下是一些常用的串口命令: 1. **更改抓包的通道**:使用`setChannel <Channel No>`命令来指定抓包时使用的通道。例如,若要抓取第11通道的数据包,则命令应为`setChannel 11`。 2. **停止抓包命令**:`rx 0`用于停止当前正在进行的抓包操作。 3. **开始抓包命令**:`rx 1`用于开始或恢复抓包操作。 #### 四、代码示例 为了方便使用,可以将上述初始化Sniffer的命令写入代码中,如app_main.c文件。下面是修改后的代码示例: ```c #include <stdio.h> #include <stdlib.h> // ... 其他代码 ... int main(void) { // Initialize autoack data RAIL_WriteAutoAckFifo(railHandle, ackData, ackDataLen); #if 1 char paraInfo0[][32] = {"rx", "0"}; char paraInfo1[][32] = {"config2p4GHz802154"}; char paraInfo2[][32] = {"enable802154", "rx", "100", "192", "864"}; char paraInfo3[][32] = {"setPromiscuousMode", "1"}; char paraInfo4[][32] = {"setChannel", "11"}; char paraInfo5[][32] = {"rx", "1"}; char *para0[2] = {paraInfo0[0], paraInfo0[1]}; char *para1[1] = {paraInfo1[0]}; char *para2[5] = {paraInfo2[0], paraInfo2[1], paraInfo2[2], paraInfo2[3], paraInfo2[4]}; char *para3[2] = {paraInfo3[0], paraInfo3[1]}; char *para4[2] = {paraInfo4[0], paraInfo4[1]}; char *para5[2] = {paraInfo5[0], paraInfo5[1]}; rx(2, para0); config2p4Ghz802154(1, para1); ieee802154Enable(5, para2); ieee802154SetPromiscuousMode(2, para3); setChannel(2, para4); rx(2, para5); #endif // Start in receive mode receiveModeEnabled = true; while (1) { // ... 主循环处理逻辑 ... } } ``` 通过以上详细介绍,我们不仅了解了EFR32MG Sniffer的制作过程,还学习了如何使用Sniffer进行ZigBee网络数据包的捕获,并掌握了一些基本的串口命令,有助于更好地管理和控制Sniffer的工作状态。
身份认证 购VIP最低享 7 折!
30元优惠券