Linux内核-网卡驱动移植

来自华清远见研发中心
FarSight讨论 | 贡献2020年7月27日 (一) 17:48的版本 (创建页面,内容为“==实验原理== STM32MP157A系列SoC集成一个千兆以太网媒体访问控制器,支持RMII和MII两种标准的PHY,FS-MP1A设备上外接了一个瑞昱的...”)

(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索

实验原理

STM32MP157A系列SoC集成一个千兆以太网媒体访问控制器,支持RMII和MII两种标准的PHY,FS-MP1A设备上外接了一个瑞昱的千兆以太网PHY芯片RTL8211F,原理图如下:

50-1-1-1.png

查看原理图得出RTL8211F数据管脚与STM32MP157A的管脚对应关系如下:

实验目的

熟悉基于Linux操作系统下的网卡驱动移植配置过程。

实验平台

华清远见开发环境,FS-MP1A平台;

实验步骤

  • 添加网卡设备树配置。

修改arch/arm/dts/stm32mp15xx-fsmp1x.dts文件

在文件末尾添加如下内容:

&ethernet0 {
	status = "okay";
	pinctrl-0 = <&ethernet0_rgmii_pins_a>;
	pinctrl-1 = <&ethernet0_rgmii_pins_sleep_a>;
	pinctrl-names = "default", "sleep";
	phy-mode = "rgmii-id";
	max-speed = <1000>;
	phy-handle = <&phy0>;

	mdio0 {
		#address-cells = <1>;
		#size-cells = <0>;
		compatible = "snps,dwmac-mdio";
		phy0: ethernet-phy@0 {
			reg = <0>;
		};
	};
};
  • 配置内核

由于内核源码默认配置以及支持网卡,本节列出主要选项,如下:

linux@ubuntu:$ make menuconfig
Device Drivers  --->
	[*] Network device support  --->
			[*]   Ethernet driver support  --->
			<*>     STMicroelectronics Multi-Gigabit Ethernet driver
			<*>       STMMAC Platform bus support
			<*>         Support for snps,dwc-qos-ethernet.txt DT binding.
			<*>         Generic driver for DWMAC
			<*>         STM32 DWMAC support
  • 编译内核及设备树:
linux@ubuntu:$ make -j4 uImage dtbs LOADADDR=0xC2000040
  • 重启测试

将编译好的设备树和内核镜像拷贝到/tftpboot目录下,通过tftp引导内核,重启设备后可以看到如下启动信息: 50-1-4-1.png

50-1-4-2.png

通过Ping 测试网卡

linux@fsmp1a:$ ping www.baidu.com

50-1-4-3.png

如果设备不能接入以太网,可以ping主机