RT-Thread 基于 WIZnet W5500 ioLibrary_Driver 代码库的移植与用法介绍 1、介绍 WIZnet 软件包是 RT-Thread 基于 WIZnet 官网 ioLibrary_Driver 代码库的移植实现,目前只支持 W5500 设备。该软件包在原代码库功能的基础上,对接 RT-Thread SAL 套接字抽象层,实现对标准 BSD Socket APIs 的支持,完美的兼容多种软件包和网络功能实现,提高 WIZnet 设备兼容性。 1.1 目录结构 WIZnet 软件包目录结构如下所示:
WIZnet 软件包遵循 Apache-2.0 许可,详见 LICENSE 文件。 1.3 依赖
2、获取软件包 使用 WIZnet 软件包需要在 RT-Thread 的包管理中选中它,具体路径如下:
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:软件包版本选择 |
WIZnet 软件包初始化函数如下所示:
该函数支持组件初始化,如果开启组件自动初始化功能,则应用层无需在调用该函数 ,函数主要完成功能有,
设置默认 MAC 地址;
设备配置和初始化(配置 SPI 设备,配置复位和中断引脚);
网络配置和初始化(DHCP 分配 IP 地址,配置 socket 参数 );
注册实现的 BSD Socket APIs 到 SAL 套接字抽象层中,完成 WIZnet 设备适配;
每个 WIZnet 设备需要唯一的 MAC 地址,用户可以在应用层程序中调用如下函数设置 WIZnet 设备 MAC 地址,如果不调用该函数,设备将使用默认的 MAC 地址,默认 MAC 地址为 00-E0-81-DC-53-1A(注意:同一个局域网中如果存在相同 MAC 地址的设备,可能导致设备网络异常) 。
设备上电初始化完成,设置设备 MAC 地址成功,然后可以在 FinSH 中输入命令 wiz_ifconfig 查看设备 IP 地址、MAC 地址等网络信息,如下所示:
获取 IP 地址成功之后,如果开启 Ping 命令功能,可以在 FinSH 中输入命令 ping + 域名地址 测试网络连接状态, 如下所示:
ping 命令测试正常说明 WIZnet 设备网络连接成功,之后可以使用 SAL(套接字抽象层) 抽象出来的标准 BSD Socket APIs 进行网络开发(MQTT、HTTP、MbedTLS、NTP、Iperf 等),WIZnet 软件包支持的协议簇类型为:主协议簇为 AF_WIZ、次协议簇为 AF_INET(具体区别和使用方式可查看 SAL 编程指南 )。
SPI 设备初始化时断言问题
出现上述断言问题,可能原因是 ENV 中配置 WIZnet 使用的 SPI 设备名称填写不正确,请区分 SPI DEVICE 与 SPI BUS 的关系。如果 BSP 工程中没有 SPI 设备或者只有 SPI 总线设备,需要手动在驱动中挂载 SPI 设备到 SPI 总线,并正确配置 WIZnet 软件包中使用的 SPI 设备名称。
WIZnet 软件包最新版本已支持作为 server 服务器模式(V1.1.0 版本之前不支持)。
WIZNet 软件包初始化出现 [E/wiz.dev] You should attach [wiznet] into SPI bus firstly.错误,是因为没有挂载 winzet 设备到 SPI 总线导致的;请参考 wiz_init 函数中的注释,解决软件包初始化失败的问题。
在使用 RT-Thread 仓库的既往代码时,请比对 [components/net/sal_socket/src/sal_socket.c]的内容,尤其是关于此处 PR 的内容,注意 sal_closesocket 的内容。当你总是申请 socket(-1) 失败时,请确保你所使用的 RT-Thread 的代码是与该 PR 的意图相符合的。
当出现申请 socket 时错误为 0x22 错误,注意 wiznet 的开发分支处于 master 版本或者大于 V1.1.0 的版本。请留意 wiz_socket_init() 的执行顺序,因为 sal_check_netdev_internet_up 联网检测函数,会主动申请 socket 以判断 w5500 是否具有网络能力,而网络状态变更会导致 sal_check_netdev_internet_up 被调用,造成 0x22 错误。
|Archiver|手机版|深圳市光明谷科技有限公司|光明谷商城|Sunshine Silicon Corpporation ( 粤ICP备14060730号 ) |Sitemap
GMT+8, 2024-9-30 23:14 , Processed in 0.110998 second(s), 36 queries .
Powered by Discuz! X3.2 Licensed
© 2001-2013 Comsenz Inc.