【STM32F4】【银杏科技ARM+FPGA】iCore3移植RT-Thread--网络功能
随着嵌入式系统功能的多样化以及网络在各个领域中的广泛应用,具备网络功能的嵌入式设备拥有更高的使用价值和更强的通用性。RT-Thread系统提供了一套SAL(套接字抽象层)组件,方便我们网络相关的开发。iCore3搭载W5500网络接口,我们这次带来rt-thread+SAL+W5500的以太网通信。
一、配置W5500的相关GPIO,选择时钟源
1.1 我们打开../BSP/STM32/STM32F407_gingko_iCore3/board/CubeMX_Config来进行SPI(W5500挂载在SPI总线上)引脚的配置,注意与原理图引脚一致,PA7--SPI1_MOSI、PB3--SPI1_SCK、PB4--MISO,这里仍然是只配置IO,其他参数不予更改。配置完成后点击CREATE CODE。
1.2 CubeMX生成工程后,只保留红色方框内的文件,其他的两个文件夹可以删除掉。
1.3 复制刚生成的src文件夹main.c文件夹中的函数SystemClock_Config(void)到board.c。这里内核初始化时要调用该函数进行时钟配置。
二、打开SPI设备
2.1打开../BSP/STM32/STM32F407_gingko_iCore3/board/Kconfig:
2.2点击保存,打开Env工具,输入menuconfig命令,使能SPI设备:
2.3保存退出,输入scons --target=mdk5生成工程,打开putty,选择正确的端口号,编译后下载到开发板,输入list_device命令,既可查看:
三、更新软件包
3.1打开../BSP/STM32/STM32F407_gingko_iCore3文件中,在空白处右击,选择“ConEmu Here”:
输入pkgs --upgrade更新软件源:
3.2输入menuconfig命令打开其界面,在IoT-internet of things中选中WIZnet:
保存退出,此时退出ConEmu后再重新打开,输入pkgs --update下载软件包:
四、添加设备驱动文件
4.1在../BSP/STM32/STM32F407_gingko_iCore3/board文件夹下,添加一个设备文件,在文件夹下建立一个.c文件(代码如下):
4.2更改SConscript脚本,讲.c文件添加到工程中:
五、挂载W5500设备
5.1打开../BSP/STM32/STM32F407_gingko_iCore3/board/Kconfig文件,添加一下代码:
5.2打开Env工具,使用menuconfig配置工程,启动SAL:
5.3修改硬件配置,比对rt-thread引脚编号(在drv_gpio.c文件中查询),得知iCore3开发板上的INT连接的是PG2引脚对应编号为98,RST为硬件复位,可以选择空闲引脚编号,这里选择编号96:
5.4启用SPI1:
5.5保存退出,在Env中输入命令:scons --target=mdk5生成工程,编译后下载到开发板,输入list_device:
输入ifconfig可以打印板子的网络状态,正常获得IP,便是网络驱动正常:
打开电脑WIN+R输入CMD打开命令行,输入ipconfig查看电脑的IP,此时应关闭电脑的防火墙:
输入ping 192.168.1.100(iCore3板子的IP地址),可以ping通:
在putty中,输入ping 192.168.1.123(电脑IP),可以ping通:
六、更改iCore3板子IP地址
可通过Env配置固定的IP地址:
再次输入:scons --target=mdk5生成工程。
七、tcp client/udp client例程
完成以上工作,就可以做网络开发了,这里我们以tcp client/udp client为例:
首先打开文件系统:
在软件包中开启基础实例代码tcp client与udp client,路径为:RT-Thread online packages->miscellaneous packages->samples:kernel and components samples->a network_samples package for rt-thread:
点击保存退出配置界面,在Env中输入pkgs --update下载软件包,输入scons --target=mdk5生成工程,打开编译,并下载代码:
7.1打开网络调试助手工具搭建一个TCP服务器,记录下打开的端口号:
在shell中输入tcpclient PC的IP地址及端口号,点击enter提示连接成功:
点击网络调试助手中的发送按钮,提示发送信息,并有返回信息:
在putty中也有返回信息:
7.2将协议切换为UDP:
在shell中输入udpclient PC的IP地址及端口号:
代码包下载:
链接:https://pan.baidu.com/s/1sY-WcyCDUUj5KkmK3ZWzPw
提取码:wjdx