晶晨S905D3切换到外部phy方法


前言

随着芯片的国产化推荐,越来越多的国产芯片被大家重视起来,但是国产的一些稍微高性能的芯片资料太少,这里把调实phy的流程记录一下,不做太多的理论分析


一、s905d3的以太网驱动的理解

如果拿到sdk后,默认使用的是内部phy(百兆的网络)如果切换到外部phy需要用户自己构建设备树文件,这里使用的phy是RTL8211芯片,kernel里面已经有相关的驱动。

嵌入式网络硬件分为两个部分,MAC和PHY,一个MAC必须与一个PHY搭配使用,芯片如果没有网络芯片(MAC),那就需要使用外置的MAC+PHY,如下图所示:
在这里插入图片描述
SOC内部集成了网络,一般就是说内部有MAC,但是phy一般都是外置的,(晶晨的是内部集成了phy),
在这里插入图片描述
MAC通过MII或者MDIO与外部的PHY进行通信。

详细的MDIO与MII接口的定义等可以参考其他文章了解

二、修改设备树

通过查看相关的硬件原理图,排查引脚复用相关的问题,比如:
GPIOZ_6与GPIOZ_12引脚,这两个引脚是ENET的数据接收引脚和数据发送引脚。
引脚的复用如下:

	external_eth_pins: external_eth_pins {
		mux {
			groups = "eth_mdio",
			"eth_mdc",
			"eth_rgmii_rx_clk",
			"eth_rx_dv",
			"eth_rxd0",
			"eth_rxd1",
			"eth_rxd2_rgmii",
			"eth_rxd3_rgmii",
			"eth_rgmii_tx_clk",
			"eth_txen",
			"eth_txd0",
			"eth_txd1",
			"eth_txd2_rgmii",
			"eth_txd3_rgmii";
			function = "eth";
			drive-strength = <3>;
		};
	};

在DTS的文件中增加如下:

&ethmac {
        status = "okay";
        pinctrl-names = "external_eth_pins";
        pinctrl-0 = <&external_eth_pins>;
        rst_pin-gpios = <&gpio GPIOZ_15 0>;
        mc_val = <0x1621>;

        internal_phy=<0>;
};

在修改对应的board相关:

buildroot/bootloader/uboot-repo/bl33/v2015/board/amlogic/configs
找到g12a_u200_v1.h
添加下面两句:
#undef ETHERNET_INTERNAL_PHY
#define ETHERNET_EXTERNAL_PHY

到此基本上外置phy就已经配置好了


注意

如果硬件电路设计正常的,可以通过如下方式,对网络进行一个初步筛查:
黄灯正常说明网络是通的,绿灯正常说明网络传输正常。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值