目录
前言
一、LAN8720A介绍
二、原理图连接
三、设备树配置
四、内核配置
五、调试问题
总结
前言
在嵌入式系统开发中,网络连接是至关重要的一部分。T113-S3开发板搭载了LAN8720A系列的网口PHY芯片,用于实现以太网连接。在开发过程中,对于网口的稳定性和性能的调试至关重要。本篇博客将介绍如何调试T113-S3开发板中的LAN8720A网口PHY芯片,以确保网络连接的正常工作。
一、LAN8720A介绍
LAN8720A是一款常用的以太网物理层(PHY)芯片,由微芯科技(Microchip Technology)公司生产。它被广泛应用于各种网络设备,如嵌入式系统、单板计算机、工业自动化设备、路由器、交换机等,用于实现高速以太网连接。
以下是LAN8720A的主要特点和特性:
-
速率和接口: LAN8720A支持10/100Mbps的以太网速率,与IEEE 802.3u标准兼容。它采用了常见的RMII(Reduced Media Independent Interface)接口,可以与各种主控芯片和处理器连接。
-
工作模式: 芯片支持全双工和半双工模式,可以适应不同的网络通信需求。
-
自动协商: LAN8720A支持自动协商功能,能够自动检测并适应连接的网络速率和工作模式,从而简化了硬件和软件配置。
-
低功耗: 芯片具有低功耗设计,适用于需要长时间运行的嵌入式系统和移动设备。
-
内部时钟生成: LAN8720A内部集成了时钟生成电路,可以产生所需的时钟信号,减少了外部组件的需要。
-
自动MDI/MDIX交换: 芯片支持自动MDI(Medium Dependent Interface)/MDIX(Medium Dependent Interface Crossover)交换功能,允许直接连接到交叉线缆或普通直通线缆上。
-
诊断和状态指示: 芯片提供了诊断功能,可以监测链路状态、电缆长度和信号强度。同时,它还支持LED指示灯,用于显示连接和活动状态。
-
温度范围: LAN8720A适用于工业级应用,具有广泛的工作温度范围,适应各种环境条件。
-
电源: 芯片工作电压为3.3V,符合现代数字电路的标准电压。
二、原理图连接
T113-S3采用RMII模式通过PG口与LAN8720A-phy芯片连接,使用PE组io脚作为连接脚与该phy芯片相连接,具体连接示意图如下所示:。
三、设备树配置
在SDK里面通过修改device/config/chips/t113/configs/evb1_auto/board.dts设备树配置文件,添加网口pinctl控制脚,并使能gmac网咯节点。
&gmac0_pins_a{
allwinner,pins = "PE0", "PE1", "PE2", "PE3", "PE4",
"PE5", "PE6", "PE7","PE8", "PE9";
allwinner,function = "gmac0";
allwinner,muxsel = <8>;
allwinner,drive = <1>;
allwinner,pull = <0>;
};
&gmac0_pins_b{
allwinner,pins = "PE0", "PE1", "PE2", "PE3", "PE4",
"PE5", "PE6", "PE7","PE8", "PE9";
allwinner,function = "gpio_in";
allwinner,muxsel = <0>;
allwinner,drive = <1>;
allwinner,pull = <0>;
};
&gmac0 {
pinctrl-0 = <&gmac0_pins_a>;
pinctrl-1 = <&gmac0_pins_b>;
pinctrl-names = "default", "sleep";
phy-mode = "rmii";
use_ephy25m = <0>;
tx-delay = <7>;
rx-delay = <31>;
phy-rst = <&pio PE 13 GPIO_ACTIVE_HIGH>;
status = "okay";
};
四、内核配置
linux内核需要打开SMSC phy驱动配置,> Device Drivers > Network device support > PHY Device support and infrastructure 具体路径如下图所示:
配置保存重新编译内核烧写到开发板即可。
五、调试问题
系统启动之后出现如下打印:Master/slave resolution failed, maybe conflicting manual settings?
解决方法:修改全志SDK内核驱动文件,/kernel/linux-5.4/drivers/net/ethernet/allwinner/sunxi-gmac.c驱动文件中的geth_phy_init函数,修改部分如下截图所示,原因是该驱动文件访问了一个千兆phy才有的寄存器,导致报错网口出现问题。
修改之后,phy驱动正常加载:
网口速率测试如下所示:
总结
通过这些调试,您应该能够成功地在T113-S3 CPU上搭载LAN8720A PHY芯片,并确保网络连接的稳定性和可靠性。调试是一个逐步的过程,需要耐心和仔细。如果遇到问题,可以查阅相关文档、咨询开发者社区或专业人士以获得帮助。祝您在调试过程中获得成功!。