【特别注意】 - PS
遇到问题:
如果menuconfig 打开找不到如上的勾选项,那么就是borad的Kconfig里缺少了驱动设置,需要移植一下。
解决思路:
将如下内容写入”menu Onboard Peripheral Drivers”内,再重新在env输入menuconfig,接着按照第一步进行即可
config BSP_USING_ETH
bool “Enable Ethernet”
select RT_USING_LWIP
default n
if BSP_USING_ETH
choice
prompt “Select Eth PHY”
default PHY_USING_DP83848C
config PHY_USING_LAN8720A
bool “PHY_USING_LAN8720A”
config PHY_USING_DP83848C
bool “PHY_USING_DP83848C”
config PHY_USING_DM9161CEP
bool “PHY_USING_DM9161CEP”
endchoice
endif
第二步:移植源码中的驱动文件
从RTT源码中复制以下几个文件到项目中
(‘drv_enet.c’, ‘synopsys_emac.c’,’synopsys_emac.h’)
RTT_PATH (rt-thread-masterbspgd32450z-evaldrivers)
目标_PATH(librariesgd32_drivers)
第三步:查看编译文件SConscript
查看(librariesgd32_driversSConscript),是否添加了drv_enet的文件编译。如果没有,则添加如下内容。
# add Ethernet drivers.
if GetDepend(’RT_USING_LWIP‘):
src += [’drv_enet.c‘, ’synopsys_emac.c‘]
第四步:进行打包编译
添加后,env终端输入:scons --target=mdk5
进行更新编译。
第五步:勾选芯片类型
记得勾选芯片类型:(DP83848 || LAN8700)
ps:我手里的板子使用的是DP83848
#ifndef _PHY_H_
#define DP83848 1
#define LAN8700 0
#define PHY_TYPE DP83848
//[下面的地址,两个芯片的起始位置不同]:
//DP是从1U开始;LAN是从0U开始
#define PHY_ADDRESS ((uint16_t)1U) /*!《 phy address determined by the hardware */
第六步:测试
测试一下,发现设置的ip均为空
【特别注意】 - PS
分析思路:
静态IP的定义问题
解决方法:
在项目的rtconfig.h中,并添加IP相关的内容
/* Sta
tic IPv4 Address */
#define RT_LWIP_IPADDR “192.168.1.30”
#define RT_LWIP_GWADDR “192.168.1.1”
#define RT_LWIP_MSKADDR “255.255.255.0”
并找到关于静态IP的定义:RTLWIP_DHCP,注释掉(短期修改)。
或者将DHCP的选项从menuconfig中取消勾选(长期修改)。
最终:调试完毕,成功后如下图所示:
图片要素解释:
【方框内容】:rt_hw_gd32_eth_init 函数初始化后的反馈log
【使用命令】:
ifconfig
//来查看以太网的相关设置。
ping (局域网内的某主机IP)
//可以看到反馈正常
本地某主机反ping设备,发现反馈也正常
【特别注意】 - PS
问题描述:
如果存在本地ping设备可通,但是设备ping本地某主机不通的情况
解决思路:
可以看下是不是本地主机开启了防火墙,如果开了,就关闭防火墙后再次尝试一下。
原作者:inka