Part Number:TMDSICE3359
Tool/software: Linux
Hardware: AM3359 Industrial Communications Engine (ICE) www.ti.com/.../tmdsice3359
Soft: SDK 05.02.00.10, Linux RT
Hi!
I have to start the ICE on PRU-hardware PRP mode (PRU-ICSS, none-software PRP).
The compiler compiles the sdk finely.
What I made:
- (with root permissions and from the bin directory of the SDK) ./create-sdcard.sh.
- run the commands:
mkdir /media/vl/rootfs/sys/class
mkdir /media/vl/rootfs/sys/class/remoteproc
mkdir /media/vl/rootfs/sys/class/remoteproc/remoteproc1
mkdir /media/vl/rootfs/sys/class/remoteproc/remoteproc2
echo 'am335x-pru0-pruprp-fw.elf' > /media/vl/rootfs/sys/class/remoteproc/remoteproc1/firmware
echo 'am335x-pru1-pruprp-fw.elf' > /media/vl/rootfs/sys/class/remoteproc/remoteproc2/firmware
echo 'start' > /media/vl/rootfs/sys/class/remoteproc/remoteproc1/state
echo 'start' > /media/vl/rootfs/sys/class/remoteproc/remoteproc2/state
The ICE start (dmesg | grep pru):
[ 13.545180] pruss 4a300000.pruss: creating PRU cores and other child platform devices
[ 13.584988] of_get_named_gpiod_flags: parsed 'reset-gpios' property of node '/ocp/pruss_soc_bus@4a326004/pruss@0/mdio@32400[0]' - status (0)
[ 13.585105] of_get_named_gpiod_flags: can't parse 'reset-gpios' property of node '/ocp/pruss_soc_bus@4a326004/pruss@0/mdio@32400[1]'
[ 13.585115] of_get_named_gpiod_flags: can't parse 'reset-gpio' property of node '/ocp/pruss_soc_bus@4a326004/pruss@0/mdio@32400[1]'
[ 13.702569] remoteproc remoteproc1: 4a334000.pru is available
[ 13.702664] pru-rproc 4a334000.pru: PRU rproc node /ocp/pruss_soc_bus@4a326004/pruss@0/pru@34000 probed successfully
[ 13.718658] remoteproc remoteproc2: 4a338000.pru is available
[ 13.718735] pru-rproc 4a338000.pru: PRU rproc node /ocp/pruss_soc_bus@4a326004/pruss@0/pru@38000 probed successfully
[ 13.992666] prueth pruss_eth: pruss_fw_drop_untagged_vlan 0
[ 13.992679] prueth pruss_eth: pruss MC Mask (Port 0) ff:ff:ff:ff:ff:ff
[ 13.992687] prueth pruss_eth: pruss MC Mask (Port 1) ff:ff:ff:ff:ff:ff
[ 13.996139] prueth pruss_eth: TI PRU ethernet (type 0) driver initialized
[ 22.149922] remoteproc remoteproc2: powering up 4a338000.pru
[ 22.212831] remoteproc remoteproc2: Booting fw image ti-pruss/am335x-pru1-prueth-fw.elf, size 6696
[ 22.245129] pruss 4a300000.pruss: configured system_events[63-0] = 0x00600000.08a00000
[ 22.293317] pruss 4a300000.pruss: configured intr_channels = 0x0000032a host_intr = 0x000002aa
[ 22.327800] remoteproc remoteproc2: remote processor 4a338000.pru is now up
[ 22.445581] remoteproc remoteproc1: powering up 4a334000.pru
[ 22.473182] remoteproc remoteproc1: Booting fw image ti-pruss/am335x-pru0-prueth-fw.elf, size 6780
[ 22.514480] pruss 4a300000.pruss: configured system_events[63-0] = 0x00000600.04500000
[ 22.553091] pruss 4a300000.pruss: configured intr_channels = 0x000000d5 host_intr = 0x00000155
[ 22.599048] remoteproc remoteproc1: remote processor 4a334000.pru is now up
[ 23.450960] prueth pruss_eth eth1: Link is Up - 100Mbps/Full - flow control off
[ 23.690901] prueth pruss_eth eth0: Link is Up - 100Mbps/Full - flow control off
The ifconfig shows:
eth0 Link encap:Ethernet HWaddr 2C:6B:7D:46:58:3B
inet6 addr: fe80::2e6b:7dff:fe46:583b%775872/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:4 errors:0 dropped:0 overruns:0 frame:0
TX packets:47 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:280 (280.0 B) TX bytes:8169 (7.9 KiB)
eth1 Link encap:Ethernet HWaddr 2C:6B:7D:46:58:3D
inet6 addr: fe80::2e6b:7dff:fe46:583d%775872/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:9 errors:0 dropped:0 overruns:0 frame:0
TX packets:52 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1018 (1018.0 B) TX bytes:8967 (8.7 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1%775872/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:249 errors:0 dropped:0 overruns:0 frame:0
TX packets:249 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:19120 (18.6 KiB) TX bytes:19120 (18.6 KiB)
Then, acording to the software-dl.ti.com/.../Industrial_Protocols_HSR_PRP.html :
ifconfig eth0 down
ifconfig eth1 down
ethtool -K eth0 prp-rx-offload on
ethtool -K eth1 prp-rx-offload on
ifconfig eth0 up
ifconfig eth1 up
The listing:
ifconfig eth0 down
[ 266.302779] pruss 4a300000.pruss: unconfigured system_events[63-0] = 0x00000600.04500000
[ 266.311104] pruss 4a300000.pruss: unconfigured host_intr = 0x00000155
[ 266.318478] remoteproc remoteproc1: stopped remote processor 4a334000.pru
[ 266.331405] net eth0: stopped
root@am335x-evm:~# ifconfig eth1 down
[ 266.392312] pruss 4a300000.pruss: unconfigured system_events[63-0] = 0x00600000.08a00000
[ 266.401619] pruss 4a300000.pruss: unconfigured host_intr = 0x000002aa
[ 266.408115] remoteproc remoteproc2: stopped remote processor 4a338000.pru
[ 266.422267] net eth1: stopped
root@am335x-evm:~# ethtool -K eth0 prp-rx-offload on
root@am335x-evm:~# ethtool -K eth1 prp-rx-offload on
root@am335x-evm:~# ifconfig eth0 up
[ 266.582939] iep ptp bc clkid -1
[ 266.588731] remoteproc remoteproc1: powering up 4a334000.pru
[ 266.612592] remoteproc remoteproc1: Booting fw image ti-pruss/am335x-pru0-pruprp-fw.elf, size 7500
[ 266.625768] pruss 4a300000.pruss: configured system_events[63-0] = 0x00000600.00900000
[ 266.637543] pruss 4a300000.pruss: configured intr_channels = 0x00000095 host_intr = 0x00000115
[ 266.650126] remoteproc remoteproc1: remote processor 4a334000.pru is now up
[ 266.657171] remoteproc remoteproc2: powering up 4a338000.pru
[ 266.669251] remoteproc remoteproc2: Booting fw image ti-pruss/am335x-pru1-pruprp-fw.elf, size 7224
[ 266.678447] pruss 4a300000.pruss: configured system_events[63-0] = 0x00600000.01200000
[ 266.694096] pruss 4a300000.pruss: configured intr_channels = 0x0000012a host_intr = 0x0000022a
[ 266.706685] remoteproc remoteproc2: remote processor 4a338000.pru is now up
[ 266.717970] net eth0: started
[ 266.730235] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
root@am335x-evm:~# ifconfig eth1 up
[ 266.784543] net eth1: started
[ 266.797933] IPv6: ADDRCONF(NETDEV_UP): eth1: link is not ready
[ 266.807840] IPv6: ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready
root@am335x-evm:~# [ 267.349523] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[ 282.660159] NOHZ: local_softirq_pending 08
Then I run the command:
ip link add name prp0 type prp slave1 eth0 slave2 eth1 supervision 45
The listing:
root@am335x-evm:~# ip link add name prp0 type prp slave1 eth0 slave2 eth1 supervision 45
[ 342.664963] device eth0 entered promiscuous mode
[ 342.699585] device eth1 entered promiscuous mode
[ 342.749558] device eth0 left promiscuous mode
[ 342.779714] device eth1 left promiscuous mode
Then the command:
ifconfig prp0 192.168.14.165 up
The bad listing:
root@am335x-evm:~# ifconfig prp0 192.168.14.165 up
[ 342.880629] prp0: No slave devices configured
[ 342.885037] prp0: port invalid when doing set_rx_mode
[ 342.918590] prp0: port invalid when doing set_rx_mode
[ 342.951273] IPv6: ADDRCONF(NETDEV_UP): prp0: link is not ready
[ 342.957263] prp0: port invalid when doing set_rx_mode
[ 342.969302] prp0: port invalid when doing set_rx_mode
[ 343.118699] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[ 344.640708] prueth pruss_eth eth1: Link is Up - 100Mbps/Full - flow control off
[ 344.648266] IPv6: ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready
As you can see, the am335x-pru1-pruprp-fw.elf driver is run. But the last command, there are no critical messages.
As expected, there is no ping.
Please help.