Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
PHY_DP83848
Ethernet_以太网
【 从0到1版本】移植RT-Thread到GD32 ——之 <添加以太网驱动>RTT + GD32F4XX + DP83848 (超详细)
发布于 2023-03-08 15:02:42 浏览:2192
订阅该版
[tocm] # RTT + GD32F4XX + DP83848 文章中,针对各种特殊情况:如menuconfig找不到相关驱动选项、驱动文件添加但不成功,以及IP非静态等问题做了一系列的解释解答和解决。并且指明了各种源码的位置,和移植位置。入门简单,容易上手! 【教程前的叨叨叨】目前看到各位大佬的文章,基本STM32+LAN8700教程居多,因为最近手上新项目使用的是GD32F4XX + DP83848,摸索的过程记录并分享一下,希望能给后来者一些引导和帮助。 客观来说GD属于国产芯片,作为研发可以投入更多的精力去维护和督促它们和各个开源的接轨和更新。相信软件技术+硬件支持,我们国内芯片的研发市场才能打开,后来人的研发环境才能更好~ 教程比较粗浅,有哪里不明白的地方,欢迎小白们在评论区互动,欢迎大佬们多多指点![抱拳] ## 第一步:env终端输入:menuconfig ⇒ `**启用 lwIP 与 net device**` 第一处:(记得选对芯片) ![screenshot_图片.png](https://oss-club.rt-thread.org/uploads/20230310/88e95f8de5199f57ea0500df7439363a.png.webp) 第二处:开启network的驱动 ![screenshot_图片.png](https://oss-club.rt-thread.org/uploads/20230310/b1cffb087ce0751af04b7e87e415ebc2.png.webp) ![screenshot_图片.png](https://oss-club.rt-thread.org/uploads/20230310/4881f9da1baf0d5c15a1db8819e4b448.png) ![screenshot_图片.png](https://oss-club.rt-thread.org/uploads/20230310/62d03c88a9da6814becbdf8a31ea7073.png) 此处可参考<官网教程>:[https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/application-note/components/network/an0010-lwip-driver-porting?id=驱动移植](https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/application-note/components/network/an0010-lwip-driver-porting?id=%e9%a9%b1%e5%8a%a8%e7%a7%bb%e6%a4%8d) ### 【特别注意】 - PS #### 遇到问题: 如果menuconfig 打开找不到如上的勾选项,那么就是borad的Kconfig里缺少了驱动设置,需要移植一下。 #### 解决思路: 将如下内容写入”menu Onboard Peripheral Drivers”内,再重新在env输入menuconfig,接着按照第一步进行即可 ```c 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-master\bsp\gd32450z-eval\drivers\)` 目标`_PATH(\libraries\gd32_drivers\)` ## 第三步:查看编译文件SConscript 查看`(\libraries\gd32_drivers\SConscript)`,是否添加了drv_enet的文件编译。如果没有,则添加如下内容。 ```c # add Ethernet drivers. if GetDepend('RT_USING_LWIP'): src += ['drv_enet.c', 'synopsys_emac.c'] ``` ## 第四步:进行打包编译 添加后,env终端输入:`scons --target=mdk5` 进行更新编译。 ## 第五步:勾选芯片类型 记得勾选芯片类型:(DP83848 || LAN8700) ps:我手里的板子使用的是DP83848 ```c #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均为空 ![screenshot_图片.png](https://oss-club.rt-thread.org/uploads/20230310/4c89561998b50a37ff2b90d001daa9a3.png) ### 【特别注意】 - PS #### 分析思路: 静态IP的定义问题 #### 解决方法: 在项目的rtconfig.h中,并添加IP相关的内容 ```c /* Static 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的定义:RT_LWIP_DHCP,注释掉(短期修改)。 或者将DHCP的选项从menuconfig中取消勾选(长期修改)。 ![screenshot_图片.png](https://oss-club.rt-thread.org/uploads/20230310/5d557a7bf847e58b60b804afaaada4b9.png) ## 最终:调试完毕,成功后如下图所示: ![screenshot_图片.png](https://oss-club.rt-thread.org/uploads/20230310/71eebf97ec46cc5f8e248edd2f18fea3.png) 图片要素解释: 【方框内容】:rt_hw_gd32_eth_init 函数初始化后的反馈log 【使用命令】: ```c ifconfig //来查看以太网的相关设置。 ping (局域网内的某主机IP) //可以看到反馈正常 ``` 本地某主机反ping设备,发现反馈也正常 ![screenshot_图片.png](https://oss-club.rt-thread.org/uploads/20230310/5cab824a58f35297a2505c81bd6bd362.png) ### 【特别注意】 - PS #### 问题描述: 如果存在本地ping设备可通,但是设备ping本地某主机不通的情况 #### 解决思路: 可以看下是不是本地主机开启了防火墙,如果开了,就关闭防火墙后再次尝试一下。
8
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
乐亦Lee
这家伙很懒,什么也没写!
文章
2
回答
0
被采纳
0
关注TA
发私信
相关文章
1
以太网先上电再连网线通信
2
ethernet 和 use memory layout冲突
3
stm32h743的LAN8720A驱动编译错误, 不知道怎么改
4
关于在stm32F107CVT6中使用以太网芯片DM9161AEP的内存不足异常
5
stm32F107+DM9161AEP的PHY芯片 运行出现错误
6
stm32f107+dm9161的phy芯片报错eth硬件初始化失败
7
stm32f107+DM9161出现硬件初始化问题
8
基于芯片建立工程,以太网卡无法使用
9
SPI总线挂接2个W5500以太网芯片
10
STM32H743 以太网驱动 问题
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
编译报错
Debug
SFUD
msh
rt_mq_消息队列_msg_queue
keil_MDK
ulog
MicroPython
C++_cpp
本月问答贡献
出出啊
1517
个答案
342
次被采纳
小小李sunny
1443
个答案
289
次被采纳
张世争
805
个答案
174
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
148
次被采纳
本月文章贡献
出出啊
1
篇文章
4
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
1
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部