谷动谷力

标题: RT-Thread 基于 WIZnet W5500 ioLibrary_Driver 代码库的移植与用法介绍 [打印本页]

作者: 鸣涧_GC96O    时间: 2021-12-1 19:27
标题: RT-Thread 基于 WIZnet W5500 ioLibrary_Driver 代码库的移植与用法介绍
本帖最后由 sunsili 于 2023-8-24 19:07 编辑

RT-Thread 基于 WIZnet W5500 ioLibrary_Driver 代码库的移植与用法介绍


1、介绍

WIZnet 软件包是 RT-Thread 基于 WIZnet 官网 ioLibrary_Driver 代码库的移植实现,目前只支持 W5500 设备。该软件包在原代码库功能的基础上,对接 RT-Thread SAL 套接字抽象层,实现对标准 BSD Socket APIs 的支持,完美的兼容多种软件包和网络功能实现,提高 WIZnet 设备兼容性。


1.1 目录结构

WIZnet 软件包目录结构如下所示:

  1. wiznet
  2. ├───inc                             // RT_Thread 移植头文件
  3. ├───iolibrary                       // WIZnet 官方库文件
  4. │   └───Ethernet                    // WIZnet 官方 Socket APIs 和 WIZCHIP 驱动
  5. │   │   └───W5500                   // WIZCHIP 驱动
  6. │   │   wizchip_conf.c              // Socket 配置文件
  7. │   │   wizchip_socket.c            // Socket APIs 文件
  8. │   └───Internet                    // WIZnet 官方网络功能实现
  9. │   │   └───DHCP                    // DHCP 功能实现
  10. │   └───────DNS                     // DNS 功能实现
  11. ├───src                             // RT_Thread 移植源码文件
  12. │   └───wiz_af_inet.c               // WIZnet BSD Socket 注册到 SAL
  13. │   │   wiz_device.c                // WIZnet 设备初始化
  14. │   │   wiz_ping.c                  // WIZnet 设备 Ping 命令实现
  15. │   │   wiz_socket.c                // WIZnet BSD Socket APIs 实现
  16. │   └───wiz.c                       // WIZnet 初始化(设备初始化、网络初始化)
  17. │   LICENSE                         // 软件包许可证
  18. │   README.md                       // 软件包使用说明
  19. └───SConscript                      // RT-Thread 默认的构建脚本
复制代码

WIZnet 软件包遵循 Apache-2.0 许可,详见 LICENSE 文件。


1.3 依赖

2、获取软件包

使用 WIZnet 软件包需要在 RT-Thread 的包管理中选中它,具体路径如下:


  1. WIZnet: WIZnet TCP/IP chips SAL framework implement
  2.         WIZnet device type (W5500)  --->
  3.         WIZnet device configure  --->
  4.             (spi30) SPI device name
  5.             (10) Reset PIN number
  6.             (11) IRQ PIN number
  7.   [ ]   Enable alloc IP address through DHCP
  8.             WIZnet network configure  --->
  9.                 (192.168.1.10) IPv4: IP address
  10.                 (192.168.1.1) IPv4: Gateway address
  11.                 (255.255.255.0) IPv4: Mask address
  12.   [ ]   Enable Ping utility
  13.   [ ]   Enable debug log output
  14.         Version (latest)  --->
复制代码

WIZnet device type :配置支持的设备类型(目前只支持 W5500 设备 )

WIZnet device configure :配置使用设备的参数

Enable alloc IP address through DHCP: 配置是否使用 DHCP 分配 IP 地址(默认开启)

WIZnet network configure:如果不开启 DHCP 功能,需要配置静态连接的 IP 地址、网关和子网掩码

Enable Ping utility: 配置开启 Ping 命令 (默认开启)

Enable debug log output:配置开启调试日志显示

Version:软件包版本选择


作者: 鸣涧_GC96O    时间: 2021-12-1 19:29
本帖最后由 sunsili 于 2023-8-24 19:08 编辑

3、使用软件包


WIZnet 软件包初始化函数如下所示:


  1. int wiz_init(void);
复制代码

该函数支持组件初始化,如果开启组件自动初始化功能,则应用层无需在调用该函数 ,函数主要完成功能有,

每个 WIZnet 设备需要唯一的 MAC 地址,用户可以在应用层程序中调用如下函数设置 WIZnet 设备 MAC 地址,如果不调用该函数,设备将使用默认的 MAC 地址,默认 MAC 地址为 00-E0-81-DC-53-1A(注意:同一个局域网中如果存在相同 MAC 地址的设备,可能导致设备网络异常) 。

  1. int wiz_set_mac(const char *mac);
复制代码

设备上电初始化完成,设置设备 MAC 地址成功,然后可以在 FinSH 中输入命令 wiz_ifconfig 查看设备 IP 地址、MAC 地址等网络信息,如下所示:


  1. msh />ifconfig
  2. network interface device: W5500 (Default)        ## 设备名称
  3. MTU: 1472                                        ## 网络最大传输单元
  4. MAC: 00 e0 81 dc 53 1a                           ## 设备 MAC 地址
  5. FLAGS: UP LINK_UP INTERNET_UP                    ## 设备标志
  6. ip address: 192.168.12.26                        ## 设备 IP 地址
  7. gw address: 192.168.10.1                         ## 设备网关地址
  8. net mask  : 255.255.0.0                          ## 设备子网掩码
  9. dns server #0: 192.168.10.1                      ## 域名解析服务器地址0
  10. dns server #1: 0.0.0.0                           ## 域名解析服务器地址1
复制代码

获取 IP 地址成功之后,如果开启 Ping 命令功能,可以在 FinSH 中输入命令 ping + 域名地址 测试网络连接状态, 如下所示:


  1. msh />wiz_ping baidu.com
  2. 32 bytes from 220.181.57.216 icmp_seq=0 ttl=128 time=31 ticks
  3. 32 bytes from 220.181.57.216 icmp_seq=1 ttl=128 time=31 ticks
  4. 32 bytes from 220.181.57.216 icmp_seq=2 ttl=128 time=32 ticks
  5. 32 bytes from 220.181.57.216 icmp_seq=3 ttl=128 time=32 ticks
复制代码

ping 命令测试正常说明 WIZnet 设备网络连接成功,之后可以使用 SAL(套接字抽象层) 抽象出来的标准 BSD Socket APIs 进行网络开发(MQTT、HTTP、MbedTLS、NTP、Iperf 等),WIZnet 软件包支持的协议簇类型为:主协议簇为 AF_WIZ、次协议簇为 AF_INET(具体区别和使用方式可查看 SAL 编程指南 )。


4、常见问题
5、注意事项

6、联系方式 & 感谢








欢迎光临 谷动谷力 (http://bbs.sunsili.com/) Powered by Discuz! X3.2