赞
踩
本文由RT-Thread论坛用户@xusiwei1236原创发布:https://club.rt-thread.org/ask/article/84a0398abd993169.html
开始本篇实验前,需要搭建RT-Thread开发环境,具体可以参考:http://bbs.eeworld.com.cn/thread-1205739-1-1.html
使用RT-Thread Studio创建名为hpm_net_test的项目:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fbtMpmaR-1655342930192)(https://oss-club.rt-thread.org/uploads/20220614/c96ea3551b1bcfae02d151b9d27310a6.png “create_project.png”)]
项目创建成功后,打开项目的RT-Thread Settings界面:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aCNB87bw-1655342930192)(https://oss-club.rt-thread.org/uploads/20220614/2267da988cba980028bc8ff7da13a878.png.webp “rtt_settings.png”)]
可以看到,默认情况下常见的项目SPI驱动框架已经打开了。
BSP中的SPI1驱动也已经打开了:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gfkMwlZO-1655342930194)(https://oss-club.rt-thread.org/uploads/20220614/8800cca2237908696cff34151cb2ced9.png “hpm_bsp_spi_config.png”)]
在RT-Thread Settings界面,点击通过“添加软件包”按钮,会弹出RT-Thread Package Center界面:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u3sGm05x-1655342930195)(https://oss-club.rt-thread.org/uploads/20220614/8e172c3444f4bb2ca1c576dc22d91e7c.png.webp “rtt_pkg_center.png”)]
在中间的搜索框种输入RW007,回车,可以找到RW007驱动程序软件包:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CUCPxy5F-1655342930196)(https://oss-club.rt-thread.org/uploads/20220614/dc89d74003e3eabe04a896a0f8cde838.png.webp “rtt_pkg_rw007_found.png”)]
点击界面“添加”按钮,即可将RW007软件包添加到当前项目的包配置中了,此时软件包并没有真正下载下来。点完添加按钮后,界面回到了RT-Thread Settings,此时按Ctrl+S保存,则会开始下载。下载过程中,控制台子窗口中可以看到一些日志输出:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-adC6B8ZQ-1655342930197)(https://oss-club.rt-thread.org/uploads/20220614/5c8e8e4935ad6cf2070da2ebfe5f782b.png “rtt_down_pkg.png”)]
稍等片刻,可以看到控制台中间有“RW007 v2.0.1 is downloaded successfully.”输出。此时rw007软件包已经成功下载到当前项目中了,具体代码位于packages子目录下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o1IDANun-1655342930198)(https://oss-club.rt-thread.org/uploads/20220614/fc91ff71fea6ecb7945b71f3d1f41a68.png “rtt_pkg_ready.png”)]
在RT-Thread Settings界面,中将鼠标移动到RW007组件上,会弹出悬浮菜单:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MLkjizm8-1655342930198)(https://oss-club.rt-thread.org/uploads/20220614/5a8a07151ef43b122b6f622edd036868.png “rtt_config_rw007.png”)]
点击悬浮菜单中的“配置项”,即可进入RW007软件包的配置界面:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bxoAly6K-1655342930199)(https://oss-club.rt-thread.org/uploads/20220614/d442c9533bfd758c43dacc479bde8d80.png “rw007_config.png”)]
可以看到,默认有一个RW007 for stm32的配置,就是说RW007默认包含了STM32的驱动。
这里我们需要修改的就是这个example driver port配置项,点击下拉菜单改为不使用示例驱动:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U4Bi0Y8J-1655342930200)(https://oss-club.rt-thread.org/uploads/20220614/d54d448a28d29815736c89834e6b810d.png “rw007_disable_stm32_driver.png”)]
选中后,记得Ctrl+S保存配置。
在RT-Thread Studio中Ctrl+B或按“锤子”按钮,即可开始编译项目。编译完成后,可以看到控制台输出了RAM和Flash占用:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GWTB2NDD-1655342930201)(https://oss-club.rt-thread.org/uploads/20220614/446e35dcda136a4b5bfe71e6bfd7db55.png “rw007_build_finish.png”)]
此时,将开发板连接到PC,并使用串口助手或者其他终端工具,连接到新增的串口上。
再到RT-Thread Studio中,使用“下载”按钮或Ctrl+Alt+D即可进行烧录(或者直接进行调试也可以)。
烧录完成后,可以看到串口终端上有输出:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qhGHl9kg-1655342930202)(https://oss-club.rt-thread.org/uploads/20220614/3f704011fae1566ff87f2d64e1b8e593.png “rtt_boot_log.png”)]
可以看到,输出了RT-Thread版本信息和RW007模组的序列号以及固件版本信息。这里能够看到RW007模组的固件版本信息,其实HPM6750芯片和RW007模组之间可以已经正常通信了。
接下来,我们进行一些简单的WiFi测试。
添加RW007组件后,默认会打开RT-Thread的WiFi驱动框架,而RT-Thread的WiFi驱动框架中同时带有一个测试命令——wifi(对就是这么直接)。
我们可以在RT-Thread的finsh交互环境中使用help查看当前已有哪些命令:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-380ffktI-1655342930202)(https://oss-club.rt-thread.org/uploads/20220614/093658ccb9b083b5c74f2ab60a2bd36f.png “rtt_help_print.png”)]
可以看到有一个wifi命令。
接下来我们查看wifi命令的使用方式:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-adzKtbCS-1655342930203)(https://oss-club.rt-thread.org/uploads/20220614/9982ecf4dc4cf7621c0272dd04e1ce54.png “rtt_wifi_help.png”)]
尝试扫描周围的WiFi热点:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b26ivArd-1655342930204)(https://oss-club.rt-thread.org/uploads/20220614/e5ecb981945f98d06d41a55de76b2aa7.png “rtt_wifi_scan.png”)]
可以看到,成功扫描到了周围的WiFi热点。
尝试连接其中的一个热点:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d6bMpEV9-1655342930204)(https://oss-club.rt-thread.org/uploads/20220614/147c72a872ae1500a7cdaad50d2aefa2.png “rtt_wifi_join.png”)]
然而,不幸的是,发生异常了。
不过,从这里的几个warning打印信息可以看到,应该是因为tcpip线程栈溢出导致的。
接下来,我们通过RT-Thread Settings修改tcpip线程栈的大小。
同样,首先打开RTT Settings界面,鼠标指针放到LwIP组件图标上:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fqkakRzb-1655342930205)(https://oss-club.rt-thread.org/uploads/20220614/155845daffffc70aab707555709b5e01.png.webp “rtt_lwip_config.png”)]
打开配置项,找到RT_LWIP_TCPTHREAD_STACKSIZE配置项,并将其修改为4096:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-piecsEQ4-1655342930206)(https://oss-club.rt-thread.org/uploads/20220614/5892fe002e5aafdba9b53047a895d1c0.png “rtt_lwip_tcpip_thread_stack_size.png”)]
界面下方可以看到这个LwIP线程栈大小的配置项名称为**RT_LWIP_TCPTHREAD_STACKSIZE。**至于这里为什么要改这个配置项,没有在RT-Thread用过LwIP的同学可能会疑惑。其实,这里可以根据线程名“tcpip”,一路搜索代码,首先可以找到创建名为tcpip线程的代码位置,然后可以找到线程栈大小参数的来源。这里是搜索结果:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SKxOSlzh-1655342930206)(https://oss-club.rt-thread.org/uploads/20220614/a934d84ed15e2be873beeaf59041179d.png.webp “rtt_grep_tcpip.png”)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W7Gm4Tv6-1655342930207)(https://oss-club.rt-thread.org/uploads/20220614/3574a8f2312ad6e3a3803fa02a939743.png.webp “rtt_grep_tcpip_thread_name.png”)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O8hMvFP3-1655342930208)(https://oss-club.rt-thread.org/uploads/20220614/f3e75933e747608f53310eeec607ba2e.png.webp “rtt_grep_tcpip_thread_stack_size.png”)]
PS:因为默认使用的是lwip 2.0.3版本,所以这里只搜索了lwip-2.0.3的代码。
配置修改完成后,Ctrl+S保存,重新编译项目、烧录、运行,这次能够成功连接WiFi热点了:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pgRuw0ps-1655342930209)(https://oss-club.rt-thread.org/uploads/20220614/a310e5599843c6cd2ac2ed363aefdd7f.png “rtt_wifi_join_ok.png”)]
可以看到,已经成功通过DHCP从热点获取到IP地址了。
前面提到,添加了RW007软件包后,会开启RT-Thread的WiFi驱动框架;同时,也会开启系统中网络协议相关的组件,主要包括套接字抽象层(SAL)、网络接口层、轻量级TCP/IP堆栈(LwIP),如下图所示。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O5Eddv98-1655342930209)(https://oss-club.rt-thread.org/uploads/20220614/7364e7fc13fbd4f356378097cbd780a9.png.webp “rtt_network_comps.png”)]
其中,LwIP的默认版本用的是v2.0.3,也可以切换为其他版本(RT-Thread系统中同时提供了LwIP的好几个版本
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。