【前言】
最近将分享FRDM_RW612的zephyr一系列的文章,本篇将分享如何从零开始联网。
【工程创建】
1、在zephyr目录下面新建frdm_rw612_wif的文件夹。
2、新建目录结构如下:
frmd_rw612_wifi/ ├── CMakeLists.txt # 必须 ├── prj.conf # Kconfig配置,必须 ├── app.overlay # 设备树overlay(可选,后面改硬件才用) ├── src/ # 源码文件夹,手动建 │ └── main.c # 主程序 └── west.yml # west工程清单,必须
3、CMakeLists.txt
cmake_minimum_required(VERSION 3.20.0)
find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
project(frmd_rw612_wifi)
target_sources(app PRIVATE src/main.c)4、west.yml
manifest: self: path: .
5、app.overlay 现在不需要添加内容,空即可
6、main.c
#include <zephyr/kernel.h>
#include <zephyr/sys/printk.h>
int main(void)
{
printk("Hello World! %s\n", CONFIG_BOARD);
printk("FRMD RW612 WiFi Test Application\n");
printk("Use shell: wifi connect <SSID> <PASSWORD> to connect to WiFi\n");
while (1)
{
k_sleep(K_SECONDS(1));
}
return 0;
}7、重头戏 prj.conf
因为需要联网因此用到的非常多,内容如下:
# 基础网络 CONFIG_NETWORKING=y CONFIG_NET_IPV4=y CONFIG_NET_TCP=y CONFIG_NET_SOCKETS=y # NXP RW6xx Wi-Fi CONFIG_WIFI=y CONFIG_WIFI_NXP=y CONFIG_NXP_RW610=y # DHCP CONFIG_NET_DHCPV4=y # 网络缓冲区 CONFIG_NET_BUF_RX_COUNT=16 CONFIG_NET_BUF_TX_COUNT=16 CONFIG_NET_BUF_DATA_SIZE=2048 # 串口 Shell CONFIG_CONSOLE=y CONFIG_SHELL=y CONFIG_SHELL_BACKEND_SERIAL=y CONFIG_NET_L2_WIFI_SHELL=y CONFIG_NET_SHELL=y # 日志 CONFIG_LOG=y CONFIG_LOG_DEFAULT_LEVEL=3 CONFIG_LOG_MODE_IMMEDIATE=y # RW612 Wi-Fi 驱动所需的栈空间 CONFIG_MAIN_STACK_SIZE=4096 CONFIG_SHELL_STACK_SIZE=6144 CONFIG_NET_MGMT_EVENT_STACK_SIZE=4608 CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=2048 CONFIG_NET_TCP_WORKQ_STACK_SIZE=2048 CONFIG_IDLE_STACK_SIZE=1024 # FRDM-RW612 未连接以太网 PHY CONFIG_ETH_DRIVER=n # Wi-Fi 自动连接(如果 Kconfig 符号存在) CONFIG_NXP_WIFI_STA_AUTO_CONN=y CONFIG_NXP_WIFI_STA_AUTO_SSID="SSID" CONFIG_NXP_WIFI_STA_AUTO_PASSWORD="pwd" # 启用 Zephyr 网络 Shell 用于验证 CONFIG_NET_SHELL=y
在这里需要重点说明
CONFIG_NXP_RW610这里,我们不能用RW612
RW612 Wi-Fi 驱动所需的栈空间,需要手工指定,如果没有这部分,那烧写固件后,shell都没有输出,原因是空间不够,启动不了。
如果需要在shell中使用net 命令,则需要打开CONFIG_NET_SHELL,打开这个开关后可以使用如下命令
net iface net ping net route net stats net dns
如果需要自动连接路由器,则需要配置
CONFIG_NXP_WIFI_STA_AUTO_CONN=y CONFIG_NXP_WIFI_STA_AUTO_SSID="SSID" CONFIG_NXP_WIFI_STA_AUTO_PASSWORD="pwd"
当然也可以写入overlay文件中
&nxp_wifi {
wifi_nxp_auto_connect = "y";
wifi_nxp_auto_ssid = "MyHomeWiFi";
wifi_nxp_auto_password = "12345678";
};【实验效果】
烧录固件到开发板后开机日志如下:

执行wifi status可以看到联网信息:

执行net inface可以看到更多的信息:

执行net ping可以测试网络情况:

【总结】
基于zephyr 的FRDM_RW612的联网,只需要配置相关的配置开关,即可跳过复杂的硬件配置,简单实现联网。
我要赚赏金
