Linux内核-网卡驱动移植
来自华清远见研发中心
FarSight(讨论 | 贡献)2020年7月27日 (一) 17:48的版本 (创建页面,内容为“==实验原理== STM32MP157A系列SoC集成一个千兆以太网媒体访问控制器,支持RMII和MII两种标准的PHY,FS-MP1A设备上外接了一个瑞昱的...”)
实验原理
STM32MP157A系列SoC集成一个千兆以太网媒体访问控制器,支持RMII和MII两种标准的PHY,FS-MP1A设备上外接了一个瑞昱的千兆以太网PHY芯片RTL8211F,原理图如下:
查看原理图得出RTL8211F数据管脚与STM32MP157A的管脚对应关系如下:
实验目的
熟悉基于Linux操作系统下的网卡驱动移植配置过程。
实验平台
华清远见开发环境,FS-MP1A平台;
实验步骤
- 添加网卡设备树配置。
修改arch/arm/dts/stm32mp15xx-fsmp1x.dts文件
在文件末尾添加如下内容:
ðernet0 { status = "okay"; pinctrl-0 = <ðernet0_rgmii_pins_a>; pinctrl-1 = <ðernet0_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引导内核,重启设备后可以看到如下启动信息:
通过Ping 测试网卡
linux@fsmp1a:$ ping www.baidu.com
如果设备不能接入以太网,可以ping主机