各位好:
本公司设计的板卡有两路网口,一路是千兆的以太网,使用网卡芯片KSZ9031接到ARM43777的rgmii1接口上,mdio_clk和mdio_data分别连接B17和A17使用CPSW驱动,该网口能正常工作。
另一路是PRU的网络使用网卡芯片TLK105L接到ARM am4377的pru1_mii1接口上,dio_clk和mdio_data分别连接A12和B12使用prueth驱动,在系统启动后无法识别到该网卡,串口终端报了如下红色部分错误:
[ 10.809449] remoteproc1: Note: remoteproc is still under development and considered experimental.
[ 10.809452] remoteproc1: THE BINARY FORMAT IS NOT YET FINALIZED, and backward compatibility isn't yet guaranteed.
[ 10.861224] remoteproc1: registered virtio0 (type 7)
[ 10.861314] pru-rproc 54434000.pru0: PRU rproc node [url=]/ocp/pruss@54400000/pru0@54434000[/url] probed successfully
[ 10.876510] remoteproc2: 54438000.pru1 is available
[ 10.876515] remoteproc2: Note: remoteproc is still under development and considered experimental.
[ 10.876518] remoteproc2: THE BINARY FORMAT IS NOT YET FINALIZED, and backward compatibility isn't yet guaranteed.
[ 10.914194] remoteproc2: registered virtio1 (type 7)
[ 10.914264] pru-rproc 54438000.pru1: PRU rproc node ocp/pruss@54400000/pru1@54438000[/url] probed successfully
[ 11.038885] prueth pruss1_eth: couldn't connect to phy ocp/pruss@54400000/mdio@54432400/ethernet-phy@0
[ 11.038903] prueth pruss1_eth: netdev init ethernet-mii0 failed: -19
[ 11.038910] prueth pruss1_eth: no ethernet-mii1 node
[ 11.091686] remoteproc1: powering up 54434000.pru0
[ 11.092129] remoteproc1: Booting fw image am437x-pru1_0-fw, size 86264
[ 11.092219] ti-pruss 54400000.pruss: configured system_events = 0x1000000000000000 intr_channels = 0x00000001 host_intr = 0x00000001
[ 11.092225] remoteproc1: remote processor 54434000.pru0 is now up
[ 11.092606] virtio_rpmsg_bus virtio0: creating channel rpmsg-pru addr 0x1e
[ 11.099879] virtio_rpmsg_bus virtio0: rpmsg host is online
[ 11.100377] remoteproc2: powering up 54438000.pru1
[ 11.100831] remoteproc2: Booting fw image am437x-pru1_1-fw, size 86264
[ 11.100923] ti-pruss 54400000.pruss: configured system_events = 0x0800000000000000 intr_channels = 0x00000002 host_intr = 0x00000002
[ 11.100928] remoteproc2: remote processor 54438000.pru1 is now up
[ 11.101287] virtio_rpmsg_bus virtio1: creating channel rpmsg-pru addr 0x1f
[ 11.107582] virtio_rpmsg_bus virtio1: rpmsg host is online
设备树中参照了TI的AM437X-IDK开发板增加了pru网络的配置,linux内核使用的是4.4.12的RT Linux内核,lsmod看出pru网络相关驱动也已经加载。完整的终端打印的启动log信息及设备树配置文件见附件,请帮助分析下可能是什么问题,非常感谢!
如下ifconfig只有一块网卡
root@am437x-evm:~# ifconfig
eth0 Link encap:Ethernet HWaddr A0:F6:FD:1B:77:68
inet addr: 192.168.200.121 Bcast:0.0.0.0 Mask:255.255.255.0
inet6 addr:fe80::a2f6:fdff:fe1b:7768/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:777 errors:0 dropped:54 overruns:0 frame:0
TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:48430 (47.2 KiB) TX bytes:1552 (1.5 kiB)
Interrupt:239
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:10 errors:0 dropped:0 overruns:0 frame:0
TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:700 (700.0 B) TX bytes:700 (700.0 B)
am437x-gp-evm.dts设备树中pru网络配置:
/* Dual-MAC Ethernet application node on PRU-ICSS1 */
pruss1_eth {
compatible = "ti,am4372-prueth";
pruss = <&pruss1>;
sram = <&ocmcram_nocache>;
interrupt-parent = <&pruss1_intc>;
pinctrl-0 = <&pruss1_eth_default>;
pinctrl-names = "default";
pruss1_emac0: ethernet-mii0 {
phy-handle = <&pruss1_eth0_phy>;
phy-mode = "mii";
interrupts = <20>, <22>;
interrupt-names = "rx", "tx";
/* Filled in by bootloader */
local-mac-address = [00 00 00 00 00 00];
};
};
pruss1_eth_default: pruss1_eth_default {
pinctrl-single,pins = <
0x58 ( PIN_INPUT | MUX_MODE5 ) /* (E8) gpmc_a6.pr1_mii_mt1_clk */
0x54 ( PIN_OUTPUT | MUX_MODE5 ) /* (E7) gpmc_a5.pr1_mii1_txd0 */
0x50 ( PIN_OUTPUT | MUX_MODE5 ) /* (D7) gpmc_a4.pr1_mii1_txd1 */
0x4c ( PIN_OUTPUT | MUX_MODE5 ) /* (A4) gpmc_a3.pr1_mii1_txd2 */
0x48 ( PIN_OUTPUT | MUX_MODE5 ) /* (C6) gpmc_a2.pr1_mii1_txd3 */
0x6c ( PIN_INPUT | MUX_MODE5 ) /* (D8) gpmc_a11.pr1_mii1_rxd0 */
0x68 ( PIN_INPUT | MUX_MODE5 ) /* (G8) gpmc_a10.pr1_mii1_rxd1 */
0x64 ( PIN_INPUT | MUX_MODE5 ) /* (B4) gpmc_a9.pr1_mii1_rxd2 */
0x60 ( PIN_INPUT | MUX_MODE5 ) /* (F7) gpmc_a8.pr1_mii1_rxd3 */
0x40 ( PIN_OUTPUT | MUX_MODE5 ) /* (C3) gpmc_a0.pr1_mii1_txen */
0x5c ( PIN_INPUT | MUX_MODE5 ) /* (F6) gpmc_a7.pr1_mii_mr1_clk */
0x44 ( PIN_INPUT | MUX_MODE5 ) /* (C5) gpmc_a1.pr1_mii1_rxdv */
0x74 ( PIN_INPUT | MUX_MODE5 ) /* (B3) gpmc_wpn.pr1_mii1_rxer */
0x24c (PIN_INPUT | MUX_MODE5 ) /* (E24) gpio5_13.pr1_mii1_rxlink */
0x244 (PIN_INPUT | MUX_MODE5 ) /* (F23) gpio5_11.pr1_mii1_crs */
>;
};
pruss1_mdio_default: pruss1_mdio_default {
pinctrl-single,pins = <
0x8c ( PIN_OUTPUT | MUX_MODE5 ) /* (A12) gpmc_clk.pr1_mdio_mdclk */
0x88 ( PIN_INPUT | MUX_MODE5 ) /* (B12) gpmc_csn3.pr1_mdio_data */
0x248( PIN_INPUT_PULLUP | MUX_MODE7) /* gpio5_12 */
>;
};
& pruss1_mdio {
pinctrl-0 = <&pruss1_mdio_default>;
pinctrl-names = "default";
status = "okay";
reset-gpios = <&gpio5 12 GPIO_ACTIVE_LOW>;
reset-delay-us = <2>; /* PHY datasheet states 1uS min */
pruss1_eth0_phy: ethernet-phy@0 {
reg = <0>;
};
};
am4372.dtsi设备树中pru网络配置:
pruss1: pruss@54400000 {
compatible = "ti,am4372-pruss";
ti,hwmods = "pruss";
reg = <0x54400000 0x2000>,
<0x54402000 0x2000>,
<0x54410000 0x8000>,
<0x54420000 0x2000>,
<0x54426000 0x2000>,
<0x5442e000 0x31c>,
<0x54432000 0x58>;
reg-names = "dram0", "dram1", "shrdram2", "intc", "cfg",
"iep", "mii_rt";
#address-cells = <1>;
#size-cells = <1>;
ranges;
pruss1_intc: intc@54420000 {
compatible = "ti,am4372-pruss-intc";
interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH
GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH
GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH
GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH
GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH
GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH
GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "host2", "host3", "host4",
"host5", "host6", "host8",
"host9";
interrupt-controller;
#interrupt-cells = <1>;
};
pru1_0: pru0@54434000 {
compatible = "ti,am4372-pru";
reg = <0x54434000 0x3000>,
<0x54422000 0x400>,
<0x54422400 0x100>;
reg-names = "iram", "control", "debug";
mboxes = <&mailbox &mbox_pru1_0>;
};
pru1_1: pru1@54438000 {
compatible = "ti,am4372-pru";
reg = <0x54438000 0x3000>,
<0x54424000 0x400>,
<0x54424400 0x100>;
reg-names = "iram", "control", "debug";
mboxes = <&mailbox &mbox_pru1_1>;
};
pruss1_mdio: mdio@54432400 {
compatible = "ti,davinci_mdio";
reg = <0x54432400 0x90>;
clocks = <&dpll_core_m4_ck>;
clock-names = "fck";
bus_freq = <1000000>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
};
};
root@am437x-evm:~# lsmod
Module Size Used by
atemsys 12408 0
pvrsrvkm 406858 0
dwc3 62533 0
udc_core 12079 1 dwc3
pm33xx 3658 0
ti_am335x_adc 5643 0
ti_am335x_tsc 5965 0
snd_soc_simple_card 7736 0
prueth 14377 0
ti_emif_sram 6064 1 pm33xx
wkup_m3_ipc 7616 1 pm33xx
snd_soc_tlv320aic3x 48260 1
pru_rproc 9865 1 prueth
omap_rng 4353 0
am437x_vpfe 23581 0
edt_ft5x06 10689 0
omap_aes_driver 18260 0
rng_core 7698 1 omap_rng
ov2659 9618 0
pruss 11281 2 pru_rproc,prueth
dwc3_omap 4553 0
omap_des 11214 0
extcon 13929 2 dwc3,dwc3_omap
wkup_m3_rproc 3669 1
remoteproc 26956 5 pruss,wkup_m3_rproc,pru_rproc,prueth,wkup_m3_ipc
virtio 6677 1 remoteproc
virtio_ring 12035 1 remoteproc
omap_sham 20318 0
c_can_platform 6638 0
c_can 9450 1 c_can_platform
can_dev 12254 1 c_can
cryptodev 38437 0
ti_am335x_tscadc 6106 2 ti_am335x_adc,ti_am335x_tsc
omap_wdt 4655 0
am437x-gp-evm.zip