T536 PCIe 网卡调试

T536 PCIe 网卡调试

PCIe 主桥控制器

开启 PCIe 主桥控制器

先在 SoC 设备树文件中找出 PCIe 主桥控制器的相关节点,发现有两种模式的 PCIe :

    pcie: pcie@4800000 {
compatible = "allwinner,sunxi-pcie-v210-v2-rc";
#address-cells = <3>;
#size-cells = <2>;
bus-range = <0x0 0xff>;
reg = <0 0x04800000 0 0x480000>;
reg-names = "dbi";
...
clocks =  <&dcxo24M>, <&ccu CLK_PCIE_REF_AUX>,<&ccu CLK_PCIE_SLV>;
clock-names =  "hosc", "pclk_aux","pclk_slv";
resets = <&ccu RST_BUS_PCIE>, <&ccu RST_BUS_PCIE_PWRUP>;
reset-names = "pclk_rst", "pwrup_rst";
status = "disabled";
};

pcie_ep: pcie_ep@4800000 {
compatible = "allwinner,sunxi-pcie-v210-ep";
#address-cells = <3>;
#size-cells = <2>;
reg = <0 0x04800000 0 0x480000>,
     <0 0x20000000 0 0x8000000>;
reg-names = "dbi", "addr_space";
...
clocks =  <&dcxo24M>, <&ccu CLK_PCIE_REF_AUX>,<&ccu CLK_PCIE_SLV>;
clock-names =  "hosc", "pclk_aux","pclk_slv";
resets = <&ccu RST_BUS_PCIE>, <&ccu RST_BUS_PCIE_PWRUP>;
reset-names = "pclk_rst", "pwrup_rst";
status = "disabled";
};

这次仅调试 PCIe 的 RC 模式,RC 模式是 PCI 传统的类树状连接模式,而 EP 模式是 PCIe 独有的点对点连接模式。

在 board 设备树文件中,如果未发现这两个节点的开启状态,需要自己添加。我这里仅添加了 pcie@4800000 的开启状态。需要注意的是 pcie 和 pcie_ep 不能一起开启。

开启 PCIe 配置项

在内核配置单添加以下配置项:

CONFIG_AW_PCIE_RC=y
CONFIG_PCIEPORTBUS=y
CONFIG_PCIEAER=y
CONFIG_PCIE_ECRC=y
CONFIG_PCI_MESON=y

在 Buildroot 添加以下配置项,添加 PCIe 测试工具:

BR2_PACKAGE_PCIUTILS=y

初步运行

初步运行时发现以下错误:

[    5.274643] sunxi:pcie-4800000.pcie:[WARN]: Failed to get "reset-gpios"
[    5.282086] sunxi:pcie-4800000.pcie:[WARN]: Failed to get "wake-gpios"

检查底板硬件原理图,发现有这两个引脚:

以下是它们两的引出部分:

在 SOC GPIO 芯片中,发现:

查看 PI10~11 是否被其它设备复用,在终端使用以下命令查看:

cat /sys/kernel/debug/pinctrl/3604000.pinctrl/pinmux-pins

发现 TWI3 复用了 PI11~12 ,只能暂时把它的状态改为 "disabled" 。

另外,需要在 pcie 设备树节点中添加以下属性:

&pcie {
reset-gpios = <&pio PI 10 GPIO_ACTIVE_HIGH>;
wake-gpios = <&pio PI 11 GPIO_ACTIVE_LOW>;
status = "okay";
};

一般来说,reset 引脚是高电平,使能时被置低;wake 引脚是低电平,使能时被置高。

再次运行

进入终端,输入命令 lspci ,发现有主桥控制器了。

PCIe 网卡

初次调试

插入 PCIe 网卡在启动开发板,进入终端输入 lspci 未发现该从设备节点。和硬件工程师沟通,得知 PCIe 插槽的 I2C 引脚并未与底板连接。连接上之后,重新上电,进入终端输入 lspci 发现 PCIe 网卡。

PCIe 网卡 R8169 调试
开启相关配置

在内核配置单中,添加以下配置,开启 R8169 的驱动:

CONFIG_R8169=y

添加固件

在下列网址中下载最新固定包:

kernel/git/firmware/linux-firmware.git - Repository of firmware blobs for use with the Linux kernel

在固件包内,找到 rtl_nic 目录,把这个目录包括目录内的文件复制到开发板的文件系统的 /lib/firmware 内。

测试

插上 PCIe 网卡,上电开发板,进入终端输入 lspci

root@T536:~# lspci
00:00.0 PCI bridge: Device 1f6d:abcd (rev 01)
01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller (rev 05)

然后输入 ifconfig -a 发现 PCIe 网卡

root@T536:~# ifconfig -a
...
enp1s0    Link encap:Ethernet  HWaddr D0:E4:4C:99:06:38
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
...

接上网线,按顺序输入以下命令去动态获取 IPv4 :

ifconfig enp1s0 up
udhcpc -i enp1s0

ping 外网:

root@T536:~# ping qq.com
PING qq.com (113.108.81.189): 56 data bytes
64 bytes from 113.108.81.189: seq=0 ttl=54 time=6.007 ms
64 bytes from 113.108.81.189: seq=1 ttl=54 time=7.312 ms
64 bytes from 113.108.81.189: seq=2 ttl=54 time=6.963 ms
64 bytes from 113.108.81.189: seq=3 ttl=54 time=6.947 ms
^C
--- qq.com ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 6.007/6.807/7.312 ms

PCIe 网卡 Intel(R) 82575/82576 调试
开启相关配置

在内核配置单中,添加以下配置,开启 Intel(R) 82575/82576 的驱动:

CONFIG_IGB=y

测试
  1. 插上 PCIe 网卡,上电开发板。由于该网卡有双网口,输入 lspci 时,会发现有两个从设备。
  2. 输入 ifconfig -a ,也有两个网口,分别是 enp1s0f0 和 enp1s0f1 。
  3. 接上网线,开启对应网口,获取动态 IPv4 ,ping 外网。

以上操作和 R8169 的测试方法一致。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值