潘多拉 RT-Thread 网络工具使用
实验概述
本实验主要介绍如何在 IoT Board 开发板上使用 RT-Thread 的 netutils 软件包的各种功能,包括 ping、ntp、tftp、iperf 等实用功能。
netutils 是一个包含众多简洁好用网络工具的软件包,利用该软件包,可以给开发者在调试网络功能时带来很多便利。当需要使用一些调试网络的小工具时,只需要拥有 netutils 软件包就够了,堪称网络功能调试界的瑞士军刀。
本实验需要依赖 IoTBoard 板卡上的 WiFi 模块完成网络通信,因此请确保硬件平台上的 WiFi 模组可以正常工作。可参考《潘多拉 RT-Thread WiFi 管理》。
硬件连接
潘多拉 IoT Board 板载的一个 WiFi 模块,它是正基公司的 AP6181 WiFi 模组,集成了 IEEE 802.11 b/g/n MAC 、基带、射频以及功率放大器、电源管理装置、SDIO 2.0 接口,原理图如下。
示例代码
参考《潘多拉 IoT Board 开发环境》创建工程,在 applications/main.c 中输入如下代码。main.c 主要配置 wlan 的自动连接功能并开启自动连接,以及文件系统功能的初始化。
applications/main.c
#include <rtthread.h>
#include <wlan_mgnt.h>
#include <dfs_fs.h>
#include <fal.h>
#include "wifi_config.h"
#define DBG_TAG "main"
#define DBG_LVL DBG_LOG
#include <rtdbg.h>
#define FS_PARTITION_NAME "filesystem"
int fs_init();
int main(void)
{
/* 配置 wlan 自动连接功能的依赖项 */
wlan_autoconnect_init();
/* 开启 wlan 自动连接 */
rt_wlan_config_autoreconnect(RT_TRUE);
/* 初始化文件系统 */
fs_init();
return 0;
}
int fs_init()
{
/* Create a block device on the file system partition of spi flash */
struct rt_device *flash_dev = fal_blk_device_create(FS_PARTITION_NAME);
if (flash_dev == NULL)
{
LOG_E("Can't create a block device on '%s' partition.", FS_PARTITION_NAME);
}
else
{
LOG_D("Create a block device on the %s partition of flash successful.", FS_PARTITION_NAME);
}
/* mount the file system from "filesystem" partition of spi flash. */
if (dfs_mount(FS_PARTITION_NAME, "/", "elm", 0, 0) == 0)
{
LOG_D("Filesystem initialized!");
}
else
{
LOG_E("Failed to initialize filesystem!");
LOG_E("You should create a filesystem on the block device first!");
}
return 0;
}
完整代码:24_iot_netutils