Other Parts Discussed in Thread: TLK105L, AM4377, AM4372
Tool/software: Linux
Hello:
The board designed by our company has two network ports, one is Gigabit ethernet. The network card chip KSZ9031 is connected to the rgmii1 interface of ARM4377. The mdio_clk and mdio_data are connected to B17 and A17 respectively and driven by CPSW. The network ports can work normally.
Another way is that the network of PRU uses network card chip TLK105L to connect to pru1_mii1 interface of ARM am4377. Di_clk and mdio_data are connected to A12 and B12 respectively and driven by prueth. After the system starts, the network card can not be recognized. The serial terminal reports the following red part of the error:
[ 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 /ocp/pruss@54400000/pru0@54434000 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 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
[ 11.183979] rpmsg_pru rpmsg0: new rpmsg_pru device: /dev/rpmsg_pru30
[ 11.184488] rpmsg_pru rpmsg1: new rpmsg_pru device: /dev/rpmsg_pru31
[ 11.578532] dwc3 48390000.usb: otg: primary host xhci-hcd.0.auto registered
[ 11.578540] dwc3 48390000.usb: otg: shared host xhci-hcd.0.auto registered
Referring to TI's AM437X-IDK development board in the device tree, Pru network configuration is added. The Linux kernel uses the 4.4.12 RTLinux kernel. lsmod can see that Pru network related drivers have been loaded. The complete start-up log information and device tree configuration file for terminal printing can be found in the annex. Please help to analyze what may be the problem. Thank you very much.
The following ifconfig has only one network card:
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)
Pru network configuration in am437x-gp-evm.dts device tree:
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>;
};
};
Pru network configuration in am4372.dtsi device tree:
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
3515.am437x-gp-evm.zip