This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

PROCESSOR-SDK-AM64X: AM64X-GP-EVM boot issue after changing k3-am642-evm.dts(while fixing initial issue of Error 22 while trying to load from R5F)

Part Number: PROCESSOR-SDK-AM64X
Other Parts Discussed in Thread: SYSCONFIG, TMDS64EVM

I referred to the comments in the thread PROCESSOR-SDK-AM64X: Loading R5 FW by Linux - SOC clock issue - Processors forum - Processors - TI E2E support forums

Below are the changes that I made to the k3-am642-evm.dts

diff --git a/arch/arm64/boot/dts/ti/k3-am642-evm.dts b/arch/arm64/boot/dts/ti/k3-am642-evm.dts
index 2bd50d4bb2..50d707073c 100644
--- a/arch/arm64/boot/dts/ti/k3-am642-evm.dts
+++ b/arch/arm64/boot/dts/ti/k3-am642-evm.dts
@@ -21,11 +21,6 @@ chosen {
 		bootargs = "console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000";
 	};
 
-	aliases {
-		ethernet2 = &icssg1_emac0;
-		ethernet3 = &icssg1_emac1;
-	};
-
 	memory@80000000 {
 		device_type = "memory";
 		/* 2G RAM */
@@ -219,65 +214,7 @@ transceiver2: can-phy1 {
 	};
 
 	icssg1_eth: icssg1-eth {
-		compatible = "ti,am642-icssg-prueth";
-		pinctrl-names = "default";
-		pinctrl-0 = <&icssg1_rgmii1_pins_default>;
-
-		sram = <&oc_sram>;
-		ti,prus = <&pru1_0>, <&rtu1_0>, <&tx_pru1_0>, <&pru1_1>, <&rtu1_1>, <&tx_pru1_1>;
-		firmware-name = "ti-pruss/am65x-sr2-pru0-prueth-fw.elf",
-				"ti-pruss/am65x-sr2-rtu0-prueth-fw.elf",
-				"ti-pruss/am65x-sr2-txpru0-prueth-fw.elf",
-				"ti-pruss/am65x-sr2-pru1-prueth-fw.elf",
-				"ti-pruss/am65x-sr2-rtu1-prueth-fw.elf",
-				"ti-pruss/am65x-sr2-txpru1-prueth-fw.elf";
-
-		ti,pruss-gp-mux-sel = <2>,	/* MII mode */
-				      <2>,
-				      <2>,
-				      <2>,	/* MII mode */
-				      <2>,
-				      <2>;
-
-		mii-g-rt = <&icssg1_mii_g_rt>;
-		mii-rt = <&icssg1_mii_rt>;
-		iep = <&icssg1_iep0>,  <&icssg1_iep1>;
-
-		interrupt-parent = <&icssg1_intc>;
-		interrupts = <24 0 2>, <25 1 3>;
-		interrupt-names = "tx_ts0", "tx_ts1";
-
-		dmas = <&main_pktdma 0xc200 15>, /* egress slice 0 */
-		       <&main_pktdma 0xc201 15>, /* egress slice 0 */
-		       <&main_pktdma 0xc202 15>, /* egress slice 0 */
-		       <&main_pktdma 0xc203 15>, /* egress slice 0 */
-		       <&main_pktdma 0xc204 15>, /* egress slice 1 */
-		       <&main_pktdma 0xc205 15>, /* egress slice 1 */
-		       <&main_pktdma 0xc206 15>, /* egress slice 1 */
-		       <&main_pktdma 0xc207 15>, /* egress slice 1 */
-		       <&main_pktdma 0x4200 15>, /* ingress slice 0 */
-		       <&main_pktdma 0x4201 15>, /* ingress slice 1 */
-		       <&main_pktdma 0x4202 0>, /* mgmnt rsp slice 0 */
-		       <&main_pktdma 0x4203 0>; /* mgmnt rsp slice 1 */
-		dma-names = "tx0-0", "tx0-1", "tx0-2", "tx0-3",
-			    "tx1-0", "tx1-1", "tx1-2", "tx1-3",
-			    "rx0", "rx1",
-			    "rxmgm0", "rxmgm1";
-
-		icssg1_emac0: ethernet-mii0 {
-			phy-handle = <&icssg1_phy1>;
-			phy-mode = "rgmii-rxid";
-			syscon-rgmii-delay = <&main_conf 0x4110>;
-			/* Filled in by bootloader */
-			local-mac-address = [00 00 00 00 00 00];
-		};
-
-		icssg1_emac1: ethernet-mii1 {
-			syscon-rgmii-delay = <&main_conf 0x4114>;
-			/* Filled in by bootloader */
-			local-mac-address = [00 00 00 00 00 00];
-			status = "disabled";
-		};
+		status = "disabled";
 	};
 };
 
@@ -285,18 +222,21 @@ &main_r5fss0_core0 {
 	mboxes = <&mailbox0_cluster2 &mbox_main_r5fss0_core0>;
 	memory-region = <&main_r5fss0_core0_dma_memory_region>,
 			<&main_r5fss0_core0_memory_region>;
+	sram = <&main_r5fss0_core0_sram>;
 };
 
 &main_r5fss0_core1 {
 	mboxes = <&mailbox0_cluster2 &mbox_main_r5fss0_core1>;
 	memory-region = <&main_r5fss0_core1_dma_memory_region>,
 			<&main_r5fss0_core1_memory_region>;
+	sram = <&main_r5fss0_core1_sram>;
 };
 
 &main_r5fss1_core0 {
 	mboxes = <&mailbox0_cluster4 &mbox_main_r5fss1_core0>;
 	memory-region = <&main_r5fss1_core0_dma_memory_region>,
 			<&main_r5fss1_core0_memory_region>;
+	sram = <&main_r5fss1_core0_sram>;
 };
 
 &main_r5fss1_core1 {
@@ -309,6 +249,7 @@ &mcu_m4fss {
 	mboxes = <&mailbox0_cluster6 &mbox_m4_0>;
 	memory-region = <&mcu_m4fss_dma_memory_region>,
 			<&mcu_m4fss_memory_region>;
+	sram = <&main_r5fss1_core1_sram>;
 };
 
 &main_pmx0 {
@@ -398,22 +339,6 @@ AM64X_IOPAD(0x02a8, PIN_OUTPUT, 0) /* (E19) USB0_DRVVBUS */
 		>;
 	};
 
-	ospi0_pins_default: ospi0-pins-default {
-		pinctrl-single,pins = <
-			AM64X_IOPAD(0x0000, PIN_OUTPUT, 0) /* (N20) OSPI0_CLK */
-			AM64X_IOPAD(0x002c, PIN_OUTPUT, 0) /* (L19) OSPI0_CSn0 */
-			AM64X_IOPAD(0x000c, PIN_INPUT, 0) /* (M19) OSPI0_D0 */
-			AM64X_IOPAD(0x0010, PIN_INPUT, 0) /* (M18) OSPI0_D1 */
-			AM64X_IOPAD(0x0014, PIN_INPUT, 0) /* (M20) OSPI0_D2 */
-			AM64X_IOPAD(0x0018, PIN_INPUT, 0) /* (M21) OSPI0_D3 */
-			AM64X_IOPAD(0x001c, PIN_INPUT, 0) /* (P21) OSPI0_D4 */
-			AM64X_IOPAD(0x0020, PIN_INPUT, 0) /* (P20) OSPI0_D5 */
-			AM64X_IOPAD(0x0024, PIN_INPUT, 0) /* (N18) OSPI0_D6 */
-			AM64X_IOPAD(0x0028, PIN_INPUT, 0) /* (M17) OSPI0_D7 */
-			AM64X_IOPAD(0x0008, PIN_INPUT, 0) /* (N19) OSPI0_DQS */
-		>;
-	};
-
 	main_mcan0_pins_default: main-mcan0-pins-default {
 		pinctrl-single,pins = <
 			AM64X_IOPAD(0x0254, PIN_INPUT, 0) /* (B17) MCAN0_RX */
@@ -428,13 +353,6 @@ AM64X_IOPAD(0x0258, PIN_OUTPUT, 0) /* (C17) MCAN1_TX */
 		>;
 	};
 
-	icssg1_mdio1_pins_default: icssg1-mdio1-pins-default {
-		pinctrl-single,pins = <
-			AM64X_IOPAD(0x015c, PIN_OUTPUT, 0) /* (Y6) PRG1_MDIO0_MDC */
-			AM64X_IOPAD(0x0158, PIN_INPUT, 0) /* (AA6) PRG1_MDIO0_MDIO */
-		>;
-	};
-
 	icssg1_rgmii1_pins_default: icssg1-rgmii1-pins-default {
 		pinctrl-single,pins = <
 			AM64X_IOPAD(0x00b8, PIN_INPUT, 2) /* (Y7) PRG1_PRU0_GPO0.PRG1_RGMII1_RD0 */
@@ -724,28 +642,11 @@ &pcie0_ep {
 
 &tscadc0 {
 	/* ADC is reserved for R5 usage */
-	status = "reserved";
+	status = "disabled";
 };
 
 &ospi0 {
-	pinctrl-names = "default";
-	pinctrl-0 = <&ospi0_pins_default>;
-
-	flash@0{
-		compatible = "jedec,spi-nor";
-		reg = <0x0>;
-		spi-tx-bus-width = <8>;
-		spi-rx-bus-width = <8>;
-		spi-max-frequency = <25000000>;
-		cdns,tshsl-ns = <60>;
-		cdns,tsd2d-ns = <60>;
-		cdns,tchsh-ns = <60>;
-		cdns,tslch-ns = <60>;
-		cdns,read-delay = <4>;
-		cdns,phy-mode;
-		#address-cells = <1>;
-		#size-cells = <1>;
-	};
+	status = "disabled";
 };
 
 &main_mcan0 {
@@ -760,19 +661,39 @@ &main_mcan1 {
 	phys = <&transceiver2>;
 };
 
+/* Modify sram label present in k3-am64-main.dtsi */
+&oc_sram {
+    main_r5fss0_core0_sram: r5f-sram@80000 {
+        reg = <0x80000 0x40000>;
+    };
+    
+    main_r5fss0_core1_sram: r5f-sram@c0000 {
+        reg = <0xc0000 0x40000>;
+    };
+    
+    main_r5fss1_core0_sram: r5f-sram@100000 {
+        reg = <0x100000 0x40000>;
+    };
+    
+    main_r5fss1_core1_sram: r5f-sram@140000 {
+        reg = <0x140000 0x40000>;
+    };
+};
+
+&icssg0 {
+	status = "disabled";
+};
+
+&icssg1 {
+	status = "disabled";
+};
+
 &icssg0_mdio {
 	status = "disabled";
 };
 
 &icssg1_mdio {
-	pinctrl-names = "default";
-	pinctrl-0 = <&icssg1_mdio1_pins_default>;
-
-	icssg1_phy1: ethernet-phy@0 {
-		reg = <0xf>;
-		tx-internal-delay-ps = <250>;
-		rx-internal-delay-ps = <2000>;
-	};
+	status = "disabled";
 };
 
 &icssg1_iep0 {

When I copied it to the /boot folder of the AM64X-GP-EVM, I see that the boot gets stuck. Below are the logs-

switch to partitions #0, OK
mmc1 is current device
SD/MMC found on device 1
Failed to load 'boot.scr'
1490 bytes read in 5 ms (291 KiB/s)
Loaded env from uEnv.txt
Importing environment from mmc1 ...
Running uenvcmd ...
1 bytes read in 3 ms (0 Bytes/s)
Already setup.
19147264 bytes read in 811 ms (22.5 MiB/s)
42795 bytes read in 11 ms (3.7 MiB/s)
## Flattened Device Tree blob at 88000000
   Booting using the fdt blob at 0x88000000
   Loading Device Tree to 000000008fef2000, end 000000008fffffff ... OK

Starting kernel ...

[    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
[    0.000000] Linux version 5.10.168-g2c23e6c538 (oe-user@oe-host) (aarch64-none-linux-gnu-gcc (GNU Toolchain for the A-profile Architecture 9.2-2019.12 (arm-9.10)) 9.2.1 20191025, GNU ld (GNU Toolchain for the A-profile Architecture 9.2-2019.12 (arm-9.10)) 2.33.1.20191209) #1 SMP PREEMPT Mon Feb 27 14:16:24 UTC 2023
[    0.000000] Machine model: Texas Instruments AM642 EVM
[    0.000000] earlycon: ns16550a0 at MMIO32 0x0000000002800000 (options '')
[    0.000000] printk: bootconsole [ns16550a0] enabled
[    0.000000] efi: UEFI not found.
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a0000000, size 1 MiB
[    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a0000000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a0100000, size 15 MiB
[    0.000000] OF: reserved mem: initialized node r5f-memory@a0100000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a1000000, size 1 MiB
[    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a1000000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a1100000, size 15 MiB
[    0.000000] OF: reserved mem: initialized node r5f-memory@a1100000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a2000000, size 1 MiB
[    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a2000000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a2100000, size 15 MiB
[    0.000000] OF: reserved mem: initialized node r5f-memory@a2100000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a3000000, size 1 MiB
[    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a3000000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a3100000, size 15 MiB
[    0.000000] OF: reserved mem: initialized node r5f-memory@a3100000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a4000000, size 1 MiB
[    0.000000] OF: reserved mem: initialized node m4f-dma-memory@a4000000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x00000000a4100000, size 15 MiB
[    0.000000] OF: reserved mem: initialized node m4f-memory@a4100000, compatible id shared-dma-pool
[    0.000000] OF: /bus@f4000/pcie@f102000: Missing device_type
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x0000000080000000-0x00000000ffffffff]
[    0.000000]   DMA32    empty
[    0.000000]   Normal   empty
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000080000000-0x00000000ffffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x00000000ffffffff]
[    0.000000] cma: Reserved 512 MiB at 0x00000000dd000000
[    0.000000] psci: probing for conduit method from DT.
[    0.000000] psci: PSCIv1.1 detected in firmware.
[    0.000000] psci: Using standard PSCI v0.2 function IDs
[    0.000000] psci: Trusted OS migration not required
[    0.000000] psci: SMC Calling Convention v1.2
[    0.000000] /cpus/cpu@1: missing enable-method property
[    0.000000] percpu: Embedded 22 pages/cpu s51288 r8192 d30632 u90112
[    0.000000] Detected VIPT I-cache on CPU0
[    0.000000] CPU features: detected: ARM erratum 845719
[    0.000000] CPU features: detected: GIC system register CPU interface
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 516096
[    0.000000] Kernel command line: console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000 mtdparts=fc40000.spi.0:1m(ospi.tiboot3),2m(ospi.tispl),4m(ospi.u-boot),256k(ospi.env),256k(ospi.env.backup),57088k@8m(ospi.rootfs),256k(ospi.phypattern);omap2-nand.0:2m(NAND.tiboot3),2m(NAND.tispl),2m(NAND.tiboot3.backup),4m(NAND.u-boot),256k(NAND.u-boot-env),256k(NAND.u-boot-env.backup),-(NAND.file-system) root=PARTUUID=47b6d3e0-02 rw rootfstype=ext4 rootwait
[    0.000000] Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes, linear)
[    0.000000] Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes, linear)
[    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[    0.000000] Memory: 1398696K/2097152K available (11200K kernel code, 1162K rwdata, 4308K rodata, 1920K init, 431K bss, 174168K reserved, 524288K cma-reserved)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[    0.000000] rcu: Preemptible hierarchical RCU implementation.
[    0.000000] rcu:     RCU event tracing is enabled.
[    0.000000] rcu:     RCU restricting CPUs from NR_CPUS=256 to nr_cpu_ids=1.
[    0.000000]  Trampoline variant of Tasks RCU enabled.
[    0.000000]  Tracing variant of Tasks RCU enabled.
[    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
[    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=1
[    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
[    0.000000] GICv3: GIC: Using split EOI/Deactivate mode
[    0.000000] GICv3: 256 SPIs implemented
[    0.000000] GICv3: 0 Extended SPIs implemented
[    0.000000] GICv3: Distributor has no Range Selector support
[    0.000000] GICv3: 16 PPIs implemented
[    0.000000] GICv3: CPU0: found redistributor 0 region 0:0x0000000001840000
[    0.000000] ITS [mem 0x01820000-0x0182ffff]
[    0.000000] GIC: enabling workaround for ITS: Socionext Synquacer pre-ITS
[    0.000000] ITS@0x0000000001820000: Devices Table too large, reduce ids 20->19
[    0.000000] ITS@0x0000000001820000: allocated 524288 Devices @80800000 (flat, esz 8, psz 64K, shr 0)
[    0.000000] ITS: using cache flushing for cmd queue
[    0.000000] GICv3: using LPI property table @0x0000000080030000
[    0.000000] GIC: using cache flushing for LPI property table
[    0.000000] GICv3: CPU0: using allocated LPI pending table @0x0000000080040000
[    0.000000] arch_timer: cp15 timer(s) running at 200.00MHz (phys).
[    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x2e2049d3e8, max_idle_ns: 440795210634 ns
[    0.000005] sched_clock: 56 bits at 200MHz, resolution 5ns, wraps every 4398046511102ns
[    0.008550] Console: colour dummy device 80x25
[    0.013145] Calibrating delay loop (skipped), value calculated using timer frequency.. 400.00 BogoMIPS (lpj=800000)
[    0.023820] pid_max: default: 32768 minimum: 301
[    0.028641] LSM: Security Framework initializing
[    0.033429] Mount-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
[    0.041008] Mountpoint-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
[    0.050142] /cpus/cpu-map/cluster0/core0: Can't get CPU for leaf core
[    0.057521] rcu: Hierarchical SRCU implementation.
[    0.062748] Platform MSI: msi-controller@1820000 domain created
[    0.069117] PCI/MSI: /bus@f4000/interrupt-controller@1800000/msi-controller@1820000 domain created
[    0.078392] EFI services will not be available.
[    0.083187] smp: Bringing up secondary CPUs ...
[    0.087829] smp: Brought up 1 node, 1 CPU
[    0.091924] SMP: Total of 1 processors activated.
[    0.096740] CPU features: detected: 32-bit EL0 Support
[    0.101994] CPU features: detected: CRC32 instructions
[    0.115529] CPU: All CPU(s) started at EL2
[    0.119738] alternatives: patching kernel code
[    0.125936] devtmpfs: initialized
[    0.131624] Duplicate name in mmc@fa00000, renamed to "#1"
[    0.137293] Duplicate name in mmc@fa00000, renamed to "#2"
[    0.142910] Duplicate name in mmc@fa00000, renamed to "#3"
[    0.148531] Duplicate name in mmc@fa00000, renamed to "#4"
[    0.154195] Duplicate name in ethernet@8000000, renamed to "#1"
[    0.160302] Duplicate name in port@1, renamed to "#1"
[    0.165474] Duplicate name in port@1, renamed to "#2"
[    0.170644] Duplicate name in port@1, renamed to "#3"
[    0.175816] Duplicate name in port@1, renamed to "#4"
[    0.180988] Duplicate name in port@1, renamed to "#5"
[    0.186162] Duplicate name in port@1, renamed to "#6"
[    0.191347] Duplicate name in port@2, renamed to "#1"
[    0.196514] Duplicate name in port@2, renamed to "#2"
[    0.201683] Duplicate name in port@2, renamed to "#3"
[    0.206856] Duplicate name in port@2, renamed to "#4"
[    0.212028] Duplicate name in port@2, renamed to "#5"
[    0.217239] Duplicate name in ethernet-phy@0, renamed to "#1"
[    0.223144] Duplicate name in cpts@3d000, renamed to "#1"
[    0.228667] Duplicate name in cpts@3d000, renamed to "#2"
[    0.234191] Duplicate name in cpts@3d000, renamed to "#3"
[    0.239742] Duplicate name in cpts@39000000, renamed to "#1"
[    0.245537] Duplicate name in cpts@39000000, renamed to "#2"
[    0.251328] Duplicate name in cpts@39000000, renamed to "#3"
[    0.257202] Duplicate name in mailbox@29020000, renamed to "#1"
[    0.263272] Duplicate name in mbox-main-r5fss0-core0, renamed to "#1"
[    0.269877] Duplicate name in mbox-main-r5fss0-core1, renamed to "#1"
[    0.276491] Duplicate name in mailbox@29030000, renamed to "#1"
[    0.282573] Duplicate name in mailbox@29040000, renamed to "#1"
[    0.288640] Duplicate name in mbox-main-r5fss1-core0, renamed to "#1"
[    0.295242] Duplicate name in mbox-main-r5fss1-core1, renamed to "#1"
[    0.301860] Duplicate name in mailbox@29050000, renamed to "#1"
[    0.307937] Duplicate name in mailbox@29060000, renamed to "#1"
[    0.314007] Duplicate name in mbox-m4-0, renamed to "#1"
[    0.319464] Duplicate name in mailbox@29070000, renamed to "#1"
[    0.325586] Duplicate name in r5f@78000000, renamed to "#1"
[    0.331287] Duplicate name in r5f@78000000, renamed to "#2"
[    0.337026] Duplicate name in r5f@78200000, renamed to "#1"
[    0.342725] Duplicate name in r5f@78200000, renamed to "#2"
[    0.348490] Duplicate name in r5f@78400000, renamed to "#1"
[    0.354191] Duplicate name in r5f@78400000, renamed to "#2"
[    0.359933] Duplicate name in r5f@78600000, renamed to "#1"
[    0.365633] Duplicate name in r5f@78600000, renamed to "#2"
[    0.371378] Duplicate name in wiz@f000000, renamed to "#1"
[    0.376991] Duplicate name in wiz@f000000, renamed to "#2"
[    0.382634] Duplicate name in serdes@f000000, renamed to "#1"
[    0.388512] Duplicate name in serdes@f000000, renamed to "#2"
[    0.394417] Duplicate name in phy@0, renamed to "#1"
[    0.399528] Duplicate name in pcie@f102000, renamed to "#1"
[    0.405229] Duplicate name in pcie@f102000, renamed to "#2"
[    0.410930] Duplicate name in pcie@f102000, renamed to "#3"
[    0.416653] Duplicate name in pcie@f102000, renamed to "#4"
[    0.422358] Duplicate name in pcie@f102000, renamed to "#5"
[    0.428065] Duplicate name in pcie@f102000, renamed to "#6"
[    0.433773] Duplicate name in pcie@f102000, renamed to "#7"
[    0.439489] Duplicate name in pcie@f102000, renamed to "#8"
[    0.445210] Duplicate name in pcie@f102000, renamed to "#9"
[    0.450925] Duplicate name in pcie@f102000, renamed to "#10"
[    0.456732] Duplicate name in pcie@f102000, renamed to "#11"
[    0.462539] Duplicate name in pcie@f102000, renamed to "#12"
[    0.468377] Duplicate name in pcie-ep@f102000, renamed to "#1"
[    0.474344] Duplicate name in pcie-ep@f102000, renamed to "#2"
[    0.480326] Duplicate name in pcie-ep@f102000, renamed to "#3"
[    0.486298] Duplicate name in pcie-ep@f102000, renamed to "#4"
[    0.492271] Duplicate name in pcie-ep@f102000, renamed to "#5"
[    0.498265] Duplicate name in cdns-usb@f900000, renamed to "#1"
[    0.504333] Duplicate name in cdns-usb@f900000, renamed to "#2"
[    0.510391] Duplicate name in cdns-usb@f900000, renamed to "#3"
[    0.516467] Duplicate name in usb@f400000, renamed to "#1"
[    0.522112] Duplicate name in tscadc@28001000, renamed to "#1"
[    0.528079] Duplicate name in tscadc@28001000, renamed to "#2"
[    0.534106] Duplicate name in spi@fc40000, renamed to "#1"
[    0.539719] Duplicate name in spi@fc40000, renamed to "#2"
[    0.545347] Duplicate name in spi@fc40000, renamed to "#3"
[    0.550962] Duplicate name in spi@fc40000, renamed to "#4"
[    0.556580] Duplicate name in spi@fc40000, renamed to "#5"
[    0.562215] Duplicate name in flash@0, renamed to "#1"
[    0.567475] Duplicate name in flash@0, renamed to "#2"
[    0.572731] Duplicate name in flash@0, renamed to "#3"
[    0.577992] Duplicate name in flash@0, renamed to "#4"
[    0.583256] Duplicate name in flash@0, renamed to "#5"
[    0.588521] Duplicate name in flash@0, renamed to "#6"
[    0.593785] Duplicate name in flash@0, renamed to "#7"
[    0.599144] Duplicate name in can@20701000, renamed to "#1"
[    0.604885] Duplicate name in can@20711000, renamed to "#1"
[    0.610612] Duplicate name in watchdog@e000000, renamed to "#1"
[    0.616692] Duplicate name in watchdog@e010000, renamed to "#1"
[    0.622860] Duplicate name in coreclk-mux@3c, renamed to "#1"
[    0.628761] Duplicate name in iepclk-mux@30, renamed to "#1"
[    0.634924] Duplicate name in coreclk-mux@3c, renamed to "#1"
[    0.640830] Duplicate name in iepclk-mux@30, renamed to "#1"
[    0.646946] Duplicate name in ethernet-phy@0, renamed to "#1"
[    0.653197] Duplicate name in memory-controller@3b000000, renamed to "#1"
[    0.660205] Duplicate name in main0-thermal, renamed to "#1"
[    0.665995] Duplicate name in main0-thermal, renamed to "#2"
[    0.671805] Duplicate name in main0-crit, renamed to "#1"
[    0.677345] Duplicate name in main1-thermal, renamed to "#1"
[    0.683134] Duplicate name in main1-thermal, renamed to "#2"
[    0.688939] Duplicate name in main1-crit, renamed to "#1"
[    0.694554] Duplicate name in cpu@0, renamed to "#1"
[    0.699637] Duplicate name in cpu@0, renamed to "#2"
[    0.704720] Duplicate name in cpu@0, renamed to "#3"
[    0.709802] Duplicate name in cpu@0, renamed to "#4"
[    0.714887] Duplicate name in cpu@0, renamed to "#5"
[    0.719973] Duplicate name in cpu@0, renamed to "#6"
[    0.725062] Duplicate name in cpu@0, renamed to "#7"
[    0.730152] Duplicate name in cpu@0, renamed to "#8"
[    0.735247] Duplicate name in cpu@1, renamed to "#1"
[    0.740327] Duplicate name in cpu@1, renamed to "#2"
[    0.745407] Duplicate name in cpu@1, renamed to "#3"
[    0.750490] Duplicate name in cpu@1, renamed to "#4"
[    0.755577] Duplicate name in cpu@1, renamed to "#5"
[    0.760664] Duplicate name in cpu@1, renamed to "#6"
[    0.765751] Duplicate name in cpu@1, renamed to "#7"
[    0.770841] Duplicate name in cpu@1, renamed to "#8"
[    0.775942] Duplicate name in l2-cache0, renamed to "#1"
[    0.781378] Duplicate name in l2-cache0, renamed to "#2"
[    0.786812] Duplicate name in l2-cache0, renamed to "#3"
[    0.792298] Duplicate name in optee@9e800000, renamed to "#1"
[    0.798386] Duplicate name in ipc-memories@a5000000, renamed to "#1"
[    0.804901] Duplicate name in fixedregulator-evm12v0, renamed to "#1"
[    0.811490] Duplicate name in fixedregulator-evm12v0, renamed to "#2"
[    0.818079] Duplicate name in fixedregulator-evm12v0, renamed to "#3"
[    0.824673] Duplicate name in fixedregulator-evm12v0, renamed to "#4"
[    0.831281] Duplicate name in fixedregulator-vsys5v0, renamed to "#1"
[    0.837869] Duplicate name in fixedregulator-vsys5v0, renamed to "#2"
[    0.844461] Duplicate name in fixedregulator-vsys5v0, renamed to "#3"
[    0.851053] Duplicate name in fixedregulator-vsys5v0, renamed to "#4"
[    0.857647] Duplicate name in fixedregulator-vsys5v0, renamed to "#5"
[    0.864244] Duplicate name in fixedregulator-vsys3v3, renamed to "#1"
[    0.870836] Duplicate name in fixedregulator-vsys3v3, renamed to "#2"
[    0.877425] Duplicate name in fixedregulator-vsys3v3, renamed to "#3"
[    0.884015] Duplicate name in fixedregulator-vsys3v3, renamed to "#4"
[    0.890609] Duplicate name in fixedregulator-vsys3v3, renamed to "#5"
[    0.897210] Duplicate name in fixed-regulator-sd, renamed to "#1"
[    0.903444] Duplicate name in fixed-regulator-sd, renamed to "#2"
[    0.909679] Duplicate name in fixed-regulator-sd, renamed to "#3"
[    0.915915] Duplicate name in fixed-regulator-sd, renamed to "#4"
[    0.922152] Duplicate name in fixed-regulator-sd, renamed to "#5"
[    0.928405] Duplicate name in fixedregulator-vddb, renamed to "#1"
[    0.934732] Duplicate name in fixedregulator-vddb, renamed to "#2"
[    0.941055] Duplicate name in fixedregulator-vddb, renamed to "#3"
[    0.947380] Duplicate name in fixedregulator-vddb, renamed to "#4"
[    0.953706] Duplicate name in fixedregulator-vddb, renamed to "#5"
[    0.960057] Duplicate name in led-0, renamed to "#1"
[    0.965137] Duplicate name in led-0, renamed to "#2"
[    0.970218] Duplicate name in led-0, renamed to "#3"
[    0.975326] Duplicate name in mdio-mux-1, renamed to "#1"
[    0.980886] Duplicate name in ethernet-phy@3, renamed to "#1"
[    0.986785] Duplicate name in can-phy0, renamed to "#1"
[    0.992150] Duplicate name in can-phy1, renamed to "#1"
[    0.997519] Duplicate name in icssg1-eth, renamed to "#1"
[    1.003048] Duplicate name in icssg1-eth, renamed to "#2"
[    1.008571] Duplicate name in icssg1-eth, renamed to "#3"
[    1.014096] Duplicate name in icssg1-eth, renamed to "#4"
[    1.019629] Duplicate name in icssg1-eth, renamed to "#5"
[    1.025179] Duplicate name in ethernet-mii0, renamed to "#1"
[    1.030973] Duplicate name in ethernet-mii0, renamed to "#2"
[    1.036764] Duplicate name in ethernet-mii0, renamed to "#3"
[    1.042565] Duplicate name in ethernet-mii1, renamed to "#1"
[    1.049480] KASLR disabled due to lack of seed
[    1.054291] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
[    1.064263] futex hash table entries: 256 (order: 2, 16384 bytes, linear)
[    1.086834] pinctrl core: initialized pinctrl subsystem
[    1.092931] DMI not present or invalid.
[    1.097667] NET: Registered protocol family 16
[    1.103877] DMA: preallocated 256 KiB GFP_KERNEL pool for atomic allocations
[    1.111273] DMA: preallocated 256 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations
[    1.119360] DMA: preallocated 256 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
[    1.128136] thermal_sys: Registered thermal governor 'step_wise'
[    1.128143] thermal_sys: Registered thermal governor 'power_allocator'
[    1.134487] thermal_sys: main0-thermal: missing polling-delay-passive property
[    1.148536] thermal_sys: failed to build thermal zone main0-thermal: -22
[    1.155385] thermal_sys: main1-thermal: missing polling-delay-passive property
[    1.162767] thermal_sys: failed to build thermal zone main1-thermal: -22
[    1.169685] cpuidle: using governor menu
[    1.173970] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
[    1.180948] ASID allocator initialised with 65536 entries
[    1.215090] HugeTLB registered 1.00 GiB page size, pre-allocated 0 pages
[    1.222084] HugeTLB registered 32.0 MiB page size, pre-allocated 0 pages
[    1.228941] HugeTLB registered 2.00 MiB page size, pre-allocated 0 pages
[    1.235788] HugeTLB registered 64.0 KiB page size, pre-allocated 0 pages
[    1.244063] cryptd: max_cpu_qlen set to 1000
[    1.252089] k3-chipinfo 43000014.chipid: Family:AM64X rev:SR2.0 JTAGID[0x1bb3802f] Detected
[    1.261150] reg-fixed-voltage fixedregulator-evm12v0: Failed to allocate supply name
[    1.269373] reg-fixed-voltage: probe of fixedregulator-evm12v0 failed with error -12
[    1.277389] reg-fixed-voltage fixedregulator-vsys5v0: Failed to allocate supply name
[    1.285325] reg-fixed-voltage: probe of fixedregulator-vsys5v0 failed with error -12
[    1.293283] reg-fixed-voltage fixedregulator-vsys3v3: Failed to allocate supply name
[    1.301206] reg-fixed-voltage: probe of fixedregulator-vsys3v3 failed with error -12
[    1.309162] reg-fixed-voltage fixed-regulator-sd: Failed to allocate supply name
[    1.316729] reg-fixed-voltage: probe of fixed-regulator-sd failed with error -12
[    1.324330] reg-fixed-voltage fixedregulator-vddb: Failed to allocate supply name
[    1.331985] reg-fixed-voltage: probe of fixedregulator-vddb failed with error -12
[    1.340465] iommu: Default domain type: Translated
[    1.345904] SCSI subsystem initialized
[    1.350411] mc: Linux media interface: v0.10
[    1.354813] videodev: Linux video capture interface: v2.00
[    1.360527] pps_core: LinuxPPS API ver. 1 registered
[    1.365602] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    1.374946] PTP clock support registered
[    1.378985] EDAC MC: Ver: 3.0.0
[    1.383651] FPGA manager framework
[    1.387271] Advanced Linux Sound Architecture Driver Initialized.
[    1.394643] clocksource: Switched to clocksource arch_sys_counter
[    1.401213] VFS: Disk quotas dquot_6.6.0
[    1.405293] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
[    1.418038] NET: Registered protocol family 2
[    1.422854] IP idents hash table entries: 32768 (order: 6, 262144 bytes, linear)
[    1.432019] tcp_listen_portaddr_hash hash table entries: 1024 (order: 2, 16384 bytes, linear)
[    1.440921] TCP established hash table entries: 16384 (order: 5, 131072 bytes, linear)
[    1.449153] TCP bind hash table entries: 16384 (order: 6, 262144 bytes, linear)
[    1.456900] TCP: Hash tables configured (established 16384 bind 16384)
[    1.463843] UDP hash table entries: 1024 (order: 3, 32768 bytes, linear)
[    1.470775] UDP-Lite hash table entries: 1024 (order: 3, 32768 bytes, linear)
[    1.478295] NET: Registered protocol family 1
[    1.483296] RPC: Registered named UNIX socket transport module.
[    1.489418] RPC: Registered udp transport module.
[    1.494227] RPC: Registered tcp transport module.
[    1.499034] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    1.505622] NET: Registered protocol family 44
[    1.510180] PCI: CLS 0 bytes, default 64
[    1.515024] hw perfevents: enabled with armv8_cortex_a53 PMU driver, 7 counters available
[    1.528007] Initialise system trusted keyrings
[    1.532979] workingset: timestamp_bits=46 max_order=19 bucket_order=0
[    1.544359] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    1.551086] NFS: Registering the id_resolver key type
[    1.556343] Key type id_resolver registered
[    1.560620] Key type id_legacy registered
[    1.564787] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
[    1.571640] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering...
[    1.579418] 9p: Installing v9fs 9p2000 file system support
[    1.628151] Key type asymmetric registered
[    1.632387] Asymmetric key parser 'x509' registered
[    1.637477] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 243)
[    1.645107] io scheduler mq-deadline registered
[    1.649756] io scheduler kyber registered
[    1.656483] pinctrl-single 4084000.pinctrl: 33 pins, size 132
[    1.663066] pinctrl-single f4000.pinctrl: 180 pins, size 720
[    1.670033] pinctrl-single a40000.timesync-router: 512 pins, size 2048
[    1.686852] Serial: 8250/16550 driver, 10 ports, IRQ sharing enabled
[    1.701561] cacheinfo: Unable to detect cache hierarchy for CPU 0
[    1.715863] brd: module loaded
[    1.726583] loop: module loaded
[    1.730932] megasas: 07.714.04.00-rc1
[    1.739517] mdio-mux-multiplexer mdio-mux-1: /mdio-mux-1: failed to get mux-control (0)
[    1.747767] mdio-mux-multiplexer mdio-mux-1: Failed to get mux: -2
[    1.754101] mdio-mux-multiplexer: probe of mdio-mux-1 failed with error -2
[    1.761159] tun: Universal TUN/TAP device driver, 1.6
[    1.767147] igbvf: Intel(R) Gigabit Virtual Function Network Driver
[    1.773576] igbvf: Copyright (c) 2009 - 2012 Intel Corporation.
[    1.779694] sky2: driver version 1.30
[    1.784797] VFIO - User Level meta-driver version: 0.3
[    1.791444] i2c /dev entries driver
[    1.796671] sdhci: Secure Digital Host Controller Interface driver
[    1.803081] sdhci: Copyright(c) Pierre Ossman
[    1.808192] sdhci-pltfm: SDHCI platform and OF driver helper
[    1.815268] ledtrig-cpu: registered to indicate activity on CPUs
[    1.821902] SMCCC: SOC_ID: ARCH_SOC_ID not implemented, skipping ....
[    1.830318] optee: probing for conduit method.
I/TC: Reserved shared memory is enabled
I/TC: Dynamic shared memory is enabled
I/TC: Normal World virtualization support is disabled
I/TC: Asynchronous notifications are disabled
[    1.835021] optee: revision 3.20 (8e74d476)
[    1.851621] optee: dynamic shared memory is enabled
[    1.861342] optee: initialized driver
[    1.865684] gpio-mux: probe of mux-controller failed with error -2
[    1.874344] NET: Registered protocol family 17
[    1.879199] 9pnet: Installing 9P2000 support
[    1.883725] Key type dns_resolver registered
[    1.888595] Loading compiled-in X.509 certificates
[    1.911502] ti-sci 44043000.dmsc: lpm region is required for suspend but not provided.
[    1.919726] ti-sci 44043000.dmsc: ABI: 3.1 (firmware rev 0x0008 '8.6.4--v08.06.04 (Chill Capybar')
[    1.976188] gpmc_probe_dt: number of chip-selects not defined
[    1.982162] omap-gpmc: probe of 3b000000.memory-controller failed with error -22
[    1.991268] omap_i2c 20000000.i2c: bus 0 rev0.12 at 100 kHz
[    1.998958] pca953x 1-0022: supply vcc not found, using dummy regulator
[    2.005975] pca953x 1-0022: using AI
[    2.032667] ssd1307fb 1-003c: failed to get VBAT regulator: -517
[    2.038999] omap_i2c 20010000.i2c: bus 1 rev0.12 at 400 kHz
[    2.046181] omap_i2c 20020000.i2c: bus 2 rev0.12 at 100 kHz
[    2.053227] omap_i2c 20030000.i2c: bus 3 rev0.12 at 100 kHz
[    2.059633] ti-sci-intr bus@f4000:bus@4000000:interrupt-controller1: Interrupt Router 5 domain created
[    2.069555] ti-sci-intr bus@f4000:interrupt-controller0: Interrupt Router 3 domain created
[    2.078564] ti-sci-inta 48000000.interrupt-controller: Interrupt Aggregator domain 28 created
[    2.087997] wiz bus@f4000:wiz@f000000: Failed to read num-lanes property
[    2.094983] wiz: probe of bus@f4000:wiz@f000000 failed with error -22
[    2.109361] j721e-pcie f102000.pcie: no num-lanes defined, defaulting to 1
[    2.116537] j721e-pcie f102000.pcie: Unable to get ti,syscon-pcie-ctrl regmap
[    2.123858] j721e-pcie f102000.pcie: pm_runtime_get_sync failed
[    2.130859] ti-udma 485c0100.dma-controller: Number of rings: 68
[    2.138564] ti-udma 485c0100.dma-controller: Channels: 24 (bchan: 12, tchan: 6, rchan: 6)
[    2.148799] ti-udma 485c0000.dma-controller: Number of rings: 288
[    2.163480] ti-udma 485c0000.dma-controller: Channels: 44 (tchan: 29, rchan: 15)
[    2.174475] printk: console [ttyS2] disabled
[    2.179008] 2800000.serial: ttyS2 at MMIO 0x2800000 (irq = 16, base_baud = 3000000) is a 8250
[    2.187796] printk: console [ttyS2] enabled
[    2.187796] printk: console [ttyS2] enabled
[    2.196247] printk: bootconsole [ns16550a0] disabled
[    2.196247] printk: bootconsole [ns16550a0] disabled
[    2.208381] cadence-qspi fc40000.spi: couldn't determine fifo-depth
[    2.214691] cadence-qspi fc40000.spi: Cannot get mandatory OF data.
[    2.232507] davinci_mdio 8000f00.mdio: Missing bus_freq property in the DT.
[    2.239596] davinci_mdio: probe of 8000f00.mdio failed with error -22
[    2.246191] am65-cpsw-nuss 8000000.ethernet: initializing am65 cpsw nuss version 0x6BA00903, cpsw version 0x6BA80903 Ports: 3 quirks:00000006
[    2.258896] am65-cpsw-nuss 8000000.ethernet: /bus@f4000/ethernet@8000000/ethernet-ports/port@1 error retrieving port phy: -19
[    2.272340] am65-cpts 39000000.cpts: CPTS ver 0x4e8a010c, freq:225000000, add_val:3 pps:0
[    2.281559] k3-j72xx-soc-thermal b00000.temperature-sensor: invalid resource
[    2.288698] k3-j72xx-soc-thermal: probe of b00000.temperature-sensor failed with error -22
[    2.299929] sdhci-am654: probe of fa10000.mmc failed with error -22
[    2.308438] mmc0: CQHCI version 5.10
[    2.312195] sdhci-am654 fa00000.mmc: Couldn't find otap-del-sel
[    2.325764] sdhci-am654: probe of fa00000.mmc failed with error -22
[    2.336689] ssd1307fb 1-003c: failed to get VBAT regulator: -517
[    2.343333] ssd1307fb 1-003c: failed to get VBAT regulator: -517
[    2.350461] debugfs: Directory 'pd:114' with parent 'pm_genpd' already present!
[    2.370706] ALSA device list:
[    2.373685]   No soundcards found.
[    2.377616] Waiting for root device PARTUUID=47b6d3e0-02...

Could you please as to what is wrong with the changes in the k3-am642-evm.dts?

I would also like to get your inputs on the original issue-

I tried loading the hello-world and ethercat-beckhoff-demo from CCS, both the applications could run properly. But when I tried to boot the AM64X-GP-EVM through SD card, and copy the .out to /lib/firmware and tried running the hello-world.out, it resulted in to 22 error code.

What can fix this issue?

  • Hello,

    1) loading MCU+ projects with Linux Remoteproc

    For the hello-world example to be loaded by Linux, you have to modify the MCU+ SDK project so that it includes a resource table. Please reference this work-in-progress FAQ:
    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1193620/faq-am62x-am64x-how-to-allow-linux-to-load-m4f-r5f-firmware-by-adding-a-resource-table  

    If you have any follow-up questions about loading MCU+ projects with Linux Remoteproc, please create a separate e2e thread.

    2) kernel boot issues 

    Ok, it looks like you are using AM64x Linux SDK 8.6.

    a) The Linux devicetree changes you showed above look fine to me. And none of the Linux terminal output mentions remoteproc, so the issue is not coming from trying to initialize the R5F, M4F, and PRU cores.

    b) I am concerned by the outputs "Duplicate name in ...". That should not be there. Are there any other device tree modifications you made?

    I am reassigning your thread to another team member more experienced with Linux debug to take a look.

    Regards,

    Nick

  • Hi Nick,

    Thanks for the quick response.Yes I am using the AM64x Linux SDK 8.6. I will be trying #1 on Monday and can post the update.

    For #2, no I don't have any other device tree changes, just the one which I shared the diff for. I am wondering, if what you suggested in #1 works, then I will not need the device tree related modifications? If not, then yes I need assistance to let it work.

  • Hello Ankita,

    Could loading remote cores be causing issues?

    If the Linux Remoteproc driver is unable to load a remote core because it does not have a resource table, then the core will simply fail to load. I would not expect it to cause all the peripherals you are observing to fail to load.

    Linux debug

    The team member I sent your thread to is out of town for the near term, so I will try to provide a bit more debug support until they get back.

    Can you please show us your uboot environment variables? I want to check boot_fit to see if you are booting using a fitImage, or a separate kernel image + devicetree binary.

    The next step in debug would be to try to make one change to the devicetree binary at a time and look for when you start seeing different behavior.

    Step 1) boot with default filesystem image, no changes. Record the terminal output so you can reference it later.

    Step 2) build kernel & unmodified devicetree, copy them to the board. You should not see any changes

    Step 3) start modifying one thing at a time, rebuild the devicetree file, copy to the board, see if the behavior changes (e.g., first disable PRU Ethernet. Any changes? Then do something else. etc).

    Regards,

    Nick

  • Hi Nick, thanks for the inputs.

    I tried building the kernel, and unchanged linux device tree. Then I made changes in the device tree only for the memory map.

    I can see that I am able to load and run the hello world executable with some minor changes in the linker.cmd. I used the linker.cmd from examples/drivers/ipc/ipc_rpmsg_echo_linux and I was able to see the executable running from R5F core.

    root@am64xx-evm:~# dmesg | grep 'remoteproc1'
    [    6.659423] remoteproc remoteproc1: 78000000.r5f is available
    [    6.701288] remoteproc remoteproc1: powering up 78000000.r5f
    [    6.708920] remoteproc remoteproc1: Booting fw image am64-main-r5f0_0-fw, size 965988
    [    6.720833]  remoteproc1#vdev0buffer: assigned reserved memory node r5f-dma-memory@a0000000
    [    6.737104]  remoteproc1#vdev0buffer: registered virtio1 (type 7)
    [    6.748688] remoteproc remoteproc1: remote processor 78000000.r5f is now up
    [    7.477176] remoteproc remoteproc10: 3000c000.txpru is available
    [    7.484040] remoteproc remoteproc11: 300b4000.pru is available
    [    7.493043] remoteproc remoteproc12: 30084000.rtu is available
    [    7.501806] remoteproc remoteproc13: 3008a000.txpru is available
    [    7.516790] remoteproc remoteproc14: 300b8000.pru is available
    [    7.524959] remoteproc remoteproc15: 30086000.rtu is available
    [    7.533189] remoteproc remoteproc16: 3008c000.txpru is available
    [   11.686430] remoteproc remoteproc11: powering up 300b4000.pru
    [   11.738193] remoteproc remoteproc11: Booting fw image ti-pruss/am65x-sr2-pru0-prueth-fw.elf, size 38224
    [   11.801409] remoteproc remoteproc11: unsupported resource 5
    [   11.830313] remoteproc remoteproc11: remote processor 300b4000.pru is now up
    [   11.861545] remoteproc remoteproc12: powering up 30084000.rtu
    [   11.901751] remoteproc remoteproc12: Booting fw image ti-pruss/am65x-sr2-rtu0-prueth-fw.elf, size 30872
    [   11.902031] remoteproc remoteproc12: remote processor 30084000.rtu is now up
    [   11.902080] remoteproc remoteproc13: powering up 3008a000.txpru
    [   11.918824] remoteproc remoteproc13: Booting fw image ti-pruss/am65x-sr2-txpru0-prueth-fw.elf, size 37328
    [   11.918874] remoteproc remoteproc13: remote processor 3008a000.txpru is now up
    root@am64xx-evm:~# 
    root@am64xx-evm:~# 
    root@am64xx-evm:~# 
    root@am64xx-evm:~# ls -l /lib/firmware
    total 33452
    -rw-r--r-- 1 root root    2040 Feb 27 13:38 LICENCE.ibt_firmware
    -rw-r--r-- 1 root root    2046 Feb 27 13:38 LICENCE.iwlwifi_firmware
    lrwxrwxrwx 1 root root      77 May  4 12:52 am64-main-r5f0_0-fw -> ethercat_slave_beckhoff_ssc_demo_am64x-evm_r5fss0-0_freertos_ti-arm-clang.out
    lrwxrwxrwx 1 root root      55 Feb 27 15:24 am64-main-r5f0_1-fw -> /lib/firmware/mcusdk-benchmark_demo/am64-main-r5f0_1-fw
    lrwxrwxrwx 1 root root      55 Feb 27 15:24 am64-main-r5f1_0-fw -> /lib/firmware/mcusdk-benchmark_demo/am64-main-r5f1_0-fw
    lrwxrwxrwx 1 root root      55 Feb 27 15:24 am64-main-r5f1_1-fw -> /lib/firmware/mcusdk-benchmark_demo/am64-main-r5f1_1-fw
    lrwxrwxrwx 1 root root      72 Feb 27 15:23 am64-mcu-m4f0_0-fw -> /lib/firmware/pdk-ipc/ipc_echo_baremetal_test_mcu3_0_release_strip.xer5f
    lrwxrwxrwx 1 root root      49 Feb 27 15:24 am64x-pru0_0-fw -> /lib/firmware/pru/PRU_RPMsg_Echo_Interrupt0_0.out
    lrwxrwxrwx 1 root root      49 Feb 27 15:24 am64x-pru0_1-fw -> /lib/firmware/pru/PRU_RPMsg_Echo_Interrupt0_1.out
    lrwxrwxrwx 1 root root      49 Feb 27 15:24 am64x-pru1_0-fw -> /lib/firmware/pru/PRU_RPMsg_Echo_Interrupt1_0.out
    lrwxrwxrwx 1 root root      49 Feb 27 15:24 am64x-pru1_1-fw -> /lib/firmware/pru/PRU_RPMsg_Echo_Interrupt1_1.out
    lrwxrwxrwx 1 root root      49 Feb 27 15:24 am64x-rtu0_0-fw -> /lib/firmware/pru/RTU_RPMsg_Echo_Interrupt0_0.out
    lrwxrwxrwx 1 root root      49 Feb 27 15:24 am64x-rtu0_1-fw -> /lib/firmware/pru/RTU_RPMsg_Echo_Interrupt0_1.out
    lrwxrwxrwx 1 root root      49 Feb 27 15:24 am64x-rtu1_0-fw -> /lib/firmware/pru/RTU_RPMsg_Echo_Interrupt1_0.out
    lrwxrwxrwx 1 root root      49 Feb 27 15:24 am64x-rtu1_1-fw -> /lib/firmware/pru/RTU_RPMsg_Echo_Interrupt1_1.out
    lrwxrwxrwx 1 root root      35 Feb 27 15:24 am64x-txpru0_0-fw -> /lib/firmware/pru/TX_PRU_Halt_0.out
    lrwxrwxrwx 1 root root      35 Feb 27 15:24 am64x-txpru0_1-fw -> /lib/firmware/pru/TX_PRU_Halt_1.out
    lrwxrwxrwx 1 root root      35 Feb 27 15:24 am64x-txpru1_0-fw -> /lib/firmware/pru/TX_PRU_Halt_0.out
    lrwxrwxrwx 1 root root      35 Feb 27 15:24 am64x-txpru1_1-fw -> /lib/firmware/pru/TX_PRU_Halt_1.out
    -rw-r--r-- 1 root root  965988 May  4 12:49 ethercat_slave_beckhoff_ssc_demo_am64x-evm_r5fss0-0_freertos_ti-arm-clang.out
    -rw-r--r-- 1 root root  487332 May  3 12:13 hello_world_am64x-evm_r5fss0-0_freertos_ti-arm-clang.out
    drwxr-xr-x 2 root root    4096 Feb 27 13:38 intel
    -rw-r--r-- 1 root root  918268 Feb 27 13:32 iwlwifi-3160-17.ucode
    -rw-r--r-- 1 root root 2120860 Feb 27 13:32 iwlwifi-8000C-22.ucode
    -rw-r--r-- 1 root root 2227284 Feb 27 13:32 iwlwifi-8000C-27.ucode
    -rw-r--r-- 1 root root 2310116 Feb 27 13:32 iwlwifi-8000C-31.ucode
    -rw-r--r-- 1 root root 2448976 Feb 27 13:32 iwlwifi-8000C-34.ucode
    -rw-r--r-- 1 root root 2428004 Feb 27 13:32 iwlwifi-8000C-36.ucode
    -rw-r--r-- 1 root root 1811984 Feb 27 13:32 iwlwifi-8265-22.ucode
    -rw-r--r-- 1 root root 2234528 Feb 27 13:32 iwlwifi-8265-27.ucode
    -rw-r--r-- 1 root root 2307104 Feb 27 13:32 iwlwifi-8265-31.ucode
    -rw-r--r-- 1 root root 2440780 Feb 27 13:32 iwlwifi-8265-34.ucode
    -rw-r--r-- 1 root root 2436632 Feb 27 13:32 iwlwifi-8265-36.ucode
    -rw-r--r-- 1 root root 2637216 Feb 27 13:32 iwlwifi-9260-th-b0-jf-b0-33.ucode
    -rw-r--r-- 1 root root 2678092 Feb 27 13:32 iwlwifi-9260-th-b0-jf-b0-34.ucode
    -rw-r--r-- 1 root root 2521412 Feb 27 13:32 iwlwifi-9260-th-b0-jf-b0-38.ucode
    -rw-r--r-- 1 root root 2620656 Feb 27 13:32 iwlwifi-9260-th-b0-jf-b0-41.ucode
    -rw-r--r-- 1 root root 2558176 Feb 27 13:32 iwlwifi-9260-th-b0-jf-b0-43.ucode
    -rw-r--r-- 1 root root 1489668 Feb 27 13:32 iwlwifi-9260-th-b0-jf-b0-46.ucode
    drwxr-xr-x 2 root root    4096 Feb 27 13:48 mcusdk-benchmark_demo
    drwxr-xr-x 2 root root    4096 Feb 27 13:48 pdk-ipc
    drwxr-xr-x 2 root root    4096 Feb 27 15:21 pru
    -rw-r--r-- 1 root root    4592 Feb 27 13:19 regulatory.db
    -rw-r--r-- 1 root root    1182 Feb 27 13:19 regulatory.db.p7s
    drwxr-xr-x 2 root root    4096 Feb 27 15:21 ti-connectivity
    drwxr-xr-x 2 root root    4096 Feb 27 13:47 ti-pruss
    root@am64xx-evm:~# 

     

    However, I don't see the outputs like "Hello World" or "EtherCAT started" on the serial logs, like we could see on the CCS(On CCS when I load EtherCAT beckhoff example, I see the output like below and I am able to discover the slave on the TwinCAT as well) but the same doesn't happen when I load the EtherCAT slave example executable like below.

    root@am64xx-evm:~# echo stop > /sys/class/remoteproc/remoteproc1/state
    [ 1124.361525] remoteproc remoteproc1: stopped remote processor 78000000.r5f
    root@am64xx-evm:~# 
    root@am64xx-evm:~# 
    root@am64xx-evm:~# cd /lib/firmware/
    root@am64xx-evm:/lib/firmware# 
    root@am64xx-evm:/lib/firmware# ln -sf ethercat_slave_beckhoff_ssc_demo_am64x-evm_r5fss0-0_freertos_ti-arm-clang.out am64-main-r5f0_0-fw
    root@am64xx-evm:/lib/firmware# echo start > /sys/class/remoteproc/remoteproc1/state
    [ 1178.235140] remoteproc remoteproc1: powering up 78000000.r5f
    [ 1178.242591] remoteproc remoteproc1: Booting fw image am64-main-r5f0_0-fw, size 965988
    [ 1178.253886]  remoteproc1#vdev0buffer: assigned reserved memory node r5f-dma-memory@a0000000
    [ 1178.263907] virtio_rpmsg_bus virtio1: rpmsg host is online
    [ 1178.273678]  remoteproc1#vdev0buffer: registered virtio1 (type 7)
    [ 1178.280989] remoteproc remoteproc1: remote processor 78000000.r5f is now up
    root@am64xx-evm:/lib/firmware# 

    Now, I am trying to figure out how to make it work on AM64X-EVM board. Any inputs from you is appreciated.

  • Hello Anika,

    Good steps.

    1) Let's start by verifying that the R5F code is running the way you expect from the Linux terminal.

    Please open up the MCU+ project settings in SysConfig and allow Linux to see the remote core trace logs, as documented here: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1193620/faq-am62x-am64x-how-to-allow-linux-to-load-m4f-r5f-firmware-by-adding-a-resource-table/4498750#4498750 

    Once you make those changes, your print() statements in your code should write to the Linux debug trace at the same time that they write to the UART.

    Next, let's check the trace log from the Linux terminal. You can reference this command: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/552339/how-to-see-log_print-messages-of-c6678-source-onto-tci6638-linux/2017591#2017591

    If you need help identifying which core is which remoteprocX number (it can change between boots depending on which cores finish initializing first), please reference this page of the Linux Academy: https://dev.ti.com/tirex/explore/node?a=7qm9DIS__LATEST&node=A__ANKEb6LZY6VAX.9xvGwQ-g__linux_academy_am64x__7qm9DIS__LATEST 

    2) Once we verify that the code is running as expected, then we can make sure that the MCU+ core owns the UART peripheral

    If that UART is not specifically disabled in the Linux devicetree, then Linux will grab it first, and the MCU+ core will not be able to send outputs to the UART. Similar to your PRU changes above, in the top-level Linux EVM devicetree file you want to make sure you have 

    &uart_node{

       status = "disabled";

    }

    Regards,

    Nick

  • Hi Nick,

    For suggestion #1 -

    I tried following the comments in here: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1193620/faq-am62x-am64x-how-to-allow-linux-to-load-m4f-r5f-firmware-by-adding-a-resource-table/4498750#4498750 

    I changed the SysConfig, removed IPC selection, kept the debug logs configuration as shown. The linker.cmd looks like this for the HelloWorld example-

    /* This is the stack that is used by code running within main()
     * In case of NORTOS,
     * - This means all the code outside of ISR uses this stack
     * In case of FreeRTOS
     * - This means all the code until vTaskStartScheduler() is called in main()
     *   uses this stack.
     * - After vTaskStartScheduler() each task created in FreeRTOS has its own stack
     */
    --stack_size=16384
    /* This is the heap size for malloc() API in NORTOS and FreeRTOS
     * This is also the heap used by pvPortMalloc in FreeRTOS
     */
    --heap_size=32768
    -e_vectors  /* This is the entry of the application, _vector MUST be plabed starting address 0x0 */
    
    /* This is the size of stack when R5 is in IRQ mode
     * In NORTOS,
     * - Here interrupt nesting is enabled
     * - This is the stack used by ISRs registered as type IRQ
     * In FreeRTOS,
     * - Here interrupt nesting is disabled
     * - This is stack that is used initally when a IRQ is received
     * - But then the mode is switched to SVC mode and SVC stack is used for all user ISR callbacks
     * - Hence in FreeRTOS, IRQ stack size is less and SVC stack size is more
     */
    __IRQ_STACK_SIZE = 256;
    /* This is the size of stack when R5 is in IRQ mode
     * - In both NORTOS and FreeRTOS nesting is disabled for FIQ
     */
    __FIQ_STACK_SIZE = 256;
    __SVC_STACK_SIZE = 4096; /* This is the size of stack when R5 is in SVC mode */
    __ABORT_STACK_SIZE = 256;  /* This is the size of stack when R5 is in ABORT mode */
    __UNDEFINED_STACK_SIZE = 256;  /* This is the size of stack when R5 is in UNDEF mode */
    
    SECTIONS
    {
        /* This has the R5F entry point and vector table, this MUST be at 0x0 */
        .vectors:{} palign(8) > R5F_VECS
    
        /* This has the R5F boot code until MPU is enabled,  this MUST be at a address < 0x80000000
         * i.e this cannot be placed in DDR
         */
        GROUP {
            .text.hwi: palign(8)
            .text.cache: palign(8)
            .text.mpu: palign(8)
            .text.boot: palign(8)
            .text:abort: palign(8) /* this helps in loading symbols when using XIP mode */
        } > R5F_TCMA
    
        /* This is rest of code. This can be placed in DDR if DDR is available and needed */
        GROUP {
            .text:   {} palign(8)   /* This is where code resides */
            .rodata: {} palign(8)   /* This is where const's go */
        } > DDR_1
    
        GROUP {
            /* This is the resource table used by linux to know where the IPC "VRINGs" are located */
            .resource_table: {} palign(4096)
        } > DDR_0
    
        /* This is rest of initialized data. This can be placed in DDR if DDR is available and needed */
        GROUP {
            .data:   {} palign(8)   /* This is where initialized globals and static go */
        } > DDR_1
    
        /* This is rest of uninitialized data. This can be placed in DDR if DDR is available and needed */
        GROUP {
            .bss:    {} palign(8)   /* This is where uninitialized globals go */
            RUN_START(__BSS_START)
            RUN_END(__BSS_END)
            .sysmem: {} palign(8)   /* This is where the malloc heap goes */
            .stack:  {} palign(8)   /* This is where the main() stack goes */
        } > DDR_1
    
        /* This is where the stacks for different R5F modes go */
        GROUP {
            .irqstack: {. = . + __IRQ_STACK_SIZE;} align(8)
            RUN_START(__IRQ_STACK_START)
            RUN_END(__IRQ_STACK_END)
            .fiqstack: {. = . + __FIQ_STACK_SIZE;} align(8)
            RUN_START(__FIQ_STACK_START)
            RUN_END(__FIQ_STACK_END)
            .svcstack: {. = . + __SVC_STACK_SIZE;} align(8)
            RUN_START(__SVC_STACK_START)
            RUN_END(__SVC_STACK_END)
            .abortstack: {. = . + __ABORT_STACK_SIZE;} align(8)
            RUN_START(__ABORT_STACK_START)
            RUN_END(__ABORT_STACK_END)
            .undefinedstack: {. = . + __UNDEFINED_STACK_SIZE;} align(8)
            RUN_START(__UNDEFINED_STACK_START)
            RUN_END(__UNDEFINED_STACK_END)
        } > DDR_1
    
        /* Sections needed for C projects */
        GROUP {
            .ARM.exidx:  {} palign(8)   /* Needed for C exception handling */
            .init_array: {} palign(8)   /* Contains function pointers called before main */
            .fini_array: {} palign(8)   /* Contains function pointers called after main */
        } > DDR_1
    
        /* General purpose user shared memory, used in some examples */
        .bss.user_shared_mem (NOLOAD) : {} > USER_SHM_MEM
        /* this is used when Debug log's to shared memory are enabled, else this is not used */
        .bss.log_shared_mem  (NOLOAD) : {} > LOG_SHM_MEM
        /* this is used only when IPC RPMessage is enabled, else this is not used */
        .bss.ipc_vring_mem   (NOLOAD) : {} > RTOS_NORTOS_IPC_SHM_MEM
    }
    
    /*
    NOTE: Below memory is reserved for DMSC usage
     - During Boot till security handoff is complete
       0x701E0000 - 0x701FFFFF (128KB)
     - After "Security Handoff" is complete (i.e at run time)
       0x701F4000 - 0x701FFFFF (48KB)
    
     Security handoff is complete when this message is sent to the DMSC,
       TISCI_MSG_SEC_HANDOVER
    
     This should be sent once all cores are loaded and all application
     specific firewall calls are setup.
    */
    
    MEMORY
    {
        R5F_VECS  : ORIGIN = 0x00000000 , LENGTH = 0x00000040
        R5F_TCMA  : ORIGIN = 0x00000040 , LENGTH = 0x00007FC0
        R5F_TCMB0 : ORIGIN = 0x41010000 , LENGTH = 0x00008000
    
        /* when using multi-core application's i.e more than one R5F/M4F active, make sure
         * this memory does not overlap with other R5F's
         */
        MSRAM     : ORIGIN = 0x70080000 , LENGTH = 0x40000
    
        /* This section can be used to put XIP section of the application in flash, make sure this does not overlap with
         * other CPUs. Also make sure to add a MPU entry for this section and mark it as cached and code executable
         */
        FLASH     : ORIGIN = 0x60100000 , LENGTH = 0x80000
    
        /* when using multi-core application's i.e more than one R5F/M4F active, make sure
         * this memory does not overlap with other R5F's
         */
        /* Resource table must be placed at the start of DDR_0 when R5 cores are early booting with Linux */
        DDR_0       : ORIGIN = 0xA0100000 , LENGTH = 0x1000
        DDR_1       : ORIGIN = 0xA0101000 , LENGTH = 0xEFF000
    
        /* shared memory segments */
        /* On R5F,
         * - make sure there is a MPU entry which maps below regions as non-cache
         */
        USER_SHM_MEM            : ORIGIN = 0xA5000000, LENGTH = 0x80
        LOG_SHM_MEM             : ORIGIN = 0xA5000000 + 0x80, LENGTH = 0x00004000 - 0x80
        RTOS_NORTOS_IPC_SHM_MEM : ORIGIN = 0xA5004000, LENGTH = 0x0000C000
        LINUX_IPC_SHM_MEM       : ORIGIN = 0xA0000000 , LENGTH = 0x100000
    }
    

    Here is the example.syscfg

    /**
     * These arguments were used when this file was generated. They will be automatically applied on subsequent loads
     * via the GUI or CLI. Run CLI with '--help' for additional information on how to override these arguments.
     * @cliArgs --device "AM64x_beta" --package "ALV" --part "Default" --context "r5fss0-0" --product "MCU_PLUS_SDK_AM64x@08.05.00"
     * @versions {"tool":"1.14.0+2667"}
     */
    
    /**
     * Import the modules used in this configuration.
     */
    const debug_log  = scripting.addModule("/kernel/dpl/debug_log");
    const mpu_armv7  = scripting.addModule("/kernel/dpl/mpu_armv7", {}, false);
    const mpu_armv71 = mpu_armv7.addInstance();
    const mpu_armv72 = mpu_armv7.addInstance();
    const mpu_armv73 = mpu_armv7.addInstance();
    const mpu_armv74 = mpu_armv7.addInstance();
    const mpu_armv75 = mpu_armv7.addInstance();
    const mpu_armv76 = mpu_armv7.addInstance();
    
    /**
     * Write custom configuration values to the imported modules.
     */
    debug_log.enableMemLog             = true;
    debug_log.enableUartLog            = true;
    debug_log.enableSharedMemLog       = true;
    debug_log.enableSharedMemLogReader = true;
    debug_log.enableLogZoneInfo        = true;
    debug_log.uartLog.$name            = "CONFIG_UART_CONSOLE";
    debug_log.uartLog.UART.$assign     = "USART0";
    
    mpu_armv71.$name             = "CONFIG_MPU_REGION0";
    mpu_armv71.size              = 31;
    mpu_armv71.attributes        = "Device";
    mpu_armv71.accessPermissions = "Supervisor RD+WR, User RD";
    mpu_armv71.allowExecute      = false;
    
    mpu_armv72.$name             = "CONFIG_MPU_REGION1";
    mpu_armv72.size              = 15;
    mpu_armv72.accessPermissions = "Supervisor RD+WR, User RD";
    
    mpu_armv73.$name             = "CONFIG_MPU_REGION2";
    mpu_armv73.baseAddr          = 0x41010000;
    mpu_armv73.size              = 15;
    mpu_armv73.accessPermissions = "Supervisor RD+WR, User RD";
    
    mpu_armv74.$name             = "CONFIG_MPU_REGION3";
    mpu_armv74.accessPermissions = "Supervisor RD+WR, User RD";
    mpu_armv74.baseAddr          = 0x70000000;
    mpu_armv74.size              = 21;
    
    mpu_armv75.$name             = "CONFIG_MPU_REGION4";
    mpu_armv75.baseAddr          = 0x60000000;
    mpu_armv75.size              = 28;
    mpu_armv75.accessPermissions = "Supervisor RD, User RD";
    
    mpu_armv76.$name    = "CONFIG_MPU_REGION5";
    mpu_armv76.baseAddr = 0x80000000;
    mpu_armv76.size     = 31;
    
    /**
     * Pinmux solution for unlocked pins/peripherals. This ensures that minor changes to the automatic solver in a future
     * version of the tool will not impact the pinmux you originally saw.  These lines can be completely deleted in order to
     * re-solve from scratch.
     */
    debug_log.uartLog.UART.RXD.$suggestSolution = "ball.D15";
    debug_log.uartLog.UART.TXD.$suggestSolution = "ball.C16";
    

    I also included "resource_table_no_ipc.h" in the main.c. The "resource_table_no_ipc.h" looks like below-

    /*
     *  Copyright (C) 2022-2023 Texas Instruments Incorporated
     *
     *  Redistribution and use in source and binary forms, with or without
     *  modification, are permitted provided that the following conditions
     *  are met:
     *
     *    Redistributions of source code must retain the above copyright
     *    notice, this list of conditions and the following disclaimer.
     *
     *    Redistributions in binary form must reproduce the above copyright
     *    notice, this list of conditions and the following disclaimer in the
     *    documentation and/or other materials provided with the
     *    distribution.
     *
     *    Neither the name of Texas Instruments Incorporated nor the names of
     *    its contributors may be used to endorse or promote products derived
     *    from this software without specific prior written permission.
     *
     *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
     *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
     *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
     *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
     *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     *  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     *  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     *  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     */
    
    #ifndef RESOURCE_TABLE_NO_IPC_H_
    #define RESOURCE_TABLE_NO_IPC_H_
    
    #ifdef __cplusplus
    extern "C" {
    #endif
    
    #include <stddef.h>
    #include <drivers/ipc_rpmsg/include/ipc_rpmsg_linux_resource_table.h>
    #include <stdint.h>
    #include <kernel/dpl/SystemP.h>
    #include <drivers/hw_include/cslr_soc.h>
    
    /*
     * NOTES
     *
     * - RPMessage_ResourceTable copied from Linux IPC example generated file
     *   ti_drivers_config.c
     *
     * - gDebugMemLog is defined in the generated file ti_dlp_config.c, so mark as
     *   "extern" in this file
     *
     * - The trace log takes 0x1000 (4096 bytes) of space in .bss by default. The
     *   log is viewable from the Linux terminal with the command
     *   # cat /sys/kernel/debug/remoteproc/remoteproc#/trace0
     */
    
    
    /* DebugP log buffer memory and size
     * - This log can be viewed via ROV in CCS
     * - When linux is enabled, this log can also be viewed via linux debugfs
     */
    extern char gDebugMemLog[DebugP_MEM_LOG_SIZE];
    
    /* __attribute__((used)) keeps the resource table from getting optimized out
     * by the compiler
     */
    const RPMessage_ResourceTable gRPMessage_linuxResourceTable __attribute__((used)) __attribute__ ((section (".resource_table"), aligned (4096))) =
    {
        {
            1U,         /* we're the first version that implements this */
            2U,         /* number of entries, MUST be 2 */
            { 0U, 0U, } /* reserved, must be zero */
        },
        /* offsets to the entries */
        {
            offsetof(RPMessage_ResourceTable, vdev),
            offsetof(RPMessage_ResourceTable, trace),
        },
        /* vdev entry */
        {
            RPMESSAGE_RSC_TYPE_VDEV, RPMESSAGE_RSC_VIRTIO_ID_RPMSG,
            0U, 1U, 0U, 0U, 0U, 2U, { 0U, 0U },
        },
        /* the two vrings */
        { RPMESSAGE_RSC_VRING_ADDR_ANY, 4096U, 256U, 1U, 0U },
        { RPMESSAGE_RSC_VRING_ADDR_ANY, 4096U, 256U, 2U, 0U },
        {
            (RPMESSAGE_RSC_TRACE_INTS_VER0 | RPMESSAGE_RSC_TYPE_TRACE),
            (uint32_t)gDebugMemLog, DebugP_MEM_LOG_SIZE,
            0, "trace:r5fss0_0",
        },
    };
    
    #ifdef __cplusplus
    }
    #endif
    
    #endif /* RESOURCE_TABLE_NO_IPC_H_ */
    

    I am trying to load the generated  hello_world_am64x-evm_r5fss0-0_freertos_ti-arm-clang.out to the r5f0 core. I observed that the executable runs successfully but no logs still. Below are the serial logs-

    [245539.493970] remoteproc remoteproc1: stopped remote processor 78000000.r5f
    [245559.053505] remoteproc remoteproc1: powering up 78000000.r5f
    [245559.060225] remoteproc remoteproc1: Booting fw image am64-main-r5f0_0-fw, size 481260
    [245559.071544]  remoteproc1#vdev0buffer: assigned reserved memory node r5f-dma-memory@a0000000
    [245559.080871] virtio_rpmsg_bus virtio1: rpmsg host is online
    [245559.088059]  remoteproc1#vdev0buffer: registered virtio1 (type 7)
    [245559.095357] remoteproc remoteproc1: remote processor 78000000.r5f is now up
    [254317.041914] remoteproc remoteproc1: stopped remote processor 78000000.r5f
    [254350.177591] remoteproc remoteproc1: powering up 78000000.r5f
    [254350.184356] remoteproc remoteproc1: Booting fw image am64-main-r5f0_0-fw, size 489380
    [254350.195640]  remoteproc1#vdev0buffer: assigned reserved memory node r5f-dma-memory@a0000000
    [254350.207928] virtio_rpmsg_bus virtio1: rpmsg host is online
    [254350.215443]  remoteproc1#vdev0buffer: registered virtio1 (type 7)
    [254350.215456] remoteproc remoteproc1: remote processor 78000000.r5f is now up
    

    Without the "resource_table_no_ipc.h" changes and keeping IPC enabled, the output remains the same on the serial logs, i.e. no printf appearing on the logs.

    The link you shared to enable the logs doesn't seem to have useful information, as the links mentioned in How to see log_print messages of c6678 source onto tci6638 linux - Processors forum - Processors - TI E2E support forums  are not working anymore :( 

    I tried following your suggestion #2, and I see a compilation issue as below -

    $ make ARCH=arm64 CROSS_COMPILE=aarch64-none-linux-gnu- ti/k3-am642-evm.dtb
      DTC     arch/arm64/boot/dts/ti/k3-am642-evm.dtb
    Error: arch/arm64/boot/dts/ti/k3-am642-evm.dts:529.1-11 Label or path uart_node not found
    FATAL ERROR: Syntax error parsing input tree
    make[1]: *** [scripts/Makefile.lib:328: arch/arm64/boot/dts/ti/k3-am642-evm.dtb] Error 1
    make: *** [Makefile:1370: ti/k3-am642-evm.dtb] Error 2
    

    Thanks & Regards,

    Ankita

  • Hello Ankita,

    1) FYI: graceful shutdown not supported in SDK 8.6 and earlier 

    In the terminal output you attached, it looks like you are doing echo > stop and echo > start during runtime. Just to let you know, in AM64x SDK 8.6 and earlier SDKs, graceful shutdown is not supported.

    That means that when the Linux RemoteProc driver stops the R5F core, it does not give the core any warning or chance to go into a known good state. That means the R5F has no opportunity to release resources it has claimed with the device manager firmware (SYSFW), and it is in an unknown state. That means that if you bring the core back up with echo > start:

    1) It will not be able to request any system resources from SYSFW, because SYSFW thinks that those resources are still in use

    2) The processor may crash depending on what state the R5F core was in.

    So for now, if you want to load a new firmware, we suggest rebooting the board to avoid issues. We will support graceful shutdown of remote cores on AM64x in SDK 9.0 (releasing sometime around July / August 2023).

    2) clarifying comments from last time 

    To view the trace log from Linux, you can do it with either enabling Linux IPC in SysConfig, or with adding an empty resource table. The important part is to enable the memory log in sysconfig, as detailed here:

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1193620/faq-am62x-am64x-how-to-allow-linux-to-load-m4f-r5f-firmware-by-adding-a-resource-table/4498750#4498750 

    "In order to allow Debug prints to write to the trace log where Linux can see them, Debug Log > Enable Memory Log must be selected.

      "

    It looks like you did that based on your SysConfig settings:

    debug_log.enableMemLog             = true;

    Then we would check the trace log with a series of commands like this (based on the links https://dev.ti.com/tirex/explore/node?a=7qm9DIS__LATEST&node=A__ANKEb6LZY6VAX.9xvGwQ-g__linux_academy_am64x__7qm9DIS__LATEST  and https://e2e.ti.com/support/processors-group/processors/f/processors-forum/552339/how-to-see-log_print-messages-of-c6678-source-onto-tci6638-linux/2017591#2017591):

    // check for which remoteprocX instance is R5F0_0:
    
    # head /sys/class/remoteproc/remoteproc*/name
    
    // let's say it is remoteproc1 for this boot
    // now check the trace log for R5F0_0:
    
    # cat /sys/kernel/debug/remoteproc/remoteproc1/trace0

    For the Linux devicetree changes, the name of the UART node is not actually uart_node. That depends on which UART you are using in the system (e.g., let's say you want to use MAIN domain UART 3. Go to k3-am64-main.dtsi, where the main domain peripherals are defined. It looks like that UART instance is called main_uart3).

    Make sure that you are making your devicetree changes to the top level board devicetree file, NOT the .dtsi files where the processor is defined. That way you know your settings will be applied last, AFTER all the devicetree settings in the .dts and .dtsi files that your board devicetree file includes. That way, your settings will not be overwritten by a .dts file that includes the dtsi file.

    3) next debug steps 

    If we are still not seeing the expected "hello world" message in the trace log after making the above changes, we can use CCS to connect to the R5F and debug it during runtime. For a reference of how to do that, take a look at this FAQ: (+) [FAQ] AM62x & AM64x: How to use CCS to debug a running M4F core that was started by Linux? - Processors forum - Processors - TI E2E support forums

    Regards,

    Nick

  • Hi Nick,

    Hope you are having a good day. Thanks for keeping up with my queries.

    I wanted to share some observations on this thread. I tried enabling the Memory Log from SysConfig on "ipc_rpmsg_echo_linux" example. And I could see the debug traces in the step "cat /sys/kernel/debug/remoteproc/remoteproc1/trace0"

    However, I am not quite sure how different are the "hello world" and "ipc_rpmsg_echo_linux" examples. I am going to dig deeper to check. Our final goal is to be able to run the EtherCAT example in the same manner. I will be posting a query if I get stuck later.

    Thanks again.

  • Hello Ankita,

    Sounds good. I do not have any followup actions identified on my end, but if you have additional questions, feel free to reply here (or create a new thread if the question is unrelated to our discussion here).

    Regards,

    Nick

  • Hi Nick, a very good morning!

    I was trying to load the EtherCAT Beckhoff example on the R5F core(like I did with Hello World) and it doesn't seem to work.

    My observation is that, with PRU-ICSS enabled through Syscfg, the generated code inside ti_drivers_config.c has the respective init functions inside System_Init(). And there is some issue with PRUICSS_init().

    void System_init(void)
    {
        /* DPL init sets up address transalation unit, on some CPUs this is needed
         * to access SCICLIENT services, hence this needs to happen first
         */
        Dpl_init();
        /* We should do sciclient init before we enable power and clock to the peripherals */
        /* SCICLIENT init */
        {
            int32_t retVal = SystemP_SUCCESS;
    
            retVal = Sciclient_init(CSL_CORE_ID_R5FSS0_0);
            DebugP_assertNoLog(SystemP_SUCCESS == retVal);
        }
    
        
        /* initialize PMU */
        CycleCounterP_init(SOC_getSelfCpuClk());
    
    
        PowerClock_init();
        /* Now we can do pinmux */
        Pinmux_init();
        /* finally we initialize all peripheral drivers */
        I2C_init();
        OSPI_init();
        /* IPC Notify */
        {
            IpcNotify_Params notifyParams;
            int32_t status;
    
            /* initialize parameters to default */
            IpcNotify_Params_init(&notifyParams);
    
            /* specify the core on which this API is called */
            notifyParams.selfCoreId = CSL_CORE_ID_R5FSS0_0;
    
            /* list the cores that will do IPC Notify with this core
            * Make sure to NOT list 'self' core in the list below
            */
            notifyParams.numCores = 5;
            notifyParams.coreIdList[0] = CSL_CORE_ID_R5FSS0_1;
            notifyParams.coreIdList[1] = CSL_CORE_ID_R5FSS1_0;
            notifyParams.coreIdList[2] = CSL_CORE_ID_R5FSS1_1;
            notifyParams.coreIdList[3] = CSL_CORE_ID_M4FSS0_0;
            notifyParams.coreIdList[4] = CSL_CORE_ID_A53SS0_0;
            notifyParams.linuxCoreId = CSL_CORE_ID_A53SS0_0;
    
            /* initialize the IPC Notify module */
            status = IpcNotify_init(&notifyParams);
            DebugP_assert(status==SystemP_SUCCESS);
    
        }
        /* IPC RPMessage */
        {
            RPMessage_Params rpmsgParams;
            int32_t status;
    
            /* initialize parameters to default */
            RPMessage_Params_init(&rpmsgParams);
    
            /* VRING mapping from source core to destination core, '-1' means NO VRING,
                r5fss0_0 => {"r5fss0_0":-1,"r5fss0_1":0,"r5fss1_0":1,"r5fss1_1":2,"m4fss0_0":3}
                r5fss0_1 => {"r5fss0_0":4,"r5fss0_1":-1,"r5fss1_0":5,"r5fss1_1":6,"m4fss0_0":7}
                r5fss1_0 => {"r5fss0_0":8,"r5fss0_1":9,"r5fss1_0":-1,"r5fss1_1":10,"m4fss0_0":11}
                r5fss1_1 => {"r5fss0_0":12,"r5fss0_1":13,"r5fss1_0":14,"r5fss1_1":-1,"m4fss0_0":15}
                m4fss0_0 => {"r5fss0_0":16,"r5fss0_1":17,"r5fss1_0":18,"r5fss1_1":19,"m4fss0_0":-1}
             */
            /* TX VRINGs */
            rpmsgParams.vringTxBaseAddr[CSL_CORE_ID_R5FSS0_1] = (uintptr_t)gRPMessageVringMem[0];
            rpmsgParams.vringTxBaseAddr[CSL_CORE_ID_R5FSS1_0] = (uintptr_t)gRPMessageVringMem[1];
            rpmsgParams.vringTxBaseAddr[CSL_CORE_ID_R5FSS1_1] = (uintptr_t)gRPMessageVringMem[2];
            rpmsgParams.vringTxBaseAddr[CSL_CORE_ID_M4FSS0_0] = (uintptr_t)gRPMessageVringMem[3];
            /* RX VRINGs */
            rpmsgParams.vringRxBaseAddr[CSL_CORE_ID_R5FSS0_1] = (uintptr_t)gRPMessageVringMem[4];
            rpmsgParams.vringRxBaseAddr[CSL_CORE_ID_R5FSS1_0] = (uintptr_t)gRPMessageVringMem[8];
            rpmsgParams.vringRxBaseAddr[CSL_CORE_ID_R5FSS1_1] = (uintptr_t)gRPMessageVringMem[12];
            rpmsgParams.vringRxBaseAddr[CSL_CORE_ID_M4FSS0_0] = (uintptr_t)gRPMessageVringMem[16];
            /* Other VRING properties */
            rpmsgParams.vringSize = IPC_RPMESSAGE_VRING_SIZE;
            rpmsgParams.vringNumBuf = IPC_RPMESSAGE_NUM_VRING_BUF;
            rpmsgParams.vringMsgSize = IPC_RPMESSAGE_MAX_VRING_BUF_SIZE;
            rpmsgParams.linuxResourceTable = &gRPMessage_linuxResourceTable;
            rpmsgParams.linuxCoreId = CSL_CORE_ID_A53SS0_0;
    
            /* initialize the IPC RP Message module */
            status = RPMessage_init(&rpmsgParams);
            DebugP_assert(status==SystemP_SUCCESS);
        }
    
        PRUICSS_init();
        /* PRU IEP Enable SYNC MODE */
        CSL_REG32_WR(CSL_PRU_ICSSG1_PR1_CFG_SLV_BASE + CSL_ICSSCFG_IEPCLK, 1);
    
        Drivers_uartInit();
    }

    I tried having a similar configuration for Hello-World(having OSPI, I2C and PRUICSS enabled), even that doesn't work. However, when I remove the PRUICSS configuration, the application seems to work.

    I tried building the PRU firmware from ti-sdk, however, I am unable to load it on the PRU cores(I followed the same way as we try loading hello-world on R5F core).

    I am using the ti-sdk( tisdk-default-image-am64xx-evm.wic.xz) on SD card downloaded from https://www.ti.com/tool/PROCESSOR-SDK-AM64X. I have changed the device tree only.

    By any chance this has to do with the PRU firmware? How can I make it work? Please advise.

    My aim to make the EtherCAT slave work by loading the firmware through linux (not JTAG i.e. CCS).

  • Hello Ankita,

    Summary of current situation 

    Please correct me if I got any of this wrong:

    1) You are able to get the EtherCAT slave example working when R5F is loaded through CCS, as described in the links from here: https://software-dl.ti.com/mcu-plus-sdk/esd/AM64X/08_05_00_24/exports/docs/api_guide_am64x/EXAMPLES_INDUSTRIAL_COMMS_ETHERCAT_SLAVE_DEMOS.html

    2) Now you are trying to do the same thing, but by loading the R5F core with Linux RPMsg. The PRUICSS configuration is running into issues

    3) You have disabled both ICSSG instances in the board level Linux devicetree file, so Linux should not have already requested the resources

    Next debug steps 

    Are you able to connect to the R5F with CCS to see if the code is timing out in a specific location? The process of connecting to a core that was initialized by Linux is documented here: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1188177/faq-am62x-am64x-how-to-use-ccs-to-debug-a-running-m4f-core-that-was-started-by-linux

    Next things to try 

    It just occurred to me that we should make sure that the board config settings that are getting applied assign the ICSSG DMA resources to the R5F core instead of the Linux core. I assume EtherCAT uses the same DMA resources as generic Ethernet. Please use R5F0_0 at this point - theoretically other R5F cores should also work, but so far R5F0_0 is the one that has been tested.

    Please reference this post:
    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1206420/processor-sdk-am64x-enet-open-failure-from-r5-when-a53-is-running/4596608#4596608

    For steps to use the K3 Resource Partition tool on Windows: (attaching just in case)

    The k3-resource partition tool is packaged as a part of SDK installation. To use this tool on windows we need to copy the k3-respart-tool from installed SDK.  I attached the k3-respart-tool folder’s zip with this email. Extract the zip file at C:\ti and follow below instructions to use on windows.

    1. Download and Install the SysConfig v1.15 from https://www.ti.com/tool/download/SYSCONFIG
    2. Extract the attached zip at C:\ti.
    3. Open the SysConfig GUI tool and navigate to the k3-respart-tool.
    4. Click on the browse to open an existing design. Navigate to k3-respart-tool\out directory and you will find a baseline file for your platform.

    Note : We do not recommend you to start from scratch, always load the baseline file out\xyz-platform-name.syscfg for customization.

    Regards,

    Nick

  • Hi Nick,

    I don't see any attachments with this post. I am mainly looking for the K3 Resource Partition tool. I also looked for the tool here, but this link is not reachable - https://bitbucket.itg.ti.com/projects/PSDKLA/repos/k3-resource-partitioning/browse

    Also, can you please review the linux device tree I am using, mainly for ICSSG  -

    // SPDX-License-Identifier: GPL-2.0
    /*
     * Copyright (C) 2020-2021 Texas Instruments Incorporated - https://www.ti.com/
     */
    
    /dts-v1/;
    
    #include <dt-bindings/phy/phy.h>
    #include <dt-bindings/mux/ti-serdes.h>
    #include <dt-bindings/leds/common.h>
    #include <dt-bindings/gpio/gpio.h>
    #include <dt-bindings/net/ti-dp83867.h>
    #include "k3-am642.dtsi"
    
    / {
    	compatible =  "ti,am642-evm", "ti,am642";
    	model = "Texas Instruments AM642 EVM";
    
    	chosen {
    		stdout-path = "serial2:115200n8";
    		bootargs = "console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000";
    	};
    
    	aliases {
    		ethernet2 = &icssg1_emac0;
    		ethernet3 = &icssg1_emac1;
    	};
    
    	memory@80000000 {
    		device_type = "memory";
    		/* 2G RAM */
    		reg = <0x00000000 0x80000000 0x00000000 0x80000000>;
    
    	};
    
    	reserved-memory {
    		#address-cells = <2>;
    		#size-cells = <2>;
    		ranges;
    
    		secure_ddr: optee@9e800000 {
    			reg = <0x00 0x9e800000 0x00 0x01800000>; /* for OP-TEE */
    			alignment = <0x1000>;
    			no-map;
    		};
    
    		main_r5fss0_core0_dma_memory_region: r5f-dma-memory@a0000000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa0000000 0x00 0x100000>;
    			no-map;
    		};
    
    		main_r5fss0_core0_memory_region: r5f-memory@a0100000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa0100000 0x00 0xf00000>;
    			no-map;
    		};
    
    		main_r5fss0_core1_dma_memory_region: r5f-dma-memory@a1000000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa1000000 0x00 0x100000>;
    			no-map;
    		};
    
    		main_r5fss0_core1_memory_region: r5f-memory@a1100000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa1100000 0x00 0xf00000>;
    			no-map;
    		};
    
    		main_r5fss1_core0_dma_memory_region: r5f-dma-memory@a2000000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa2000000 0x00 0x100000>;
    			no-map;
    		};
    
    		main_r5fss1_core0_memory_region: r5f-memory@a2100000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa2100000 0x00 0xf00000>;
    			no-map;
    		};
    
    		main_r5fss1_core1_dma_memory_region: r5f-dma-memory@a3000000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa3000000 0x00 0x100000>;
    			no-map;
    		};
    
    		main_r5fss1_core1_memory_region: r5f-memory@a3100000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa3100000 0x00 0xf00000>;
    			no-map;
    		};
    
    		mcu_m4fss_dma_memory_region: m4f-dma-memory@a4000000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa4000000 0x00 0x100000>;
    			no-map;
    		};
    
    		mcu_m4fss_memory_region: m4f-memory@a4100000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa4100000 0x00 0xf00000>;
    			no-map;
    		};
    
    		rtos_ipc_memory_region: ipc-memories@a5000000 {
    			reg = <0x00 0xa5000000 0x00 0x00800000>;
    			alignment = <0x1000>;
    			no-map;
    		};
    	};
    
    	evm_12v0: fixedregulator-evm12v0 {
    		/* main DC jack */
    		compatible = "regulator-fixed";
    		regulator-name = "evm_12v0";
    		regulator-min-microvolt = <12000000>;
    		regulator-max-microvolt = <12000000>;
    		regulator-always-on;
    		regulator-boot-on;
    	};
    
    	vsys_5v0: fixedregulator-vsys5v0 {
    		/* output of LM5140 */
    		compatible = "regulator-fixed";
    		regulator-name = "vsys_5v0";
    		regulator-min-microvolt = <5000000>;
    		regulator-max-microvolt = <5000000>;
    		vin-supply = <&evm_12v0>;
    		regulator-always-on;
    		regulator-boot-on;
    	};
    
    	vsys_3v3: fixedregulator-vsys3v3 {
    		/* output of LM5140 */
    		compatible = "regulator-fixed";
    		regulator-name = "vsys_3v3";
    		regulator-min-microvolt = <3300000>;
    		regulator-max-microvolt = <3300000>;
    		vin-supply = <&evm_12v0>;
    		regulator-always-on;
    		regulator-boot-on;
    	};
    
    	vdd_mmc1: fixed-regulator-sd {
    		/* TPS2051BD */
    		compatible = "regulator-fixed";
    		regulator-name = "vdd_mmc1";
    		regulator-min-microvolt = <3300000>;
    		regulator-max-microvolt = <3300000>;
    		regulator-boot-on;
    		enable-active-high;
    		vin-supply = <&vsys_3v3>;
    		gpio = <&exp1 6 GPIO_ACTIVE_HIGH>;
    	};
    
    	vddb: fixedregulator-vddb {
    		compatible = "regulator-fixed";
    		regulator-name = "vddb_3v3_display";
    		regulator-min-microvolt = <3300000>;
    		regulator-max-microvolt = <3300000>;
    		vin-supply = <&vsys_3v3>;
    		regulator-always-on;
    		regulator-boot-on;
    	};
    
    	leds {
    		compatible = "gpio-leds";
    
    		led-0 {
    			label = "am64-evm:red:heartbeat";
    			gpios = <&exp1 16 GPIO_ACTIVE_HIGH>;
    			linux,default-trigger = "heartbeat";
    			function = LED_FUNCTION_HEARTBEAT;
    			default-state = "off";
    		};
    	};
    
    	mdio_mux: mux-controller {
    		compatible = "gpio-mux";
    		#mux-control-cells = <0>;
    
    		mux-gpios = <&exp1 12 GPIO_ACTIVE_HIGH>;
    	};
    
    	mdio_mux_1: mdio-mux-1 {
    		compatible = "mdio-mux-multiplexer";
    		mux-controls = <&mdio_mux>;
    		mdio-parent-bus = <&cpsw3g_mdio>;
    		#address-cells = <1>;
    		#size-cells = <0>;
    
    		mdio@1 {
    			reg = <0x1>;
    			#address-cells = <1>;
    			#size-cells = <0>;
    
    			cpsw3g_phy3: ethernet-phy@3 {
    				reg = <3>;
    				tx-internal-delay-ps = <250>;
    				rx-internal-delay-ps = <2000>;
    			};
    		};
    	};
    
    	transceiver1: can-phy0 {
    		compatible = "ti,tcan1042";
    		#phy-cells = <0>;
    		max-bitrate = <5000000>;
    		standby-gpios = <&exp1 8 GPIO_ACTIVE_HIGH>;
    	};
    
    	transceiver2: can-phy1 {
    		compatible = "ti,tcan1042";
    		#phy-cells = <0>;
    		max-bitrate = <5000000>;
    		standby-gpios = <&exp1 9 GPIO_ACTIVE_HIGH>;
    	};
    
    	icssg1_eth: icssg1-eth {
    		compatible = "ti,am642-icssg-prueth";
    		pinctrl-names = "default";
    		pinctrl-0 = <&icssg1_rgmii1_pins_default>;
    
    		sram = <&oc_sram>;
    		ti,prus = <&pru1_0>, <&rtu1_0>, <&tx_pru1_0>, <&pru1_1>, <&rtu1_1>, <&tx_pru1_1>;
    		firmware-name = "ti-pruss/am65x-sr2-pru0-prueth-fw.elf",
    				"ti-pruss/am65x-sr2-rtu0-prueth-fw.elf",
    				"ti-pruss/am65x-sr2-txpru0-prueth-fw.elf",
    				"ti-pruss/am65x-sr2-pru1-prueth-fw.elf",
    				"ti-pruss/am65x-sr2-rtu1-prueth-fw.elf",
    				"ti-pruss/am65x-sr2-txpru1-prueth-fw.elf";
    
    		ti,pruss-gp-mux-sel = <2>,	/* MII mode */
    				      <2>,
    				      <2>,
    				      <2>,	/* MII mode */
    				      <2>,
    				      <2>;
    
    		mii-g-rt = <&icssg1_mii_g_rt>;
    		mii-rt = <&icssg1_mii_rt>;
    		iep = <&icssg1_iep0>,  <&icssg1_iep1>;
    
    		interrupt-parent = <&icssg1_intc>;
    		interrupts = <24 0 2>, <25 1 3>;
    		interrupt-names = "tx_ts0", "tx_ts1";
    
    		dmas = <&main_pktdma 0xc200 15>, /* egress slice 0 */
    		       <&main_pktdma 0xc201 15>, /* egress slice 0 */
    		       <&main_pktdma 0xc202 15>, /* egress slice 0 */
    		       <&main_pktdma 0xc203 15>, /* egress slice 0 */
    		       <&main_pktdma 0xc204 15>, /* egress slice 1 */
    		       <&main_pktdma 0xc205 15>, /* egress slice 1 */
    		       <&main_pktdma 0xc206 15>, /* egress slice 1 */
    		       <&main_pktdma 0xc207 15>, /* egress slice 1 */
    		       <&main_pktdma 0x4200 15>, /* ingress slice 0 */
    		       <&main_pktdma 0x4201 15>, /* ingress slice 1 */
    		       <&main_pktdma 0x4202 0>, /* mgmnt rsp slice 0 */
    		       <&main_pktdma 0x4203 0>; /* mgmnt rsp slice 1 */
    		dma-names = "tx0-0", "tx0-1", "tx0-2", "tx0-3",
    			    "tx1-0", "tx1-1", "tx1-2", "tx1-3",
    			    "rx0", "rx1",
    			    "rxmgm0", "rxmgm1";
    
    		icssg1_emac0: ethernet-mii0 {
    			phy-handle = <&icssg1_phy1>;
    			phy-mode = "rgmii-rxid";
    			syscon-rgmii-delay = <&main_conf 0x4110>;
    			/* Filled in by bootloader */
    			local-mac-address = [00 00 00 00 00 00];
    		};
    
    		icssg1_emac1: ethernet-mii1 {
    			syscon-rgmii-delay = <&main_conf 0x4114>;
    			/* Filled in by bootloader */
    			local-mac-address = [00 00 00 00 00 00];
    			status = "disabled";
    		};
    	};
    };
    
    /* Modify sram label present in k3-am64-main.dtsi */
    &oc_sram {
        main_r5fss0_core0_sram: r5f-sram@80000 {
            reg = <0x80000 0x40000>;
        };
        
        main_r5fss0_core1_sram: r5f-sram@c0000 {
            reg = <0xc0000 0x40000>;
        };
        
        main_r5fss1_core0_sram: r5f-sram@100000 {
            reg = <0x100000 0x40000>;
        };
        
        main_r5fss1_core1_sram: r5f-sram@140000 {
            reg = <0x140000 0x40000>;
        };
    };
    
    &main_r5fss0_core0 {
    	mboxes = <&mailbox0_cluster2 &mbox_main_r5fss0_core0>;
    	memory-region = <&main_r5fss0_core0_dma_memory_region>,
    			<&main_r5fss0_core0_memory_region>;
    	sram = <&main_r5fss0_core0_sram>;
    };
    
    &main_r5fss0_core1 {
    	mboxes = <&mailbox0_cluster2 &mbox_main_r5fss0_core1>;
    	memory-region = <&main_r5fss0_core1_dma_memory_region>,
    			<&main_r5fss0_core1_memory_region>;
    	sram = <&main_r5fss0_core1_sram>;
    };
    
    &main_r5fss1_core0 {
    	mboxes = <&mailbox0_cluster4 &mbox_main_r5fss1_core0>;
    	memory-region = <&main_r5fss1_core0_dma_memory_region>,
    			<&main_r5fss1_core0_memory_region>;
    	sram = <&main_r5fss1_core0_sram>;
    };
    
    &main_r5fss1_core1 {
    	mboxes = <&mailbox0_cluster4 &mbox_main_r5fss1_core1>;
    	memory-region = <&main_r5fss1_core1_dma_memory_region>,
    			<&main_r5fss1_core1_memory_region>;
    	sram = <&main_r5fss1_core1_sram>;
    };
    
    &mcu_m4fss {
    	mboxes = <&mailbox0_cluster6 &mbox_m4_0>;
    	memory-region = <&mcu_m4fss_dma_memory_region>,
    			<&mcu_m4fss_memory_region>;
    };
    
    &main_pmx0 {
    	main_mmc1_pins_default: main-mmc1-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0294, PIN_INPUT_PULLUP, 0) /* (J19) MMC1_CMD */
    			AM64X_IOPAD(0x028c, PIN_INPUT_PULLDOWN, 0) /* (L20) MMC1_CLK */
    			AM64X_IOPAD(0x0288, PIN_INPUT_PULLUP, 0) /* (K21) MMC1_DAT0 */
    			AM64X_IOPAD(0x0284, PIN_INPUT_PULLUP, 0) /* (L21) MMC1_DAT1 */
    			AM64X_IOPAD(0x0280, PIN_INPUT_PULLUP, 0) /* (K19) MMC1_DAT2 */
    			AM64X_IOPAD(0x027c, PIN_INPUT_PULLUP, 0) /* (K18) MMC1_DAT3 */
    			AM64X_IOPAD(0x0298, PIN_INPUT_PULLUP, 0) /* (D19) MMC1_SDCD */
    			AM64X_IOPAD(0x029c, PIN_INPUT, 0) /* (C20) MMC1_SDWP */
    			AM64X_IOPAD(0x0290, PIN_INPUT, 0) /* MMC1_CLKLB */
    		>;
    	};
    
    	main_uart0_pins_default: main-uart0-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0238, PIN_INPUT, 0) /* (B16) UART0_CTSn */
    			AM64X_IOPAD(0x023c, PIN_OUTPUT, 0) /* (A16) UART0_RTSn */
    			AM64X_IOPAD(0x0230, PIN_INPUT, 0) /* (D15) UART0_RXD */
    			AM64X_IOPAD(0x0234, PIN_OUTPUT, 0) /* (C16) UART0_TXD */
    		>;
    	};
    
    	main_spi0_pins_default: main-spi0-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0210, PIN_INPUT, 0) /* (D13) SPI0_CLK */
    			AM64X_IOPAD(0x0208, PIN_OUTPUT, 0) /* (D12) SPI0_CS0 */
    			AM64X_IOPAD(0x0214, PIN_OUTPUT, 0) /* (A13) SPI0_D0 */
    			AM64X_IOPAD(0x0218, PIN_INPUT, 0) /* (A14) SPI0_D1 */
    		>;
    	};
    
    	main_i2c1_pins_default: main-i2c1-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0268, PIN_INPUT_PULLUP, 0) /* (C18) I2C1_SCL */
    			AM64X_IOPAD(0x026c, PIN_INPUT_PULLUP, 0) /* (B19) I2C1_SDA */
    		>;
    	};
    
    	mdio1_pins_default: mdio1-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x01fc, PIN_OUTPUT, 4) /* (R2) PRG0_PRU1_GPO19.MDIO0_MDC */
    			AM64X_IOPAD(0x01f8, PIN_INPUT, 4) /* (P5) PRG0_PRU1_GPO18.MDIO0_MDIO */
    		>;
    	};
    
    	rgmii1_pins_default: rgmii1-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x01cc, PIN_INPUT, 4) /* (W5) PRG0_PRU1_GPO7.RGMII1_RD0 */
    			AM64X_IOPAD(0x01d4, PIN_INPUT, 4) /* (Y5) PRG0_PRU1_GPO9.RGMII1_RD1 */
    			AM64X_IOPAD(0x01d8, PIN_INPUT, 4) /* (V6) PRG0_PRU1_GPO10.RGMII1_RD2 */
    			AM64X_IOPAD(0x01f4, PIN_INPUT, 4) /* (V5) PRG0_PRU1_GPO17.RGMII1_RD3 */
    			AM64X_IOPAD(0x0188, PIN_INPUT, 4) /* (AA5) PRG0_PRU0_GPO10.RGMII1_RXC */
    			AM64X_IOPAD(0x0184, PIN_INPUT, 4) /* (W6) PRG0_PRU0_GPO9.RGMII1_RX_CTL */
    			AM64X_IOPAD(0x0124, PIN_OUTPUT, 4) /* (V15) PRG1_PRU1_GPO7.RGMII1_TD0 */
    			AM64X_IOPAD(0x012c, PIN_OUTPUT, 4) /* (V14) PRG1_PRU1_GPO9.RGMII1_TD1 */
    			AM64X_IOPAD(0x0130, PIN_OUTPUT, 4) /* (W14) PRG1_PRU1_GPO10.RGMII1_TD2 */
    			AM64X_IOPAD(0x014c, PIN_OUTPUT, 4) /* (AA14) PRG1_PRU1_GPO17.RGMII1_TD3 */
    			AM64X_IOPAD(0x00e0, PIN_OUTPUT, 4) /* (U14) PRG1_PRU0_GPO10.RGMII1_TXC */
    			AM64X_IOPAD(0x00dc, PIN_OUTPUT, 4) /* (U15) PRG1_PRU0_GPO9.RGMII1_TX_CTL */
    		>;
    	};
    
           rgmii2_pins_default: rgmii2-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0108, PIN_INPUT, 4) /* (W11) PRG1_PRU1_GPO0.RGMII2_RD0 */
    			AM64X_IOPAD(0x010c, PIN_INPUT, 4) /* (V11) PRG1_PRU1_GPO1.RGMII2_RD1 */
    			AM64X_IOPAD(0x0110, PIN_INPUT, 4) /* (AA12) PRG1_PRU1_GPO2.RGMII2_RD2 */
    			AM64X_IOPAD(0x0114, PIN_INPUT, 4) /* (Y12) PRG1_PRU1_GPO3.RGMII2_RD3 */
    			AM64X_IOPAD(0x0120, PIN_INPUT, 4) /* (U11) PRG1_PRU1_GPO6.RGMII2_RXC */
    			AM64X_IOPAD(0x0118, PIN_INPUT, 4) /* (W12) PRG1_PRU1_GPO4.RGMII2_RX_CTL */
    			AM64X_IOPAD(0x0134, PIN_OUTPUT, 4) /* (AA10) PRG1_PRU1_GPO11.RGMII2_TD0 */
    			AM64X_IOPAD(0x0138, PIN_OUTPUT, 4) /* (V10) PRG1_PRU1_GPO12.RGMII2_TD1 */
    			AM64X_IOPAD(0x013c, PIN_OUTPUT, 4) /* (U10) PRG1_PRU1_GPO13.RGMII2_TD2 */
    			AM64X_IOPAD(0x0140, PIN_OUTPUT, 4) /* (AA11) PRG1_PRU1_GPO14.RGMII2_TD3 */
    			AM64X_IOPAD(0x0148, PIN_OUTPUT, 4) /* (Y10) PRG1_PRU1_GPO16.RGMII2_TXC */
    			AM64X_IOPAD(0x0144, PIN_OUTPUT, 4) /* (Y11) PRG1_PRU1_GPO15.RGMII2_TX_CTL */
    		>;
    	};
    
    	main_usb0_pins_default: main-usb0-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x02a8, PIN_OUTPUT, 0) /* (E19) USB0_DRVVBUS */
    		>;
    	};
    
    	ospi0_pins_default: ospi0-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0000, PIN_OUTPUT, 0) /* (N20) OSPI0_CLK */
    			AM64X_IOPAD(0x002c, PIN_OUTPUT, 0) /* (L19) OSPI0_CSn0 */
    			AM64X_IOPAD(0x000c, PIN_INPUT, 0) /* (M19) OSPI0_D0 */
    			AM64X_IOPAD(0x0010, PIN_INPUT, 0) /* (M18) OSPI0_D1 */
    			AM64X_IOPAD(0x0014, PIN_INPUT, 0) /* (M20) OSPI0_D2 */
    			AM64X_IOPAD(0x0018, PIN_INPUT, 0) /* (M21) OSPI0_D3 */
    			AM64X_IOPAD(0x001c, PIN_INPUT, 0) /* (P21) OSPI0_D4 */
    			AM64X_IOPAD(0x0020, PIN_INPUT, 0) /* (P20) OSPI0_D5 */
    			AM64X_IOPAD(0x0024, PIN_INPUT, 0) /* (N18) OSPI0_D6 */
    			AM64X_IOPAD(0x0028, PIN_INPUT, 0) /* (M17) OSPI0_D7 */
    			AM64X_IOPAD(0x0008, PIN_INPUT, 0) /* (N19) OSPI0_DQS */
    		>;
    	};
    
    	main_mcan0_pins_default: main-mcan0-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0254, PIN_INPUT, 0) /* (B17) MCAN0_RX */
    			AM64X_IOPAD(0x0250, PIN_OUTPUT, 0) /* (A17) MCAN0_TX */
    		>;
    	};
    
    	main_mcan1_pins_default: main-mcan1-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x025c, PIN_INPUT, 0) /* (D17) MCAN1_RX */
    			AM64X_IOPAD(0x0258, PIN_OUTPUT, 0) /* (C17) MCAN1_TX */
    		>;
    	};
    
    	icssg1_mdio1_pins_default: icssg1-mdio1-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x015c, PIN_OUTPUT, 0) /* (Y6) PRG1_MDIO0_MDC */
    			AM64X_IOPAD(0x0158, PIN_INPUT, 0) /* (AA6) PRG1_MDIO0_MDIO */
    		>;
    	};
    
    	icssg1_rgmii1_pins_default: icssg1-rgmii1-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x00b8, PIN_INPUT, 2) /* (Y7) PRG1_PRU0_GPO0.PRG1_RGMII1_RD0 */
    			AM64X_IOPAD(0x00bc, PIN_INPUT, 2) /* (U8) PRG1_PRU0_GPO1.PRG1_RGMII1_RD1 */
    			AM64X_IOPAD(0x00c0, PIN_INPUT, 2) /* (W8) PRG1_PRU0_GPO2.PRG1_RGMII1_RD2 */
    			AM64X_IOPAD(0x00c4, PIN_INPUT, 2) /* (V8) PRG1_PRU0_GPO3.PRG1_RGMII1_RD3 */
    			AM64X_IOPAD(0x00d0, PIN_INPUT, 2) /* (AA7) PRG1_PRU0_GPO6.PRG1_RGMII1_RXC */
    			AM64X_IOPAD(0x00c8, PIN_INPUT, 2) /* (Y8) PRG1_PRU0_GPO4.PRG1_RGMII1_RX_CTL */
    			AM64X_IOPAD(0x00e4, PIN_INPUT, 2) /* (AA8) PRG1_PRU0_GPO11.PRG1_RGMII1_TD0 */
    			AM64X_IOPAD(0x00e8, PIN_INPUT, 2) /* (U9) PRG1_PRU0_GPO12.PRG1_RGMII1_TD1 */
    			AM64X_IOPAD(0x00ec, PIN_INPUT, 2) /* (W9) PRG1_PRU0_GPO13.PRG1_RGMII1_TD2 */
    			AM64X_IOPAD(0x00f0, PIN_INPUT, 2) /* (AA9) PRG1_PRU0_GPO14.PRG1_RGMII1_TD3 */
    			AM64X_IOPAD(0x00f8, PIN_INPUT, 2) /* (V9) PRG1_PRU0_GPO16.PRG1_RGMII1_TXC */
    			AM64X_IOPAD(0x00f4, PIN_INPUT, 2) /* (Y9) PRG1_PRU0_GPO15.PRG1_RGMII1_TX_CTL */
    		>;
    	};
    
    	icssg1_iep0_pins_default: icssg1-iep0-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0104, PIN_OUTPUT, 2) /* (W7) PRG1_PRU0_GPO19.PRG1_IEP0_EDC_SYNC_OUT0 */
    		>;
    	};
    
    	main_ecap0_pins_default: main-ecap0-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0270, PIN_INPUT, 0) /* (D18) ECAP0_IN_APWM_OUT */
    		>;
    	};
    };
    
    &main_uart0 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_uart0_pins_default>;
    };
    
    /* main_uart1 is reserved for firmware usage */
    &main_uart1 {
    	status = "reserved";
    };
    
    &main_uart2 {
    	status = "disabled";
    };
    
    &main_uart3 {
    	status = "disabled";
    };
    
    &main_uart4 {
    	status = "disabled";
    };
    
    &main_uart5 {
    	status = "disabled";
    };
    
    &main_uart6 {
    	status = "disabled";
    };
    
    &mcu_uart0 {
    	status = "disabled";
    };
    
    &mcu_uart1 {
    	status = "disabled";
    };
    
    &main_i2c1 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_i2c1_pins_default>;
    	clock-frequency = <400000>;
    
    	exp1: gpio@22 {
    		compatible = "ti,tca6424";
    		reg = <0x22>;
    		gpio-controller;
    		#gpio-cells = <2>;
    		gpio-line-names = "GPIO_eMMC_RSTn", "CAN_MUX_SEL",
    				  "GPIO_CPSW1_RST", "GPIO_RGMII1_RST",
    				  "GPIO_RGMII2_RST", "GPIO_PCIe_RST_OUT",
    				  "MMC1_SD_EN", "FSI_FET_SEL",
    				  "MCAN0_STB_3V3", "MCAN1_STB_3V3",
    				  "CPSW_FET_SEL", "CPSW_FET2_SEL",
    				  "PRG1_RGMII2_FET_SEL", "TEST_GPIO2",
    				  "GPIO_OLED_RESETn", "VPP_LDO_EN",
    				  "TEST_LED1", "TP92", "TP90", "TP88",
    				  "TP87", "TP86", "TP89", "TP91";
    	};
    
    	/* osd9616p0899-10 */
    	display@3c {
    		compatible = "solomon,ssd1306fb-i2c";
    		reg = <0x3c>;
    		reset-gpios = <&exp1 14 GPIO_ACTIVE_LOW>;
    		vbat-supply = <&vddb>;
    		solomon,height = <16>;
    		solomon,width = <96>;
    		solomon,com-seq;
    		solomon,com-invdir;
    		solomon,page-offset = <0>;
    		solomon,prechargep1 = <2>;
    		solomon,prechargep2 = <13>;
    	};
    };
    
    /* mcu_gpio0 is reserved for mcu firmware usage */
    &mcu_gpio0 {
    	status = "reserved";
    };
    
    &mcu_i2c0 {
    	status = "disabled";
    };
    
    &mcu_i2c1 {
    	status = "disabled";
    };
    
    &mcu_spi0 {
    	status = "disabled";
    };
    
    &mcu_spi1 {
    	status = "disabled";
    };
    
    &main_spi0 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_spi0_pins_default>;
    	ti,pindir-d0-out-d1-in = <1>;
    	eeprom@0 {
    		compatible = "microchip,93lc46b";
    		reg = <0>;
    		spi-max-frequency = <1000000>;
    		spi-cs-high;
    		data-size = <16>;
    	};
    };
    
    &sdhci0 {
    	/* emmc */
    	bus-width = <8>;
    	non-removable;
    	ti,driver-strength-ohm = <50>;
    	disable-wp;
    };
    
    &sdhci1 {
    	/* SD/MMC */
    	vmmc-supply = <&vdd_mmc1>;
    	pinctrl-names = "default";
    	bus-width = <4>;
    	pinctrl-0 = <&main_mmc1_pins_default>;
    	ti,driver-strength-ohm = <50>;
    	disable-wp;
    };
    
    &usbss0 {
    	ti,vbus-divider;
    	ti,usb2-only;
    };
    
    &usb0 {
    	dr_mode = "otg";
    	maximum-speed = "high-speed";
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_usb0_pins_default>;
    };
    
    &cpsw3g {
    	pinctrl-names = "default";
    	pinctrl-0 = <&mdio1_pins_default
    		     &rgmii1_pins_default
    		     &rgmii2_pins_default>;
    
    	cpts@3d000 {
    		ti,pps = <7 1>;
    	};
    };
    
    &cpsw_port1 {
    	phy-mode = "rgmii-rxid";
    	phy-handle = <&cpsw3g_phy0>;
    };
    
    &cpsw_port2 {
    	phy-mode = "rgmii-rxid";
    	phy-handle = <&cpsw3g_phy3>;
    };
    
    &cpsw3g_mdio {
    	cpsw3g_phy0: ethernet-phy@0 {
    		reg = <0>;
    		ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
    		ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
    	};
    };
    
    #define TS_OFFSET(pa, val)     (0x4+(pa)*4) (0x10000 | val)
    
    &timesync_router {
    	pinctrl-names = "default";
    	pinctrl-0 = <&mcu_cpts_pps>;
    
    	/* Example of the timesync routing */
    	mcu_cpts_pps: mcu-cpts-pps {
    		pinctrl-single,pins = <
    				/* pps [cpts genf1] in22 -> out37 [cpts hw8_push] */
    				TS_OFFSET(37, 22)
    				/* pps [cpts genf1] in22 -> out25 [SYNC1_OUT pin] */
    				TS_OFFSET(25, 22)
    				>;
    	};
    };
    
    &mailbox0_cluster2 {
    	mbox_main_r5fss0_core0: mbox-main-r5fss0-core0 {
    		ti,mbox-rx = <0 0 2>;
    		ti,mbox-tx = <1 0 2>;
    	};
    
    	mbox_main_r5fss0_core1: mbox-main-r5fss0-core1 {
    		ti,mbox-rx = <2 0 2>;
    		ti,mbox-tx = <3 0 2>;
    	};
    };
    
    &mailbox0_cluster3 {
    	status = "disabled";
    };
    
    &mailbox0_cluster4 {
    	mbox_main_r5fss1_core0: mbox-main-r5fss1-core0 {
    		ti,mbox-rx = <0 0 2>;
    		ti,mbox-tx = <1 0 2>;
    	};
    
    	mbox_main_r5fss1_core1: mbox-main-r5fss1-core1 {
    		ti,mbox-rx = <2 0 2>;
    		ti,mbox-tx = <3 0 2>;
    	};
    };
    
    &mailbox0_cluster5 {
    	status = "disabled";
    };
    
    &mailbox0_cluster6 {
    	mbox_m4_0: mbox-m4-0 {
    		ti,mbox-rx = <0 0 2>;
    		ti,mbox-tx = <1 0 2>;
    	};
    };
    
    &mailbox0_cluster7 {
    	status = "disabled";
    };
    
    &serdes_ln_ctrl {
    	idle-states = <AM64_SERDES0_LANE0_PCIE0>;
    };
    
    &serdes0 {
    	serdes0_pcie_link: phy@0 {
    		reg = <0>;
    		cdns,num-lanes = <1>;
    		#phy-cells = <0>;
    		cdns,phy-type = <PHY_TYPE_PCIE>;
    		resets = <&serdes_wiz0 1>;
    	};
    };
    
    &pcie0_rc {
    	reset-gpios = <&exp1 5 GPIO_ACTIVE_HIGH>;
    	phys = <&serdes0_pcie_link>;
    	phy-names = "pcie-phy";
    	num-lanes = <1>;
    };
    
    &pcie0_ep {
    	phys = <&serdes0_pcie_link>;
    	phy-names = "pcie-phy";
    	num-lanes = <1>;
    	status = "disabled";
    };
    
    &tscadc0 {
    	/* ADC is reserved for R5 usage */
    	status = "reserved";
    };
    
    &ospi0 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&ospi0_pins_default>;
    
    	flash@0{
    		compatible = "jedec,spi-nor";
    		reg = <0x0>;
    		spi-tx-bus-width = <8>;
    		spi-rx-bus-width = <8>;
    		spi-max-frequency = <25000000>;
    		cdns,tshsl-ns = <60>;
    		cdns,tsd2d-ns = <60>;
    		cdns,tchsh-ns = <60>;
    		cdns,tslch-ns = <60>;
    		cdns,read-delay = <4>;
    		cdns,phy-mode;
    		#address-cells = <1>;
    		#size-cells = <1>;
    	};
    };
    
    &main_mcan0 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_mcan0_pins_default>;
    	phys = <&transceiver1>;
    };
    
    &main_mcan1 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_mcan1_pins_default>;
    	phys = <&transceiver2>;
    };
    
    &icssg0_mdio {
    	status = "disabled";
    };
    
    &icssg1_mdio {
    	pinctrl-names = "default";
    	
    	icssg1_phy1: ethernet-phy@0 {
    		reg = <0xf>;
    		tx-internal-delay-ps = <250>;
    		rx-internal-delay-ps = <2000>;
    	};
    };
    
    &icssg1_iep0 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&icssg1_iep0_pins_default>;
    };
    
    &ecap0 {
    	/* PWM is available on Pin 1 of header J12 */
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_ecap0_pins_default>;
    };
    

    And I am also starting to see the below error since I tried installing the latest mcu_plus_sdk (08_06) & latest Syscfg version 1.16. earlier I was working on mcu_plus_sdk version 08_05 and syscfg version 1.14. Even when I removed the 08_06 version, still I am not able to build due to the below error-

    After I uninstalled SysCfg 1.16 and just kept Syscfg 1.14 and restarted my PC, I see below error while loading hello-world CCS project -

  • Hello Ankita,

    The K3 Resource Partitioning Tool is bundled in the Linux Processor SDK under board-support/k3-respart-tool.

    I am reassigning your thread to another team member to comment on the CCS project question.

    Regards,

    Nick

  • Hi Ankita,

    And I am also starting to see the below error since I tried installing the latest mcu_plus_sdk (08_06) & latest Syscfg version 1.16. earlier I was working on mcu_plus_sdk version 08_05 and syscfg version 1.14. Even when I removed the 08_06 version, still I am not able to build due to the below error-

    The latest version of the MCU+SDK is not compatible with the SysConfig v1.16 tool.

    In the official documentation also, it is recommended to use the SysConfig v1.14. Please refer SDK tools for more info.

    After I uninstalled SysCfg 1.16 and just kept Syscfg 1.14 and restarted my PC, I see below error while loading hello-world CCS project -

    Can you please provide the whole error log of the issue that came up while importing hello world example?

    Thanks & Regards,

    Tushar

  • Hi Nick,

    Good morning!

    I tried the below-

    1. Debugging- I was able to attach to CCS and add a breakpoint when loaded "ipc_rpmsg_echo_linux_am64x-evm_r5fss0-0_freertos_ti-arm-clang" on the R5F0 core. I couldn't really debug the EtherCAT-Beckhoff example. Probably because it starts as soon as we load the program on R5F0 and start the core. And the issue is in the INIT() function.

    2. Using the Resource Partitioning tool- My observations are below:

    1. Used the k3-respart-tool, followed the mentioned forum post to make the changes for R5F0 and generated the sciclient_defaultBoardcfg_rm_mcusdk.c, copied and renamed it to source/drivers/sciclient/sciclient_default_boardcfg/am64x_am243x/sciclient_defaultBoardcfg_rm_linux.c and compiled "sbl_emmc_linux_am64x-evm_r5fss0-0_nortos_ti-arm-clang" and "ipc_rpmsg_echo_linux_am64x-evm_r5fss0-0_freertos_ti-arm-clang".Also generated a linuxappimage

    3. Changed the dip switches to UART boot mode and then ran

    C:\HBK\dev\ti\mcu_plus_sdk_am64x_08_05_00_24\tools\boot>python uart_uniflash.py -p COM4 --cfg=C:\HBK\dev\ti\mcu_plus_sdk_am64x_08_05_00_24\examples\drivers\boot\sbl_emmc_linux\am64x-evm\r5fss0-0_nortos\default_sbl_emmc_linux_hs.cfg
    
    Parsing config file ...
    Parsing config file ... SUCCESS. Found 4 command(s) !!!
    
    Executing command 1 of 4 ...
    Found flash writer ... sending sbl_prebuilt/am64x-evm/sbl_uart_uniflash.release.hs_fs.tiimage
    Sent flashwriter sbl_prebuilt/am64x-evm/sbl_uart_uniflash.release.hs_fs.tiimage of size 297306 bytes in 29.57s.
    
    Executing command 2 of 4 ...
    Command arguments : --file=C:/HBK/dev/ti/workspaces/sitara01/sbl_emmc_linux_am64x-evm_r5fss0-0_nortos_ti-arm-clang/Debug/sbl_emmc_linux.Debug.hs_fs.tiimage --operation=flash-emmc --flash-offset=0x0
    Sent C:/ti/workspaces/sitara01/sbl_emmc_linux_am64x-evm_r5fss0-0_nortos_ti-arm-clang/Debug/sbl_emmc_linux.Debug.hs_fs.tiimage of size 320085 bytes in 32.24s.
    [STATUS] SUCCESS !!!
    
    Executing command 3 of 4 ...
    Command arguments : --file=C:/HBK/dev/ti/workspaces/sitara01/ipc_rpmsg_echo_linux_am64x-evm_r5fss0-0_freertos_ti-arm-clang/Debug/ipc_rpmsg_echo_linux_am64x-evm_r5fss0-0_freertos_ti-arm-clang.appimage --operation=flash-emmc --flash-offset=0x800000
    Sent C:/ti/workspaces/sitara01/ipc_rpmsg_echo_linux_am64x-evm_r5fss0-0_freertos_ti-arm-clang/Debug/ipc_rpmsg_echo_linux_am64x-evm_r5fss0-0_freertos_ti-arm-clang.appimage of size 64640 bytes in 9.02s.
    [STATUS] SUCCESS !!!
    
    Executing command 4 of 4 ...
    Command arguments : --file=../../tools/boot/linuxAppimageGen/linux.appimage.hs_fs --operation=flash-emmc --flash-offset=0xA00000
    Sent ../../tools/boot/linuxAppimageGen/linux.appimage.hs_fs of size 849099 bytes in 82.55s.
    [STATUS] SUCCESS !!!
    
    All commands from config file are executed !!!

    
    

    Once the script ran successfully, changed the dip switches to EMMC boot mode.

    I see below error when the EVM boots -

    ▒
    DMSC Firmware Version 8.5.3--v08.05.03 (Chill Capybar
    DMSC Firmware revision 0x8
    DMSC ABI revision 3.1
    
    Some tests have failed!!

    I think our Sitara board only works with the HS_FS versions. Below is the default_sbl_emmc_linux_hs.cfg

    #-----------------------------------------------------------------------------#
    #                                                                             #
    #      DEFAULT CONFIGURATION FILE TO BE USED WITH THE FLASHWRITER SCRIPT      #
    #                               FOR HS DEVICE                                 #
    #                                                                             #
    #-----------------------------------------------------------------------------#
    #
    # By default this config file,
    # - points to pre-built flash writer, bootloader for this HS EVM
    # - The application image points to relative path of the ipc rpmsg linux application image for this HS EVM
    #   - Make sure this application is built before running this script
    # - You can customized this config file to point to your own bootloader and/or application images
    # - You can use --operation=flashverify-emmc if you just want to verify the flash contents and not flash the file.
    #
    
    # First point to sbl_uart_uniflash binary, which function's as a server to flash one or more files to eMMC
    --flash-writer=sbl_prebuilt/am64x-evm/sbl_uart_uniflash.release.hs_fs.tiimage
    
    # Now send one or more files to flash or flashverify as needed. The order of sending files does not matter
    
    # When sending bootloader make sure to flash at offset 0x0. ROM expects bootloader at offset 0x0 of eMMC
    --file=C:/ti/workspaces/sitara01/sbl_emmc_linux_am64x-evm_r5fss0-0_nortos_ti-arm-clang/Debug/sbl_emmc_linux.Debug.hs_fs.tiimage --operation=flash-emmc --flash-offset=0x0
    
    # When sending application image, make sure to flash at offset 0x800000 (default) or to whatever offset your bootloader is configured for
    --file=C:/ti/workspaces/sitara01/ipc_rpmsg_echo_linux_am64x-evm_r5fss0-0_freertos_ti-arm-clang/Debug/ipc_rpmsg_echo_linux_am64x-evm_r5fss0-0_freertos_ti-arm-clang.appimage --operation=flash-emmc --flash-offset=0x800000
    
    # Linux image is flashed at 0xA00000 or to whatever offset your bootloader is configured for
    --file=../../tools/boot/linuxAppimageGen/linux.appimage.hs_fs --operation=flash-emmc --flash-offset=0xA00000
    
    

    I changed the above file for ipc_rpmsg_echo_linux as below and tried again but still see the same issue "Some tests have failed"

    --file=C:/ti/workspaces/sitara02/ipc_rpmsg_echo_linux_am64x-evm_system_freertos/Debug/ipc_rpmsg_echo_linux_system.appimage --operation=flash-emmc --flash-offset=0x800000

    I was earlier using a SD card and SD card boot mode.

    Also, I haven't been able to find the reason behind the "Some tests have failed". Can you please point out what would have gone wrong here?

    Thanks,

    Ankita

  • Hello Ankita,

    You are flashing the GP appimage (.appimage) for IPC example. That's why, SBL says "Some tests have failed". Please flash the HS-FS appimage (.appimage.hs_fs) of IPC example. Afterwards, the booting should be successful.

    Regards,

    Prashant

  • Hi Prashant,

    I tried with hs_fs appimage. And now I see below error-

    ▒
    DMSC Firmware Version 8.5.3--v08.05.03 (Chill Capybar
    DMSC Firmware revision 0x8
    DMSC ABI revision 3.1
    
    [BOOTLOADER_PROFILE] Boot Media       : undefined
    [BOOTLOADER_PROFILE] Boot Image Size  : 0 KB
    [BOOTLOADER_PROFILE] Cores present    :
    m4f0-0
    [BOOTLOADER PROFILE] System_init                      :     387243us
    [BOOTLOADER PROFILE] Drivers_open                     :     765607us
    [BOOTLOADER PROFILE] Board_driversOpen                :          0us
    [BOOTLOADER PROFILE] App_loadImages                   :     992630us
    [BOOTLOADER_PROFILE] SBL Total Time Taken             :    3579619us
    
    Image loading done, switching to application ...
    Starting linux and RTOS/Baremetal applications
    
    ERROR: Bootloader_socCpuResetReleaseSel

    Could something be wrong with the linux appimage? 

  • Hi Ankita,

    Could something be wrong with the linux appimage? 

    Mostly yes. How did you create the Linux Appimage. Please make sure you are using the unsigned binaries of the ATF & OPTEE otherwise the boot fails. The PSDK v8.4 & v8.5 do not contain the unsigned binaries of ATF & OPTEE. So, if you working with these PSDK version, you have to create the ATF & OPTEE by yourself.

    However, starting with PSDK v8.6, the PSDK comes with the unsigned binaries of ATF & OPTEE. So, you can use this PSDK version to get the binaries. For convenience, I am attaching the unsigned binaries from PSDK v8.6 which you can use to generate the Linux Appimage.

    2273.prebuilt-images.zip

    Regards,

    Prashant

  • Hi Prashant,

    I am downloaded the pre-built images "am64xx-hs-evm-linux-sdk-bin-08.02.00.23.tar.xz" from here PROCESSOR-SDK-AM64X Software development kit (SDK) | TI.com and the I followed the steps mentioned here AM64x MCU+ SDK: Booting Tools to generate the linux app image. I did it from windows as I was seeing an error on linux.

    [linuxAppimageGen]$ make linux.appimage
    /home/ti/gcc-arm-9.2-2019.12-x86_64-aarch64-none-elf/bin/aarch64-none-elf-ld -b binary -A aarch64 --oformat elf64-littleaarch64 --section-start=.data=0x0701a0000 -e 0x0701a0000 /home/angupta/ti/ti-processor-sdk-linux-am64xx-evm-08.06.00.42/board-support/prebuilt-images/bl31.bin -o bl31.elf
    make: /home/ti/gcc-arm-9.2-2019.12-x86_64-aarch64-none-elf/bin/aarch64-none-elf-ld: No such file or directory

    I am now trying with the pre-build images that you have shared. Will post the results here.

  • Hi Ankita,

    The error on Linux you see is most probably because the required compiler is not installed in ${HOME}/ti directory. Also, you are using the PSDK v8.6 however you used bl31.bin & bl32.bin binaries which are signed. The unsigned binaries are named bl31.bin.unsigned & bl32.bin.unsigned.

    Please refer to the below FAQ (not complete yet) which should clear things a bit

    https://e2e.ti.com/.../faq-how-to-generate-linux-appimage-for-linux-sbls-in-mcu-sdk

    Regards,

    Prashant

  • Thanks. I am following what you suggested. However, since I used hs_fs version of other images, I have a doubt on linux.appimage and u-boot-spl.bin-am64xx-evm. These images need not be hs_fs?

  • To generate Linux Appimage, the signed binaries of ATF, OPTEE & A53 SPL are not required because the MCU+ SDK package them in one image generating linux.appimge and then sign this image instead generating linux.appimage.hs_fs. For HS-FS boards, you then flash this linux.appimage.hs_fs

    The SBL at runtime authenticates the image and if successful loads each component in the image at their respective addresses.

    So, in a nutshell, for any board you must use the unsigned binaries. The MCU+ SDK will package these into one and sign the whole image itself for HS board.

    Regards,

    Prashant

  • Hi Prashant,

    I tried creating a linuxappimage on both linux and windows.

    On linux, I downloaded the missing compiler. Below is the error and the config.mak file

    export MCU_PLUS_SDK_PATH?=$(abspath ../../..)
    include $(MCU_PLUS_SDK_PATH)/imports.mak
    include $(MCU_PLUS_SDK_PATH)/devconfig/devconfig.mak
    
    APP_IMAGE_SIGN_CMD = $(MCU_PLUS_SDK_PATH)/tools/boot/signing/appimage_x509_cert_gen.py
    
    
    # User needs to point to the path where the unsigned ATF (bl31), OPTEE (bl32.bin)
    # and A53 SPL (u-boot-spl.bin) binaries are build.
    # User needs to build these binaries as mentioned in the Linux SDK documentation
    # The prebuilt images available with Linux SDK is the signed ATF, OPTEE and A53 SPL,
    # but we requires unsigned images to create the linux.appimage and sign the final image
    # for HS-FS/HS devices
    PSDK_LINUX_IMAGE_PATH=$(HOME)/prebuilt_spl
    
    #Path for prebuit images in Processor SDK linux
    #PSDK_LINUX_PREBUILT_IMAGES=$(PSDK_LINUX_IMAGE_PATH)
    PSDK_LINUX_PREBUILT_IMAGES=/home/angupta/ti/ti-processor-sdk-linux-am64xx-evm-08.06.00.42/board-support/prebuilt-images
    
    #Input linux binaries
    ATF_BIN_NAME=bl31.bin.unsigned
    OPTEE_BIN_NAME=bl32.bin.unsigned
    SPL_BIN_NAME=u-boot-spl.bin-am64xx-evm
    
    #Linux image load address
    ATF_LOAD_ADDR=0x0701a0000
    OPTEE_LOAD_ADDR=0x9e800000
    SPL_LOAD_ADDR=0x80080000
    
    #Output appimage name
    LINUX_BOOTIMAGE_NAME=linux.appimage.hs_fs
    

    Here is the error on linux-

    [linuxAppimageGen]$ make -s all
    Creating ATF RPRC image
    make: *** [makefile:99: bl31.bin.rprc] Error 255

    I tried with the unsigned images you shared, but still I see the same error.

    On Windows, the make results into error as below, but it does create a linux appimage. 

    C:\HBK\dev\ti\mcu_plus_sdk_am64x_08_05_00_24\tools\boot\linuxAppimageGen>gmake -s all
    Creating ATF RPRC image
    Parsing the input object file, bl31.bin.elf.
    File conversion complete!
    Creating OPTEE RPRC image
    Parsing the input object file, bl32.bin.elf.
    File conversion complete!
    Creating SPL RPRC image
    Parsing the input object file, u-boot-spl.elf.
    File conversion complete!
    .
    Creating
    Generating certificate for linux.appimage ...
    process_begin: CreateProcess(NULL, C:/ti/ccs1210/ccs/utils/cygwin/rm -f temp_stdout.txt, ...) failed.
    make (e=2): The system cannot find the file specified.
    makefile:77: recipe for target 'linux.appimage.hs_fs' failed
    gmake: *** [linux.appimage.hs_fs] Error 2

  • Hi Ankita,

    Sorry for the inconvenience but it seems the MCU+ SDK is using the tool (out2rprpc.exe), which can only run on Windows, to generate RPRC image. You can stick to Windows for now to create the Linux Appimage. If you want, we can discuss the way to generate Linux Appimage on Linux later.

    On Windows, the make results into error as below, but it does create a linux appimage.

    The error is coming probably because the CCS1210 is not installed so the system could not find the path to rm command. You can ignore this error as it is generated by the command to remove the temp file generated.

    One more thing: I see your config.mak file updates the LINUX_BOOTIMAGE_NAME to linux.appimage.hs_fs. Please note this variable should not be modified. As the MCU+ SDK automatically generates a HS-FS appimage using the basename defined in LINUX_BOOTIMAGE_NAME.

    So, if you are setting the LINUX_BOOTIMAGE_NAME to linux.appimage.hs_fs, the MCU+ SDK will generate the HS-SF appimage with the name linux.appimage.hs_fs.hs_fs.

    In a nutshell, the only variables you need to edit in config.mak are the variables containing path and name of the ATF, OPTEE & A53 SPL. Everything else remains the same.

    Regards,

    Prashant

  • Thanks Prashant. That helped. I corrected the config.mak as your suggestion and used the Windows generated linux.appimage.hs_fs

    The board boots but still gets stuck. Below are the logs-

    I
    ▒
    DMSC Firmware Version 8.5.3--v08.05.03 (Chill Capybar
    DMSC Firmware revision 0x8
    DMSC ABI revision 3.1
    
    [BOOTLOADER_PROFILE] Boot Media       : undefined
    [BOOTLOADER_PROFILE] Boot Image Size  : 0 KB
    [BOOTLOADER_PROFILE] Cores present    :
    m4f0-0
    [BOOTLOADER PROFILE] System_init                      :     385112us
    [BOOTLOADER PROFILE] Drivers_open                     :     765607us
    [BOOTLOADER PROFILE] Board_driversOpen                :          0us
    [BOOTLOADER PROFILE] App_loadImages                   :     992413us
    [BOOTLOADER_PROFILE] SBL Total Time Taken             :    3638568us
    
    Image loading done, switching to application ...
    Starting linux and RTOS/Baremetal applications
    
    ENOTICE: R BL3R1: vO2.R8(relea:se):v2.8 -226-g2fcd408bb3-dirty
    NOTICE:  BL31: Built : 13:45:56, Feb 27 2023
    I/TC:
    I/TC: OP-TEE version: 3.20.0 (gcc version 9.2.1 20191025 (GNU Toolchain for the A-profile Architecture 9.2-2019.12 (arm-9.10))) #1 Mon Feb 27 13:46:53 UTC 2023 aarch64
    I/TC: WARNING: This OP-TEE configuration might be insecure!
    I/TC: WARNING: Please check https://optee.readthedocs.io/en/latest/architecture/porting_guidelines.html
    I/TC: Primary CPU initializing
    I/TC: SYSFW ABI: 3.1 (firmware rev 0x0008 '8.5.3--v08.05.03 (Chill Capybar')
    I/TC: HUK Initialized
    I/TC: Activated SA2UL device
    I/TC: Enabled firewalls for SA2UL TRNG device
    I/TC: SA2UL TRNG initialized
    I/TC: SA2UL Drivers initialized
    I/TC: Primary CPU switching to normal world boot
    

    I can't comprehend as to what could be wrong now. Would you be able to comment?

  • Hi Ankita,

    So, the Linux Appimage boots fine. Now, comes the next piece of the puzzle to boot Linux. The piece you are missing is the U-Boot image.

    Please note the Linux Appimage only contains the A53 SPL image and not the proper U-Boot itself. The A53 SPL boots the U-Boot which then boots the Linux kernel from the SD card.

    In the PSDK prebuilt-images path, you would find the U-Boot image named u-boot.img. You must flash this image at the offset 0x300000. To flash this, you can add the below line in flashing config file (.cfg) you are using to perform the flashing.

    --file=<path to u-boot.img> --operation=flash --flash-offset=0x300000

    This should flash the U-Boot image at the right offset. Then, the A53 SPL should be able to boot U-Boot. And finally, if you have SD card inserted with WIC image flashed, the U-Boot will boot Linux kernel from SD card.

    Regards,

    Prashant

  • Hi Ankita,

    Sorry, I did not see the logs properly. I see only the ATF & OPTEE logs. It seems the A53 SPL did not boot. Once we have got the A53 SPL also working, you can follow the above response to flash U-Boot.

    For now, could you please confirm if you shared the full logs. If yes then A53 did not boot.

  • Yes, I did share all the logs. Also I tried putting the uboot image, but I still see that the device is stuck at the same log as earlier.

    C:\HBK\dev\ti\mcu_plus_sdk_am64x_08_05_00_24\tools\boot>python uart_uniflash.py -p COM4 --cfg=C:\HBK\dev\ti\mcu_plus_sdk_am64x_08_05_00_24\examples\drivers\boot\sbl_emmc_linux\am64x-evm\r5fss0-0_nortos\default_sbl_emmc_linux_hs.cfg
    
    Parsing config file ...
    Parsing config file ... SUCCESS. Found 5 command(s) !!!
    
    Executing command 1 of 5 ...
    Found flash writer ... sending sbl_prebuilt/am64x-evm/sbl_uart_uniflash.release.hs_fs.tiimage
    Sent flashwriter sbl_prebuilt/am64x-evm/sbl_uart_uniflash.release.hs_fs.tiimage of size 297306 bytes in 29.39s.
    
    Executing command 2 of 5 ...
    Command arguments : --file=C:/HBK/dev/ti/workspaces/sitara01/sbl_emmc_linux_am64x-evm_r5fss0-0_nortos_ti-arm-clang/Debug/sbl_emmc_linux.Debug.hs_fs.tiimage --operation=flash-emmc --flash-offset=0x0
    Sent C:/HBK/dev/ti/workspaces/sitara01/sbl_emmc_linux_am64x-evm_r5fss0-0_nortos_ti-arm-clang/Debug/sbl_emmc_linux.Debug.hs_fs.tiimage of size 320085 bytes in 32.22s.
    [STATUS] SUCCESS !!!
    
    Executing command 3 of 5 ...
    Command arguments : --file=C:/HBK/dev/ti/workspaces/sitara02/ipc_rpmsg_echo_linux_am64x-evm_system_freertos/Debug/ipc_rpmsg_echo_linux_system.appimage.hs_fs --operation=flash-emmc --flash-offset=0x800000
    Sent C:/HBK/dev/ti/workspaces/sitara02/ipc_rpmsg_echo_linux_am64x-evm_system_freertos/Debug/ipc_rpmsg_echo_linux_system.appimage.hs_fs of size 321163 bytes in 50.81s.
    [STATUS] SUCCESS !!!
    
    Executing command 4 of 5 ...
    Command arguments : --file=../../tools/boot/linuxAppimageGen/linux.appimage.hs_fs --operation=flash-emmc --flash-offset=0xA00000
    Sent ../../tools/boot/linuxAppimageGen/linux.appimage.hs_fs of size 889915 bytes in 106.3s.
    [STATUS] SUCCESS !!!
    
    Executing command 5 of 5 ...
    Command arguments : --file=C:/HBK/dev/ti/ti-processor-sdk-linux-am64xx-evm-08.06.00.42/board-support/prebuilt-images/u-boot.img --operation=flash --flash-offset=0x300000
    Sent C:/HBK/dev/ti/ti-processor-sdk-linux-am64xx-evm-08.06.00.42/board-support/prebuilt-images/u-boot.img of size 1131919 bytes in 112.01s.
    [STATUS] SUCCESS !!!
    
    All commands from config file are executed !!!

  • Hi Ankita,

    Pleaes let me know if you are using a custom board.

  • Here is the picture of the board-

    It is the TMDS64EVM board, not custom.

    I also tried flashing the u-boot as below i.e. changed the operation from "flash" to "flash-emmc" but still no change in the logs.

    --file=<path to u-boot.img> --operation=flash-emmc --flash-offset=0x300000

  • Hi Ankita,

    Thank you for sharing the picture of the board. It helps!

    --file=<path to u-boot.img> --operation=flash-emmc --flash-offset=0x300000

    Sorry I did not notice you are using eMMC. The flash-emmc is the right operation to flash to eMMC.

    Next, I am attaching one A53 SPL binary. Please once try booting the Linux Appimage generated using the attached A53 SPL binary

    https://e2e.ti.com/cfs-file/__key/communityserver-discussions-components-files/791/u_2D00_boot_2D00_spl.bin_2D00_am64xx_2D00_evm

    Regards,

    Prashant

  • Hi Prashant,

    The boot logs this time went beyond. However, it still seems stuck at System Initialization.

    I am attaching the logs here.

    DMSC Firmware Version 8.5.3--v08.05.03 (Chill Capybar
    DMSC Firmware revision 0x8
    DMSC ABI revision 3.1
    
    [BOOTLOADER_PROFILE] Boot Media       : undefined 
    [BOOTLOADER_PROFILE] Boot Image Size  : 0 KB 
    [BOOTLOADER_PROFILE] Cores present    : 
    m4f0-0
    [BOOTLOADER PROFILE] System_init                      :     385112us 
    [BOOTLOADER PROFILE] Drivers_open                     :     765607us 
    [BOOTLOADER PROFILE] Board_driversOpen                :          0us 
    [BOOTLOADER PROFILE] App_loadImages                   :     992368us 
    [BOOTLOADER_PROFILE] SBL Total Time Taken             :    3619745us 
    
    Image loading done, switching to application ...
    Starting linux and RTOS/Baremetal applications
    
    ENOTRICE:R  BOL31: Rv2.8(re:lease) :v2B.8-226-g2fcd408bb3-dirty
    NOTICE:  BL31: Built : 13:45:56, Feb 27 2023
    I/TC: 
    I/TC: OP-TEE version: 3.20.0 (gcc version 9.2.1 20191025 (GNU Toolchain for the A-profile Architecture 9.2-2019.12 (arm-9.10))) #1 Mon Feb 27 13:46:53 UTC 2023 aarch64
    I/TC: WARNING: This OP-TEE configuration might be insecure!
    I/TC: WARNING: Please check https://optee.readthedocs.io/en/latest/architecture/porting_guidelines.html
    I/TC: Primary CPU initializing
    I/TC: SYSFW ABI: 3.1 (firmware rev 0x0008 '8.5.3--v08.05.03 (Chill Capybar')
    I/TC: HUK Initialized
    I/TC: Activated SA2UL device
    I/TC: Enabled firewalls for SA2UL TRNG device
    I/TC: SA2UL TRNG initialized
    I/TC: SA2UL Drivers initialized
    I/TC: Primary CPU switching to normal world boot
    
    U-Boot SPL 2021.01 (Jun 09 2023 - 16:22:16 +0530)
    SYSFW ABI: 3.1 (firmware rev 0x0008 '8.5.3--v08.05.03 (Chill Capybar')
    Trying to boot from MMC1
    Authentication passed
    Authentication passed
    
    
    U-Boot 2021.01-g2ee8efd654 (Feb 27 2023 - 13:48:24 +0000)
    
    SoC:   AM64X SR2.0 HS-FS
    Model: Texas Instruments AM642 EVM
    Board: AM64-EVM rev C
    DRAM:  2 GiB
    NAND:  0 MiB
    MMC:   mmc@fa10000: 0, mmc@fa00000: 1
    Loading Environment from FAT... OK
    In:    serial@2800000
    Out:   serial@2800000
    Err:   serial@2800000
    Unidentified board claims AM64-EVM in eeprom header
    Net:   eth0: ethernet@8000000port@1
    Hit any key to stop autoboot:  2  1  0 
    switch to partitions #0, OK
    mmc1 is current device
    SD/MMC found on device 1
    Failed to load 'boot.scr'
    1490 bytes read in 2 ms (727.5 KiB/s)
    Loaded env from uEnv.txt
    Importing environment from mmc1 ...
    Running uenvcmd ...
    1 bytes read in 1 ms (1000 Bytes/s)
    Already setup.
    19147264 bytes read in 763 ms (23.9 MiB/s)
    43071 bytes read in 6 ms (6.8 MiB/s)
    ## Flattened Device Tree blob at 88000000
       Booting using the fdt blob at 0x88000000
       Loading Device Tree to 000000008fef2000, end 000000008fffffff ... OK
    
    Starting kernel ...
    
    [    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
    [    0.000000] Linux version 5.10.168-g2c23e6c538 (oe-user@oe-host) (aarch64-none-linux-gnu-gcc (GNU Toolchain for the A-profile Architecture 9.2-2019.12 (arm-9.10)) 9.2.1 20191025, GNU ld (GNU Toolchain for the A-profile Architecture 9.2-2019.12 (arm-9.10)) 2.33.1.20191209) #1 SMP PREEMPT Mon Feb 27 14:16:24 UTC 2023
    [    0.000000] Machine model: Texas Instruments AM642 EVM
    [    0.000000] earlycon: ns16550a0 at MMIO32 0x0000000002800000 (options '')
    [    0.000000] printk: bootconsole [ns16550a0] enabled
    [    0.000000] efi: UEFI not found.
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a0000000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a0000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a0100000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-memory@a0100000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a1000000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a1000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a1100000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-memory@a1100000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a2000000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a2000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a2100000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-memory@a2100000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a3000000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a3000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a3100000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-memory@a3100000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a4000000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node m4f-dma-memory@a4000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a4100000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node m4f-memory@a4100000, compatible id shared-dma-pool
    [    0.000000] Zone ranges:
    [    0.000000]   DMA      [mem 0x0000000080000000-0x00000000ffffffff]
    [    0.000000]   DMA32    empty
    [    0.000000]   Normal   empty
    [    0.000000] Movable zone start for each node
    [    0.000000] Early memory node ranges
    [    0.000000]   node   0: [mem 0x0000000080000000-0x000000009e7fffff]
    [    0.000000]   node   0: [mem 0x000000009e800000-0x00000000a57fffff]
    [    0.000000]   node   0: [mem 0x00000000a5800000-0x00000000ffffffff]
    [    0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x00000000ffffffff]
    [    0.000000] cma: Reserved 512 MiB at 0x00000000dd000000
    [    0.000000] psci: probing for conduit method from DT.
    [    0.000000] psci: PSCIv1.1 detected in firmware.
    [    0.000000] psci: Using standard PSCI v0.2 function IDs
    [    0.000000] psci: Trusted OS migration not required
    [    0.000000] psci: SMC Calling Convention v1.2
    [    0.000000] percpu: Embedded 22 pages/cpu s51288 r8192 d30632 u90112
    [    0.000000] Detected VIPT I-cache on CPU0
    [    0.000000] CPU features: detected: ARM erratum 845719
    [    0.000000] CPU features: detected: GIC system register CPU interface
    [    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 516096
    [    0.000000] Kernel command line: console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000 mtdparts=fc40000.spi.0:1m(ospi.tiboot3),2m(ospi.tispl),4m(ospi.u-boot),256k(ospi.env),256k(ospi.env.backup),57088k@8m(ospi.rootfs),256k(ospi.phypattern);omap2-nand.0:2m(NAND.tiboot3),2m(NAND.tispl),2m(NAND.tiboot3.backup),4m(NAND.u-boot),256k(NAND.u-boot-env),256k(NAND.u-boot-env.backup),-(NAND.file-system) root=PARTUUID=47b6d3e0-02 rw rootfstype=ext4 rootwait
    [    0.000000] Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes, linear)
    [    0.000000] Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes, linear)
    [    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
    [    0.000000] Memory: 1398828K/2097152K available (11200K kernel code, 1162K rwdata, 4308K rodata, 1920K init, 431K bss, 174036K reserved, 524288K cma-reserved)
    [    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
    [    0.000000] rcu: Preemptible hierarchical RCU implementation.
    [    0.000000] rcu: RCU event tracing is enabled.
    [    0.000000] rcu: RCU restricting CPUs from NR_CPUS=256 to nr_cpu_ids=2.
    [    0.000000] Trampoline variant of Tasks RCU enabled.
    [    0.000000] Tracing variant of Tasks RCU enabled.
    [    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
    [    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2
    [    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
    [    0.000000] GICv3: GIC: Using split EOI/Deactivate mode
    [    0.000000] GICv3: 256 SPIs implemented
    [    0.000000] GICv3: 0 Extended SPIs implemented
    [    0.000000] GICv3: Distributor has no Range Selector support
    [    0.000000] GICv3: 16 PPIs implemented
    [    0.000000] GICv3: CPU0: found redistributor 0 region 0:0x0000000001840000
    [    0.000000] ITS [mem 0x01820000-0x0182ffff]
    [    0.000000] GIC: enabling workaround for ITS: Socionext Synquacer pre-ITS
    [    0.000000] ITS@0x0000000001820000: Devices Table too large, reduce ids 20->19
    [    0.000000] ITS@0x0000000001820000: allocated 524288 Devices @80800000 (flat, esz 8, psz 64K, shr 0)
    [    0.000000] ITS: using cache flushing for cmd queue
    [    0.000000] GICv3: using LPI property table @0x0000000080030000
    [    0.000000] GIC: using cache flushing for LPI property table
    [    0.000000] GICv3: CPU0: using allocated LPI pending table @0x0000000080040000
    [    0.000000] arch_timer: cp15 timer(s) running at 225.00MHz (phys).
    [    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x33e45310bc, max_idle_ns: 440795207391 ns
    [    0.000006] sched_clock: 56 bits at 225MHz, resolution 4ns, wraps every 4398046511101ns
    [    0.008627] Console: colour dummy device 80x25
    [    0.013228] Calibrating delay loop (skipped), value calculated using timer frequency.. 450.00 BogoMIPS (lpj=900000)
    [    0.023916] pid_max: default: 32768 minimum: 301
    [    0.028765] LSM: Security Framework initializing
    [    0.033567] Mount-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
    [    0.041151] Mountpoint-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
    [    0.051386] rcu: Hierarchical SRCU implementation.
    [    0.056695] Platform MSI: msi-controller@1820000 domain created
    [    0.063088] PCI/MSI: /bus@f4000/interrupt-controller@1800000/msi-controller@1820000 domain created
    [    0.072385] EFI services will not be available.
    [    0.077319] smp: Bringing up secondary CPUs ...
    I/TC: Secondary CPU 1 initializing
    I/TC: Secondary CPU 1 switching to normal world boot
    [    0.091035] Detected VIPT I-cache on CPU1
    [    0.091079] GICv3: CPU1: found redistributor 1 region 0:0x0000000001860000
    [    0.091096] GICv3: CPU1: using allocated LPI pending table @0x0000000080050000
    [    0.091166] CPU1: Booted secondary processor 0x0000000001 [0x410fd034]
    [    0.091319] smp: Brought up 1 node, 2 CPUs
    [    0.120736] SMP: Total of 2 processors activated.
    [    0.125559] CPU features: detected: 32-bit EL0 Support
    [    0.130842] CPU features: detected: CRC32 instructions
    [    0.145998] CPU: All CPU(s) started at EL2
    [    0.150214] alternatives: patching kernel code
    [    0.156163] devtmpfs: initialized
    [    0.168474] KASLR disabled due to lack of seed
    [    0.173318] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
    [    0.183305] futex hash table entries: 512 (order: 3, 32768 bytes, linear)
    [    0.211412] pinctrl core: initialized pinctrl subsystem
    [    0.217565] DMI not present or invalid.
    [    0.222423] NET: Registered protocol family 16
    [    0.229219] DMA: preallocated 256 KiB GFP_KERNEL pool for atomic allocations
    [    0.236639] DMA: preallocated 256 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations
    [    0.244792] DMA: preallocated 256 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
    [    0.253737] thermal_sys: Registered thermal governor 'step_wise'
    [    0.253748] thermal_sys: Registered thermal governor 'power_allocator'
    [    0.260439] cpuidle: using governor menu
    [    0.271453] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
    [    0.278478] ASID allocator initialised with 65536 entries
    [    0.319746] HugeTLB registered 1.00 GiB page size, pre-allocated 0 pages
    [    0.326635] HugeTLB registered 32.0 MiB page size, pre-allocated 0 pages
    [    0.333493] HugeTLB registered 2.00 MiB page size, pre-allocated 0 pages
    [    0.340348] HugeTLB registered 64.0 KiB page size, pre-allocated 0 pages
    [    0.348886] cryptd: max_cpu_qlen set to 1000
    [    0.357425] k3-chipinfo 43000014.chipid: Family:AM64X rev:SR2.0 JTAGID[0x1bb3802f] Detected
    [    0.366801] vsys_5v0: supplied by evm_12v0
    [    0.371567] vsys_3v3: supplied by evm_12v0
    [    0.376581] vddb_3v3_display: supplied by vsys_3v3
    [    0.383167] iommu: Default domain type: Translated 
    [    0.388662] SCSI subsystem initialized
    [    0.393295] mc: Linux media interface: v0.10
    [    0.397706] videodev: Linux video capture interface: v2.00
    [    0.403442] pps_core: LinuxPPS API ver. 1 registered
    [    0.408521] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
    [    0.417874] PTP clock support registered
    [    0.421925] EDAC MC: Ver: 3.0.0
    [    0.426190] omap-mailbox 29020000.mailbox: omap mailbox rev 0x66fc9100
    [    0.433196] omap-mailbox 29040000.mailbox: omap mailbox rev 0x66fc9100
    [    0.440043] omap-mailbox 29060000.mailbox: omap mailbox rev 0x66fc9100
    [    0.447677] FPGA manager framework
    [    0.451301] Advanced Linux Sound Architecture Driver Initialized.
    [    0.458958] clocksource: Switched to clocksource arch_sys_counter
    [    0.465495] VFS: Disk quotas dquot_6.6.0
    [    0.469595] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
    [    0.484478] NET: Registered protocol family 2
    [    0.489284] IP idents hash table entries: 32768 (order: 6, 262144 bytes, linear)
    [    0.498591] tcp_listen_portaddr_hash hash table entries: 1024 (order: 2, 16384 bytes, linear)
    [    0.507423] TCP established hash table entries: 16384 (order: 5, 131072 bytes, linear)
    [    0.515691] TCP bind hash table entries: 16384 (order: 6, 262144 bytes, linear)
    [    0.523492] TCP: Hash tables configured (established 16384 bind 16384)
    [    0.530448] UDP hash table entries: 1024 (order: 3, 32768 bytes, linear)
    [    0.537370] UDP-Lite hash table entries: 1024 (order: 3, 32768 bytes, linear)
    [    0.544900] NET: Registered protocol family 1
    [    0.550074] RPC: Registered named UNIX socket transport module.
    [    0.556180] RPC: Registered udp transport module.
    [    0.561032] RPC: Registered tcp transport module.
    [    0.565847] RPC: Registered tcp NFSv4.1 backchannel transport module.
    [    0.572447] NET: Registered protocol family 44
    [    0.577017] PCI: CLS 0 bytes, default 64
    [    0.581984] hw perfevents: enabled with armv8_cortex_a53 PMU driver, 7 counters available
    [    0.595680] Initialise system trusted keyrings
    [    0.600579] workingset: timestamp_bits=46 max_order=19 bucket_order=0
    [    0.612720] squashfs: version 4.0 (2009/01/31) Phillip Lougher
    [    0.619569] NFS: Registering the id_resolver key type
    [    0.624834] Key type id_resolver registered
    [    0.629120] Key type id_legacy registered
    [    0.633318] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
    [    0.640187] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering...
    [    0.648013] 9p: Installing v9fs 9p2000 file system support
    [    0.706499] Key type asymmetric registered
    [    0.710720] Asymmetric key parser 'x509' registered
    [    0.715779] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 243)
    [    0.723349] io scheduler mq-deadline registered
    [    0.727983] io scheduler kyber registered
    [    0.735120] pinctrl-single 4084000.pinctrl: 33 pins, size 132
    [    0.741674] pinctrl-single f4000.pinctrl: 180 pins, size 720
    [    0.748858] pinctrl-single a40000.timesync-router: 512 pins, size 2048
    [    0.767885] Serial: 8250/16550 driver, 10 ports, IRQ sharing enabled
    [    0.794230] brd: module loaded
    [    0.806781] loop: module loaded
    [    0.811296] megasas: 07.714.04.00-rc1
    [    0.820719] tun: Universal TUN/TAP device driver, 1.6
    [    0.826879] igbvf: Intel(R) Gigabit Virtual Function Network Driver
    [    0.833311] igbvf: Copyright (c) 2009 - 2012 Intel Corporation.
    [    0.839437] sky2: driver version 1.30
    [    0.844806] VFIO - User Level meta-driver version: 0.3
    [    0.851683] i2c /dev entries driver
    [    0.857253] sdhci: Secure Digital Host Controller Interface driver
    [    0.863613] sdhci: Copyright(c) Pierre Ossman
    [    0.868605] sdhci-pltfm: SDHCI platform and OF driver helper
    [    0.876040] ledtrig-cpu: registered to indicate activity on CPUs
    [    0.882756] SMCCC: SOC_ID: ARCH_SOC_ID not implemented, skipping ....
    [    0.891575] optee: probing for conduit method.
    I/TC: Reserved shared memory is enabled
    I/TC: Dynamic shared memory is enabled
    I/TC: Normal World virtualization support is disabled
    I/TC: Asynchronous notifications are disabled
    [    0.896182] optee: revision 3.20 (8e74d476)
    [    0.912904] optee: dynamic shared memory is enabled
    [    0.922735] optee: initialized driver
    [    0.929856] NET: Registered protocol family 17
    [    0.934672] 9pnet: Installing 9P2000 support
    [    0.939152] Key type dns_resolver registered
    [    0.944087] Loading compiled-in X.509 certificates
    [    0.969795] ti-sci 44043000.dmsc: ABI: 3.1 (firmware rev 0x0008 '8.5.3--v08.05.03 (Chill Capybar')
    [    1.037764] omap-gpmc 3b000000.memory-controller: GPMC revision 6.0
    [    1.044284] gpmc_mem_init: disabling cs 0 mapped at 0x0-0x1000000
    [    1.053167] omap_i2c 20000000.i2c: bus 0 rev0.12 at 100 kHz
    [    1.061368] pca953x 1-0022: supply vcc not found, using dummy regulator
    [    1.068373] pca953x 1-0022: using AI
    [    1.124954] Console: switching to mono frame buffer device 12x2
    [    1.159937] ssd1307fb 1-003c: fb0: Solomon SSD1307 framebuffer device registered, using 192 bytes of video memory
    [    1.170691] omap_i2c 20010000.i2c: bus 1 rev0.12 at 400 kHz
    [    1.177957] omap_i2c 20020000.i2c: bus 2 rev0.12 at 100 kHz
    [    1.185180] omap_i2c 20030000.i2c: bus 3 rev0.12 at 100 kHz
    [    1.191546] ti-sci-intr bus@f4000:bus@4000000:interrupt-controller1: Interrupt Router 5 domain created
    [    1.201503] ti-sci-intr bus@f4000:interrupt-controller0: Interrupt Router 3 domain created
    [    1.210641] ti-sci-inta 48000000.interrupt-controller: Interrupt Aggregator domain 28 created
    [    1.233612] j721e-pcie f102000.pcie: host bridge /bus@f4000/pcie@f102000 ranges:
    [    1.241265] j721e-pcie f102000.pcie:       IO 0x0068001000..0x0068010fff -> 0x0068001000
    [    1.249566] j721e-pcie f102000.pcie:      MEM 0x0068011000..0x006fffffff -> 0x0068011000
    [    1.257864] j721e-pcie f102000.pcie:   IB MEM 0x0000000000..0x0fffffffff -> 0x0000000000
    [    1.370308] j721e-pcie f102000.pcie: Link up
    [    1.374904] j721e-pcie f102000.pcie: PCI host bridge to bus 0000:00
    [    1.381330] pci_bus 0000:00: root bus resource [bus 00-ff]
    [    1.386951] pci_bus 0000:00: root bus resource [io  0x0000-0xffff] (bus address [0x68001000-0x68010fff])
    [    1.396654] pci_bus 0000:00: root bus resource [mem 0x68011000-0x6fffffff]
    [    1.403736] pci 0000:00:00.0: [104c:b010] type 01 class 0x060400
    [    1.409902] pci 0000:00:00.0: reg 0x10: [mem 0x00000000-0xfffffffff 64bit pref]
    [    1.417468] pci 0000:00:00.0: supports D1
    [    1.421576] pci 0000:00:00.0: PME# supported from D0 D1 D3hot
    [    1.430546] pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
    [    1.439024] pci 0000:01:00.0: [10b5:8733] type 01 class 0x060400
    [    1.445215] pci 0000:01:00.0: reg 0x10: [mem 0x00000000-0x0003ffff]
    [    1.451926] pci 0000:01:00.0: PME# supported from D0 D3hot D3cold
    [    1.458283] pci 0000:01:00.0: 4.000 Gb/s available PCIe bandwidth, limited by 5.0 GT/s PCIe x1 link at 0000:00:00.0 (capable of 32.000 Gb/s with 5.0 GT/s PCIe x8 link)
    [    1.473856] pci 0000:01:00.1: [10b5:87d0] type 00 class 0x088000
    [    1.480052] pci 0000:01:00.1: reg 0x10: [mem 0x00000000-0x00001fff]
    [    1.486549] pci 0000:01:00.1: enabling Extended Tags
    [    1.492009] pci 0000:01:00.2: [10b5:87d0] type 00 class 0x088000
    [    1.498201] pci 0000:01:00.2: reg 0x10: [mem 0x00000000-0x00001fff]
    [    1.504697] pci 0000:01:00.2: enabling Extended Tags
    [    1.510150] pci 0000:01:00.3: [10b5:87d0] type 00 class 0x088000
    [    1.516357] pci 0000:01:00.3: reg 0x10: [mem 0x00000000-0x00001fff]
    [    1.516521] pci 0000:01:00.3: enabling Extended Tags
    [    1.516937] pci 0000:01:00.4: [10b5:87d0] type 00 class 0x088000
    [    1.516971] pci 0000:01:00.4: reg 0x10: [mem 0x00000000-0x00001fff]
    [    1.517059] pci 0000:01:00.4: enabling Extended Tags
    [    1.529865] pci 0000:01:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
    [    1.558913] pci 0000:02:01.0: [10b5:8733] type 01 class 0x060400
    [    1.565396] pci 0000:02:01.0: PME# supported from D0 D3hot D3cold
    [    1.572153] pci 0000:02:02.0: [10b5:8733] type 01 class 0x060400
    [    1.578624] pci 0000:02:02.0: PME# supported from D0 D3hot D3cold
    [    1.585356] pci 0000:02:03.0: [10b5:8733] type 01 class 0x060400
    [    1.591848] pci 0000:02:03.0: PME# supported from D0 D3hot D3cold
    [    1.598560] pci 0000:02:04.0: [10b5:8733] type 01 class 0x060400
    [    1.605022] pci 0000:02:04.0: PME# supported from D0 D3hot D3cold
    [    1.611983] pci 0000:02:08.0: [10b5:8733] type 01 class 0x060400
    [    1.618452] pci 0000:02:08.0: PME# supported from D0 D3hot D3cold
    [    1.625178] pci 0000:02:09.0: [10b5:8733] type 01 class 0x060400
    [    1.631655] pci 0000:02:09.0: PME# supported from D0 D3hot D3cold
    [    1.638369] pci 0000:02:0a.0: [10b5:8733] type 01 class 0x060400
    [    1.644834] pci 0000:02:0a.0: PME# supported from D0 D3hot D3cold
    [    1.651570] pci 0000:02:0b.0: [10b5:8733] type 01 class 0x060400
    [    1.658036] pci 0000:02:0b.0: PME# supported from D0 D3hot D3cold
    [    1.664754] pci 0000:02:0c.0: [10b5:8733] type 01 class 0x060400
    [    1.671235] pci 0000:02:0c.0: PME# supported from D0 D3hot D3cold
    [    1.677969] pci 0000:02:0d.0: [10b5:8733] type 01 class 0x060400
    [    1.684431] pci 0000:02:0d.0: PME# supported from D0 D3hot D3cold
    [    1.692655] pci 0000:02:01.0: bridge configuration invalid ([bus 00-00]), reconfiguring
    [    1.700873] pci 0000:02:02.0: bridge configuration invalid ([bus 00-00]), reconfiguring
    [    1.709083] pci 0000:02:03.0: bridge configuration invalid ([bus 00-00]), reconfiguring
    [    1.717308] pci 0000:02:04.0: bridge configuration invalid ([bus 00-00]), reconfiguring
    [    1.725545] pci 0000:02:08.0: bridge configuration invalid ([bus 00-00]), reconfiguring
    [    1.725566] pci 0000:02:09.0: bridge configuration invalid ([bus 00-00]), reconfiguring
    [    1.725585] pci 0000:02:0a.0: bridge configuration invalid ([bus 00-00]), reconfiguring
    [    1.725679] pci 0000:02:0b.0: bridge configuration invalid ([bus 00-00]), reconfiguring
    [    1.725699] pci 0000:02:0c.0: bridge configuration invalid ([bus 00-00]), reconfiguring
    [    1.725719] pci 0000:02:0d.0: bridge configuration invalid ([bus 00-00]), reconfiguring
    [    1.725996] pci 0000:03:00.0: [12d8:e130] type 01 class 0x060400
    [    1.726144] pci 0000:03:00.0: enabling Extended Tags
    [    1.726176] pci 0000:03:00.0: Enable PCIe Retrain Link quirk
    [    1.726336] pci 0000:03:00.0: PME# supported from D0 D3hot D3cold
    [    1.737793] pci 0000:03:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
    [    1.811061] pci_bus 0000:04: extended config space not accessible
    [    1.820182] pci_bus 0000:04: busn_res: [bus 04-ff] end is updated to 04
    [    1.826968] pci_bus 0000:03: busn_res: [bus 03-ff] end is updated to 04
    [    1.836579] pci_bus 0000:05: busn_res: [bus 05-ff] end is updated to 05
    [    1.843613] pci 0000:06:00.0: [10ee:1016] type 00 class 0x050000
    [    1.849816] pci 0000:06:00.0: reg 0x10: [mem 0x00000000-0x000fffff]
    [    1.856546] pci 0000:06:00.0: PME# supported from D1 D2 D3hot
    [    1.865464] pci_bus 0000:06: busn_res: [bus 06-ff] end is updated to 06
    [    1.875079] pci_bus 0000:07: busn_res: [bus 07-ff] end is updated to 07
    [    1.884659] pci_bus 0000:08: busn_res: [bus 08-ff] end is updated to 08
    [    1.894263] pci_bus 0000:09: busn_res: [bus 09-ff] end is updated to 09
    [    1.903875] pci_bus 0000:0a: busn_res: [bus 0a-ff] end is updated to 0a
    [    1.913480] pci_bus 0000:0b: busn_res: [bus 0b-ff] end is updated to 0b
    [    1.923124] pci_bus 0000:0c: busn_res: [bus 0c-ff] end is updated to 0c
    [    1.933050] pci_bus 0000:0d: busn_res: [bus 0d-ff] end is updated to 0d
    [    1.933071] pci_bus 0000:02: busn_res: [bus 02-ff] end is updated to 0d
    [    1.933089] pci_bus 0000:01: busn_res: [bus 01-ff] end is updated to 0d
    [    1.933222] pci 0000:00:00.0: BAR 0: no space for [mem size 0x1000000000 64bit pref]
    [    1.933230] pci 0000:00:00.0: BAR 0: failed to assign [mem size 0x1000000000 64bit pref]
    [    1.933240] pci 0000:00:00.0: BAR 14: assigned [mem 0x68100000-0x686fffff]
    [    1.933251] pci 0000:00:00.0: BAR 15: assigned [mem 0x68700000-0x68afffff 64bit pref]
    [    1.933258] pci 0000:00:00.0: BAR 13: assigned [io  0x1000-0x2fff]
    [    1.933277] pci 0000:01:00.0: BAR 14: assigned [mem 0x68100000-0x685fffff]
    [    1.933285] pci 0000:01:00.0: BAR 15: assigned [mem 0x68700000-0x68afffff 64bit pref]
    [    1.933293] pci 0000:01:00.0: BAR 0: assigned [mem 0x68600000-0x6863ffff]
    [    1.933308] pci 0000:01:00.1: BAR 0: assigned [mem 0x68640000-0x68641fff]
    [    1.933322] pci 0000:01:00.2: BAR 0: assigned [mem 0x68642000-0x68643fff]
    [    1.933335] pci 0000:01:00.3: BAR 0: assigned [mem 0x68644000-0x68645fff]
    [    1.933348] pci 0000:01:00.4: BAR 0: assigned [mem 0x68646000-0x68647fff]
    [    1.933361] pci 0000:01:00.0: BAR 13: assigned [io  0x1000-0x2fff]
    [    1.933379] pci 0000:02:01.0: BAR 14: assigned [mem 0x68100000-0x682fffff]
    [    1.933388] pci 0000:02:01.0: BAR 15: assigned [mem 0x68700000-0x688fffff 64bit pref]
    [    1.933397] pci 0000:02:03.0: BAR 14: assigned [mem 0x68300000-0x683fffff]
    [    1.933405] pci 0000:02:09.0: BAR 14: assigned [mem 0x68400000-0x685fffff]
    [    1.933414] pci 0000:02:09.0: BAR 15: assigned [mem 0x68900000-0x68afffff 64bit pref]
    [    1.933422] pci 0000:02:01.0: BAR 13: assigned [io  0x1000-0x1fff]
    [    1.933429] pci 0000:02:09.0: BAR 13: assigned [io  0x2000-0x2fff]
    [    1.933441] pci 0000:03:00.0: PCI bridge to [bus 04]
    [    1.933474] pci 0000:02:01.0: PCI bridge to [bus 03-04]
    [    1.933483] pci 0000:02:01.0:   bridge window [io  0x1000-0x1fff]
    [    1.933496] pci 0000:02:01.0:   bridge window [mem 0x68100000-0x682fffff]
    [    1.933507] pci 0000:02:01.0:   bridge window [mem 0x68700000-0x688fffff 64bit pref]
    [    1.933524] pci 0000:02:02.0: PCI bridge to [bus 05]
    [    1.933579] pci 0000:06:00.0: BAR 0: assigned [mem 0x68300000-0x683fffff]
    [    1.933595] pci 0000:02:03.0: PCI bridge to [bus 06]
    [    1.933608] pci 0000:02:03.0:   bridge window [mem 0x68300000-0x683fffff]
    [    1.933630] pci 0000:02:04.0: PCI bridge to [bus 07]
    [    1.933658] pci 0000:02:08.0: PCI bridge to [bus 08]
    [    1.933686] pci 0000:02:09.0: PCI bridge to [bus 09]
    [    1.933694] pci 0000:02:09.0:   bridge window [io  0x2000-0x2fff]
    [    1.933707] pci 0000:02:09.0:   bridge window [mem 0x68400000-0x685fffff]
    [    1.933718] pci 0000:02:09.0:   bridge window [mem 0x68900000-0x68afffff 64bit pref]
    [    1.933735] pci 0000:02:0a.0: PCI bridge to [bus 0a]
    [    1.933764] pci 0000:02:0b.0: PCI bridge to [bus 0b]
    [    1.933792] pci 0000:02:0c.0: PCI bridge to [bus 0c]
    [    1.933820] pci 0000:02:0d.0: PCI bridge to [bus 0d]
    [    1.933846] pci 0000:01:00.0: PCI bridge to [bus 02-0d]
    [    1.933855] pci 0000:01:00.0:   bridge window [io  0x1000-0x2fff]
    [    1.933868] pci 0000:01:00.0:   bridge window [mem 0x68100000-0x685fffff]
    [    1.933879] pci 0000:01:00.0:   bridge window [mem 0x68700000-0x68afffff 64bit pref]
    [    1.933896] pci 0000:00:00.0: PCI bridge to [bus 01-0d]
    [    1.933903] pci 0000:00:00.0:   bridge window [io  0x1000-0x2fff]
    [    1.933910] pci 0000:00:00.0:   bridge window [mem 0x68100000-0x686fffff]
    [    1.933918] pci 0000:00:00.0:   bridge window [mem 0x68700000-0x68afffff 64bit pref]
    [    1.934257] pcieport 0000:00:00.0: enabling device (0000 -> 0003)
    [    1.934649] pcieport 0000:00:00.0: PME: Signaling with IRQ 44
    [    1.935301] pcieport 0000:01:00.0: enabling device (0000 -> 0003)
    [    2.282398] pcieport 0000:02:01.0: enabling device (0000 -> 0003)
    [    2.291286] pcieport 0000:02:03.0: enabling device (0000 -> 0002)
    [    2.301120] pcieport 0000:02:09.0: enabling device (0000 -> 0003)
    [    2.314158] ti-udma 485c0100.dma-controller: Number of rings: 68
    [    2.322167] ti-udma 485c0100.dma-controller: Channels: 24 (bchan: 12, tchan: 6, rchan: 6)
    [    2.332836] ti-udma 485c0000.dma-controller: Number of rings: 288
    [    2.349081] ti-udma 485c0000.dma-controller: Channels: 44 (tchan: 29, rchan: 15)
    [    2.360791] printk: console [ttyS2] disabled
    [    2.365277] 2800000.serial: ttyS2 at MMIO 0x2800000 (irq = 16, base_baud = 3000000) is a 8250
    [    2.374056] printk: console [ttyS2] enabled
    [    2.374056] printk: console [ttyS2] enabled
    [    2.382503] printk: bootconsole [ns16550a0] disabled
    [    2.382503] printk: bootconsole [ns16550a0] disabled
    [    2.397276] spi-nor spi0.0: unrecognized JEDEC id bytes: 00 00 00 00 00 00
    [    2.404209] spi-nor: probe of spi0.0 failed with error -2
    [    2.422866] davinci_mdio 8000f00.mdio: Configuring MDIO in manual mode
    [    2.466970] davinci_mdio 8000f00.mdio: davinci mdio revision 9.7, bus freq 1000000
    [    2.476336] davinci_mdio 8000f00.mdio: phy[0]: device 8000f00.mdio:00, driver TI DP83867
    [    2.484604] am65-cpsw-nuss 8000000.ethernet: initializing am65 cpsw nuss version 0x6BA00903, cpsw version 0x6BA80903 Ports: 3 quirks:00000006
    [    2.497518] am65-cpsw-nuss 8000000.ethernet: initialized cpsw ale version 1.4
    [    2.504653] am65-cpsw-nuss 8000000.ethernet: ALE Table size 512
    [    2.511465] pps pps0: new PPS source ptp0
    [    2.515945] am65-cpsw-nuss 8000000.ethernet: CPTS ver 0x4e8a010c, freq:500000000, add_val:1 pps:1
    [    2.526660] am65-cpsw-nuss 8000000.ethernet: set new flow-id-base 16
    [    2.538216] am65-cpts 39000000.cpts: CPTS ver 0x4e8a010c, freq:500000000, add_val:1 pps:0
    [    2.547635] k3-j72xx-soc-thermal b00000.temperature-sensor: invalid resource
    [    2.547685] k3-j72xx-soc-thermal: probe of b00000.temperature-sensor failed with error -22
    [    2.550218] mmc0: CQHCI version 5.10
    [    2.553867] gpio-mux mux-controller: 2-way mux-controller registered
    [    2.586608] vdd_mmc1: supplied by vsys_3v3
    [    2.591939] mmc0: SDHCI controller on fa10000.mmc [fa10000.mmc] using ADMA 64-bit
    [    2.601892] mmc1: CQHCI version 5.10
    [    2.601984] debugfs: Directory 'pd:114' with parent 'pm_genpd' already present!
    [    2.627102] ALSA device list:
    [    2.630123]   No soundcards found.
    [    2.644355] mmc1: SDHCI controller on fa00000.mmc [fa00000.mmc] using ADMA 64-bit
    [    2.652881] Waiting for root device PARTUUID=47b6d3e0-02...
    [    2.710752] mmc1: new ultra high speed SDR104 SDHC card at address aaaa
    [    2.717767] mmc0: Command Queue Engine enabled
    [    2.722232] mmc0: new HS200 MMC card at address 0001
    [    2.728141] mmcblk1: mmc1:aaaa SC16G 14.8 GiB 
    [    2.733475] mmcblk0: mmc0:0001 S0J56X 14.8 GiB 
    [    2.738274] mmcblk0boot0: mmc0:0001 S0J56X partition 1 31.5 MiB
    [    2.745248] mmcblk0boot1: mmc0:0001 S0J56X partition 2 31.5 MiB
    [    2.751382]  mmcblk1: p1 p2
    [    2.755555] mmcblk0rpmb: mmc0:0001 S0J56X partition 3 4.00 MiB, chardev (237:0)
    [    2.797902] EXT4-fs (mmcblk1p2): recovery complete
    [    2.805760] EXT4-fs (mmcblk1p2): mounted filesystem with ordered data mode. Opts: (null)
    [    2.813952] VFS: Mounted root (ext4 filesystem) on device 179:2.
    [    2.822719] devtmpfs: mounted
    [    2.827210] Freeing unused kernel memory: 1920K
    [    2.831888] Run /sbin/init as init process
    [    2.982218] systemd[1]: System time before build time, advancing clock.
    [    3.040452] NET: Registered protocol family 10
    [    3.046499] Segment Routing with IPv6
    [    3.084402] systemd[1]: systemd 244.5+ running in system mode. (+PAM -AUDIT -SELINUX +IMA -APPARMOR -SMACK +SYSVINIT +UTMP -LIBCRYPTSETUP -GCRYPT -GNUTLS +ACL +XZ -LZ4 -SECCOMP +BLKID -ELFUTILS +KMOD -IDN2 -IDN -PCRE2 default-hierarchy=hybrid)
    [    3.106636] systemd[1]: Detected architecture arm64.
    
    Welcome to Arago 2021.09!
    
    [    3.154085] systemd[1]: Set hostname to <am64xx-evm>.
    [    3.539989] systemd[1]: /lib/systemd/system/startwlansta.service:7: Unknown key name 'After' in section 'Service', ignoring.
    [    3.555038] systemd[1]: /lib/systemd/system/startwlanap.service:7: Unknown key name 'After' in section 'Service', ignoring.
    [    3.603268] systemd[1]: /lib/systemd/system/irqbalanced.service:6: Unknown key name 'ConditionCPUs' in section 'Unit', ignoring.
    [    3.653162] systemd[1]: /lib/systemd/system/docker.socket:6: ListenStream= references a path below legacy directory /var/run/, updating /var/run/docker.sock  /run/docker.sock; please update the unit file accordingly.
    [    3.827947] random: systemd: uninitialized urandom read (16 bytes read)
    [    3.840150] systemd[1]: Created slice system-getty.slice.
    [  OK  ] Created slice system-getty.slice.
    [    3.863241] random: systemd: uninitialized urandom read (16 bytes read)
    [    3.872582] systemd[1]: Created slice system-serial\x2dgetty.slice.
    [  OK  ] Created slice system-serial\x2dgetty.slice.
    [    3.895231] random: systemd: uninitialized urandom read (16 bytes read)
    [    3.904555] systemd[1]: Created slice system-syslog\x2dng.slice.
    [  OK  ] Created slice system-syslog\x2dng.slice.
    [    3.929726] systemd[1]: Created slice User and Session Slice.
    [  OK  ] Created slice User and Session Slice.
    [    3.951710] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
    [  OK  ] Started Dispatch Password ts to Console Directory Watch.
    [    3.975610] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
    [  OK  ] Started Forward Password Ruests to Wall Directory Watch.
    [    3.999583] systemd[1]: Reached target Paths.
    [  OK  ] Reached target Paths.
    [    4.015334] systemd[1]: Reached target Remote File Systems.
    [  OK  ] Reached target Remote File Systems.
    [    4.035299] systemd[1]: Reached target Slices.
    [  OK  ] Reached target Slices.
    [    4.051315] systemd[1]: Reached target Swap.
    [  OK  ] Reached target Swap.
    [    4.089530] systemd[1]: Listening on RPCbind Server Activation Socket.
    [  OK  ] Listening on RPCbind Server Activation Socket.
    [    4.111436] systemd[1]: Reached target RPC Port Mapper.
    [  OK  ] Reached target RPC Port Mapper.
    [    4.140277] systemd[1]: Listening on Process Core Dump Socket.
    [  OK  ] Listening on Process Core Dump Socket.
    [    4.163753] systemd[1]: Listening on initctl Compatibility Named Pipe.
    [  OK  ] Listening on initctl Compatibility Named Pipe.
    [    4.191971] systemd[1]: Condition check resulted in Journal Audit Socket being skipped.
    [    4.201084] systemd[1]: Listening on Journal Socket (/dev/log).
    [  OK  ] Listening on Journal Socket (/dev/log).
    [    4.224148] systemd[1]: Listening on Journal Socket.
    [  OK  ] Listening on Journal Socket.
    [    4.240378] systemd[1]: Listening on Network Service Netlink Socket.
    [  OK  ] Listening on Network Service Netlink Socket.
    [    4.264210] systemd[1]: Listening on udev Control Socket.
    [  OK  ] Listening on udev Control Socket.
    [    4.287864] systemd[1]: Listening on udev Kernel Socket.
    [  OK  ] Listening on udev Kernel Socket.
    [    4.318180] systemd[1]: Mounting Huge Pages File System...
             Mounting Huge Pages File System...
    [    4.342024] systemd[1]: Mounting POSIX Message Queue File System...
             Mounting POSIX Message Queue File System...
    [    4.369925] systemd[1]: Mounting Kernel Debug File System...
             Mounting Kernel Debug File System...
    [    4.396406] systemd[1]: Mounting Temporary Directory (/tmp)...
             Mounting Temporary Directory (/tmp)...
    [    4.426834] systemd[1]: Starting Create list of static device nodes for the current kernel...
             Starting Create list of stodes for the current kernel...
    [    4.457737] systemd[1]: Starting RPC Bind...
             Starting RPC Bind...
    [    4.471733] systemd[1]: Condition check resulted in File System Check on Root Device being skipped.
    [    4.492597] systemd[1]: Starting Journal Service...
             Starting Journal Service...
    [    4.515840] systemd[1]: Starting Load Kernel Modules...
             Starting Load Kernel Modules...
    [    4.541823] systemd[1]: Starting Remount Root and Kernel File Systems...
    [    4.552484] cryptodev: loading out-of-tree module taints kernel.
             Starting Remount Root and Kernel File Systems...
    [    4.571463] cryptodev: driver 1.10 loaded.
    [    4.588762] systemd[1]: Starting udev Coldplug all Devices...
             Starting udev Coldplug all Devices...
    [    4.632440] systemd[1]: Started RPC Bind.
    [  OK  ] Started RPC Bind.[    4.645973] EXT4-fs (mmcblk1p2): re-mounted. Opts: (null)
    
    [    4.664302] systemd[1]: Mounted Huge Pages File System.
    [  OK  ] Mounted Huge Pages File System.
    [    4.688193] systemd[1]: Mounted POSIX Message Queue File System.
    [  OK  ] Mounted POSIX Message Queue File System.
    [    4.719844] systemd[1]: Mounted Kernel Debug File System.
    [  OK  ] Mounted Kernel Debug File System.
    [    4.748603] systemd[1]: Mounted Temporary Directory (/tmp).
    [  OK  ] Mounted Temporary Directory (/tmp).
    [    4.776237] systemd[1]: Started Journal Service.
    [  OK  ] Started Journal Service.
    [  OK  ] Started Create list of sta nodes for the current kernel.
    [  OK  ] Started Load Kernel Modules.
    [  OK  ] Started Remount Root and Kernel File Systems.
    [    4.877292] random: systemd-journal: uninitialized urandom read (16 bytes read)
    [    4.886510] random: systemd: uninitialized urandom read (16 bytes read)
             Mounting Kernel Configuration File System.[    4.907164] random: systemd-journal: uninitialized urandom read (16 bytes read)
    ..
             Starting Flush Journal to Persistent Storage...
             Starting Apply Kernel Variables...
    [    4.983155] systemd-journald[168]: Received client request to flush runtime journal.
             Starting Create Static Device Nodes in /dev...
    [  OK  ] Mounted Kernel Configuration File System.
    [  OK  ] Started Flush Journal to Persistent Storage.
    [  OK  ] Started Apply Kernel Variables.
    [  OK  ] Started Create Static Device Nodes in /dev.
    [  OK  ] Reached target Local File Systems (Pre).
             Mounting /media/ram...
             Mounting /var/volatile...
             Starting udev Kernel Device Manager...
    [  OK  ] Mounted /media/ram.
    [  OK  ] Mounted /var/volatile.
             Starting Load/Save Random Seed...
    [  OK  ] Reached target Local File Systems.
             Starting Create Volatile Files and Directories...
    [  OK  ] Started udev Kernel Device Manager.
    [  OK  ] Started Create Volatile Files and Directories.
             Starting Network Time Synchronization...
             Starting Update UTMP about System Boot/Shutdown...
    [  OK  ] Started Update UTMP about System Boot/Shutdown.
    [  OK  ] Started udev Coldplug all Devices.
             Starting udev Wait for Complete Device Initialization...
    [  OK  ] Started Network Time Synchronization.
    [  OK  ] Reached target System Time Set.
    [  OK  ] Reached target System Time Synchronized.
    [    6.241150] random: systemd: uninitialized urandom read (16 bytes read)
    [    6.380945] random: crng init done
    [    6.384453] random: 65 urandom warning(s) missed due to ratelimiting
    [  OK  ] Started Load/Save Random Seed.
    [    6.457839] CAN device driver interface
    [    6.505805] 93xx46 spi1.0: 16-bit eeprom 
    [  OK  ] Created slice system-systemd\x2dbacklight.slice.
             Starting Load/Save Screen ess of backlight:ssd1307fb0...
    [  OK  ] Started Load/Save Screen Btness of backlight:ssd1307fb0.
    [    6.725314] davinci_mdio 300b2400.mdio: Configuring MDIO in manual mode
    [    6.771161] davinci_mdio 300b2400.mdio: davinci mdio revision 1.7, bus freq 1000000
    [    6.819183] k3-m4-rproc 5000000.m4fss: assigned reserved memory node m4f-dma-memory@a4000000
    [    6.839879] davinci_mdio 300b2400.mdio: phy[15]: device 300b2400.mdio:0f, driver unknown
    [    6.890855] k3-m4-rproc 5000000.m4fss: configured M4 for IPC-only mode
    [    6.917724] remoteproc remoteproc0: 5000000.m4fss is available
    [    7.008062] platform 78000000.r5f: R5F core may have been powered on by a different host, programmed state (0) != actual state (1)
    [    7.009460] remoteproc remoteproc0: attaching to 5000000.m4fss
    [    7.051403] k3-m4-rproc 5000000.m4fss: M4 initialized in IPC-only mode
    [    7.062700]  remoteproc0#vdev0buffer: assigned reserved memory node m4f-dma-memory@a4000000
    [    7.086828] m_can_platform 20701000.can: m_can device registered (irq=36, version=32)
    [    7.109307] virtio_rpmsg_bus virtio0: rpmsg host is online
    [    7.111364] virtio_rpmsg_bus virtio0: creating channel ti.ipc4.ping-pong addr 0xd
    [    7.114974]  remoteproc0#vdev0buffer: registered virtio0 (type 7)
    [    7.124741] platform 78000000.r5f: configured R5F for IPC-only mode
    [    7.128436] remoteproc remoteproc0: remote processor 5000000.m4fss is now attached
    [    7.143351] m_can_platform 20711000.can: m_can device registered (irq=38, version=32)
    [    7.151468] virtio_rpmsg_bus virtio0: creating channel rpmsg_chrdev addr 0xe
    [    7.165806] platform 78000000.r5f: assigned reserved memory node r5f-dma-memory@a0000000
    [    7.177643] remoteproc remoteproc1: 78000000.r5f is available
    [    7.187697] remoteproc remoteproc1: attaching to 78000000.r5f
    [    7.197573] platform 78000000.r5f: R5F core initialized in IPC-only mode
    [    7.216672]  remoteproc1#vdev0buffer: assigned reserved memory node r5f-dma-memory@a0000000
    [    7.226268] virtio_rpmsg_bus virtio1: rpmsg host is online
    [    7.231938] virtio_rpmsg_bus virtio1: creating channel ti.ipc4.ping-pong addr 0xd
    [    7.242618] virtio_rpmsg_bus virtio1: creating channel rpmsg_chrdev addr 0xe
    [    7.250014]  remoteproc1#vdev0buffer: registered virtio1 (type 7)
    [    7.250030] remoteproc remoteproc1: remote processor 78000000.r5f is now attached
    [    7.250559] platform 78200000.r5f: R5F core may have been powered on by a different host, programmed state (0) != actual state (1)
    [    7.264828] platform 78200000.r5f: configured R5F for IPC-only mode
    [    7.290618] remoteproc remoteproc3: 30034000.pru is available
    [    7.338534] platform 78200000.r5f: assigned reserved memory node r5f-dma-memory@a1000000
    [    7.339494] remoteproc remoteproc4: 30004000.rtu is available
    [    7.347128] remoteproc remoteproc2: 78200000.r5f is available
    [    7.358296] remoteproc remoteproc2: attaching to 78200000.r5f
    [    7.365776] platform 78200000.r5f: R5F core initialized in IPC-only mode
    [    7.377991]  remoteproc2#vdev0buffer: assigned reserved memory node r5f-dma-memory@a1000000
    [    7.387292] virtio_rpmsg_bus virtio2: rpmsg host is online
    [    7.392968] virtio_rpmsg_bus virtio2: creating channel ti.ipc4.ping-pong addr 0xd
    [    7.400724]  remoteproc2#vdev0buffer: registered virtio2 (type 7)
    [    7.407507] virtio_rpmsg_bus virtio2: creating channel rpmsg_chrdev addr 0xe
    [    7.415464] remoteproc remoteproc2: remote processor 78200000.r5f is now attached
    [    7.433955] platform 78400000.r5f: R5F core may have been powered on by a different host, programmed state (0) != actual state (1)
    [    7.461274] remoteproc remoteproc6: 3000a000.txpru is available
    [    7.471568] remoteproc remoteproc7: 30038000.pru is available
    [    7.490018] platform 78400000.r5f: configured R5F for IPC-only mode
    [    7.632736] remoteproc remoteproc8: 30006000.rtu is available
    [    7.639156] platform 78400000.r5f: assigned reserved memory node r5f-dma-memory@a2000000
    [    7.649020] remoteproc remoteproc9: 3000c000.txpru is available
    [    7.665469] remoteproc remoteproc5: 78400000.r5f is available
    [    7.698658] remoteproc remoteproc10: 300b4000.pru is available
    [    7.723941] remoteproc remoteproc5: attaching to 78400000.r5f
    [    7.753485] remoteproc remoteproc11: 30084000.rtu is available
    [    7.767472] platform 78400000.r5f: R5F core initialized in IPC-only mode
    [    7.812997] remoteproc remoteproc12: 3008a000.txpru is available
    [    7.821928]  remoteproc5#vdev0buffer: assigned reserved memory node r5f-dma-memory@a2000000
    [    7.857858] remoteproc remoteproc13: 300b8000.pru is available
    [    7.900435] virtio_rpmsg_bus virtio3: rpmsg host is online
    [    7.901079] virtio_rpmsg_bus virtio3: creating channel ti.ipc4.ping-pong addr 0xd
    [    7.919331] virtio_rpmsg_bus virtio3: creating channel rpmsg_chrdev addr 0xe
    [    7.939519] remoteproc remoteproc14: 30086000.rtu is available
    [    7.975702]  remoteproc5#vdev0buffer: registered virtio3 (type 7)
    [    7.983799] remoteproc remoteproc15: 3008c000.txpru is available
    [    8.040338] remoteproc remoteproc5: remote processor 78400000.r5f is now attached
    [    8.054134] platform 78600000.r5f: R5F core may have been powered on by a different host, programmed state (0) != actual state (1)
    [    8.076974] platform 78600000.r5f: configured R5F for IPC-only mode
    [    8.092311] platform 78600000.r5f: assigned reserved memory node r5f-dma-memory@a3000000
    [    8.114379] icssg-prueth icssg1-eth: error -ENODEV: iep0 get failed
    [    8.201659] remoteproc remoteproc16: 78600000.r5f is available
    [    8.271348] remoteproc remoteproc16: attaching to 78600000.r5f
    [    8.271600] platform 78600000.r5f: R5F core initialized in IPC-only mode
    [    8.271623]  remoteproc16#vdev0buffer: assigned reserved memory node r5f-dma-memory@a3000000
    [    8.272225] virtio_rpmsg_bus virtio4: rpmsg host is online
    [    8.273417] virtio_rpmsg_bus virtio4: creating channel ti.ipc4.ping-pong addr 0xd
    [    8.273750] virtio_rpmsg_bus virtio4: creating channel rpmsg_chrdev addr 0xe
    [    8.273912]  remoteproc16#vdev0buffer: registered virtio4 (type 7)
    [    8.273924] remoteproc remoteproc16: remote processor 78600000.r5f is now attached
    [    9.756674] usbcore: registered new interface driver usbfs
    [    9.794861] usbcore: registered new interface driver hub
    [    9.801669] usbcore: registered new device driver usb
    [  OK  ] Created slice system-systemd\x2dfsck.slice.
    [  OK  ] Found device /dev/mmcblk1p1.
    [  OK  ] Started udev Wait for Complete Device Initialization.
    [  OK  ] Started Hardware RNG Entropy Gatherer Daemon.
    [  OK  ] Reached target System Initialization.
    [  OK  ] Started Daily rotation of log files.
    [  OK  ] Started Timer service to update the IP on OLED each 10s.
    [  OK  ] Started Daily Cleanup of Temporary Directories.
    [  OK  ] Reached target Timers.
    [  OK  ] Listening on Avahi mDNS/DNS-SD Stack Activation Socket.
    [  OK  ] Listening on D-Bus System Message Bus Socket.
             Starting Docker Socket for the API.
    [  OK  ] Listening on dropbear.socket.
             Starting Reboot and dump vmcore via kexec...
             Starting File System Check on /dev/mmcblk1p1...
    [  OK  ] Listening on Docker Socket for the API.
    [  OK  ] Reached target Sockets.
    [  OK  ] Reached target Basic System.
    [  OK  ] Started Job spooling tools.
    [  OK  ] Started Periodic Command Scheduler.
    [  OK  ] Started D-Bus System Message Bus.
             Starting Ethernet Bridge Filtering Tables...
             Starting Print notice about GPLv3 packages...
             Starting IPv6 Packet Filtering Framework...
             Starting IPv4 Packet Filtering Framework...
    [  OK  ] Started irqbalance daemon.
             Starting Matrix GUI...
             Starting startwlanap...
             Starting startwlansta...
             Starting System Logger Daemon "default" instance...
    [   31.254953] rcu: INFO: rcu_preempt detected stalls on CPUs/tasks:
    [   31.261067] rcu: 1-...!: (0 ticks this GP) idle=ed2/1/0x4000000000000000 softirq=4897/4897 fqs=61 
    [   31.270098] (detected by 0, t=5252 jiffies, g=2205, q=1334)
    [   31.275745] Task dump for CPU 1:
    [   31.278966] task:rngd            state:R  running task     stack:    0 pid:  525 ppid:     1 flags:0x00000002
    [   31.288871] Call trace:
    [   31.291323]  __switch_to+0xc0/0x118
    [   31.294811]  vfs_read+0xac/0x1a0
    [   31.298034]  ksys_read+0x6c/0xf8
    [   31.301256]  __arm64_sys_read+0x1c/0x28
    [   31.305089]  el0_svc_common.constprop.0+0x78/0x1c8
    [   31.309871]  do_el0_svc+0x24/0xa0
    [   31.313182]  el0_svc+0x14/0x20
    [   31.316230]  el0_sync_handler+0xb0/0xb8
    [   31.320058]  el0_sync+0x180/0x1c0
    [   31.323371] rcu: rcu_preempt kthread starved for 5130 jiffies! g2205 f0x0 RCU_GP_WAIT_FQS(5) ->state=0x0 ->cpu=0
    [   31.333523] rcu: Unless rcu_preempt kthread gets sufficient CPU time, OOM is now expected behavior.
    [   31.342634] rcu: RCU grace-period kthread stack dump:
    [   31.347674] task:rcu_preempt     state:R  running task     stack:    0 pid:   12 ppid:     2 flags:0x00000028
    [   31.357576] Call trace:
    [   31.360019]  __switch_to+0xc0/0x118
    [   31.363503]  __schedule+0x274/0x760
    [   31.366984]  schedule+0x70/0x108
    [   31.370209]  schedule_timeout+0x178/0x280
    [   31.374214]  rcu_gp_kthread+0x4e8/0xb30
    [   31.378045]  kthread+0x140/0x160
    [   31.381268]  ret_from_fork+0x10/0x30

  • Hi Ankita,

    The Linux Kernel is hanging probably because of the remoteproc driver which initializes the remote cores. From A53 perspective, the remote cores are like R5F core, M4F core. Since these cores are already initialized by the SBL, you should disable the remote cores in PSDK and use the updated images.

    Please refer to the following FAQ to disable the remote cores in PSDK

    https://e2e.ti.com/.../faq-am62x-am64x-how-to-disable-unused-cores

    Regards,

    Prashant

  • Hi Prashant,

    Thanks for your quick responses.

    Below is the dts file I am using-

    // SPDX-License-Identifier: GPL-2.0
    /*
     * Copyright (C) 2020-2021 Texas Instruments Incorporated - https://www.ti.com/
     */
    
    /dts-v1/;
    
    #include <dt-bindings/phy/phy.h>
    #include <dt-bindings/mux/ti-serdes.h>
    #include <dt-bindings/leds/common.h>
    #include <dt-bindings/gpio/gpio.h>
    #include <dt-bindings/net/ti-dp83867.h>
    #include "k3-am642.dtsi"
    
    / {
    	compatible =  "ti,am642-evm", "ti,am642";
    	model = "Texas Instruments AM642 EVM";
    
    	chosen {
    		stdout-path = "serial2:115200n8";
    		bootargs = "console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000";
    	};
    
    	aliases {
    		ethernet2 = &icssg1_emac0;
    		ethernet3 = &icssg1_emac1;
    	};
    
    	memory@80000000 {
    		device_type = "memory";
    		/* 2G RAM */
    		reg = <0x00000000 0x80000000 0x00000000 0x80000000>;
    
    	};
    
    	reserved-memory {
    		#address-cells = <2>;
    		#size-cells = <2>;
    		ranges;
    
    		secure_ddr: optee@9e800000 {
    			reg = <0x00 0x9e800000 0x00 0x01800000>; /* for OP-TEE */
    			alignment = <0x1000>;
    			no-map;
    		};
    
    		main_r5fss0_core0_dma_memory_region: r5f-dma-memory@a0000000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa0000000 0x00 0x100000>;
    			no-map;
    		};
    
    		main_r5fss0_core0_memory_region: r5f-memory@a0100000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa0100000 0x00 0xf00000>;
    			no-map;
    		};
    
    		main_r5fss0_core1_dma_memory_region: r5f-dma-memory@a1000000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa1000000 0x00 0x100000>;
    			no-map;
    		};
    
    		main_r5fss0_core1_memory_region: r5f-memory@a1100000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa1100000 0x00 0xf00000>;
    			no-map;
    		};
    
    		main_r5fss1_core0_dma_memory_region: r5f-dma-memory@a2000000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa2000000 0x00 0x100000>;
    			no-map;
    		};
    
    		main_r5fss1_core0_memory_region: r5f-memory@a2100000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa2100000 0x00 0xf00000>;
    			no-map;
    		};
    
    		main_r5fss1_core1_dma_memory_region: r5f-dma-memory@a3000000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa3000000 0x00 0x100000>;
    			no-map;
    		};
    
    		main_r5fss1_core1_memory_region: r5f-memory@a3100000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa3100000 0x00 0xf00000>;
    			no-map;
    		};
    
    		mcu_m4fss_dma_memory_region: m4f-dma-memory@a4000000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa4000000 0x00 0x100000>;
    			no-map;
    		};
    
    		mcu_m4fss_memory_region: m4f-memory@a4100000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa4100000 0x00 0xf00000>;
    			no-map;
    		};
    
    		rtos_ipc_memory_region: ipc-memories@a5000000 {
    			reg = <0x00 0xa5000000 0x00 0x00800000>;
    			alignment = <0x1000>;
    			no-map;
    		};
    	};
    
    	evm_12v0: fixedregulator-evm12v0 {
    		/* main DC jack */
    		compatible = "regulator-fixed";
    		regulator-name = "evm_12v0";
    		regulator-min-microvolt = <12000000>;
    		regulator-max-microvolt = <12000000>;
    		regulator-always-on;
    		regulator-boot-on;
    	};
    
    	vsys_5v0: fixedregulator-vsys5v0 {
    		/* output of LM5140 */
    		compatible = "regulator-fixed";
    		regulator-name = "vsys_5v0";
    		regulator-min-microvolt = <5000000>;
    		regulator-max-microvolt = <5000000>;
    		vin-supply = <&evm_12v0>;
    		regulator-always-on;
    		regulator-boot-on;
    	};
    
    	vsys_3v3: fixedregulator-vsys3v3 {
    		/* output of LM5140 */
    		compatible = "regulator-fixed";
    		regulator-name = "vsys_3v3";
    		regulator-min-microvolt = <3300000>;
    		regulator-max-microvolt = <3300000>;
    		vin-supply = <&evm_12v0>;
    		regulator-always-on;
    		regulator-boot-on;
    	};
    
    	vdd_mmc1: fixed-regulator-sd {
    		/* TPS2051BD */
    		compatible = "regulator-fixed";
    		regulator-name = "vdd_mmc1";
    		regulator-min-microvolt = <3300000>;
    		regulator-max-microvolt = <3300000>;
    		regulator-boot-on;
    		enable-active-high;
    		vin-supply = <&vsys_3v3>;
    		gpio = <&exp1 6 GPIO_ACTIVE_HIGH>;
    	};
    
    	vddb: fixedregulator-vddb {
    		compatible = "regulator-fixed";
    		regulator-name = "vddb_3v3_display";
    		regulator-min-microvolt = <3300000>;
    		regulator-max-microvolt = <3300000>;
    		vin-supply = <&vsys_3v3>;
    		regulator-always-on;
    		regulator-boot-on;
    	};
    
    	leds {
    		compatible = "gpio-leds";
    
    		led-0 {
    			label = "am64-evm:red:heartbeat";
    			gpios = <&exp1 16 GPIO_ACTIVE_HIGH>;
    			linux,default-trigger = "heartbeat";
    			function = LED_FUNCTION_HEARTBEAT;
    			default-state = "off";
    		};
    	};
    
    	mdio_mux: mux-controller {
    		compatible = "gpio-mux";
    		#mux-control-cells = <0>;
    
    		mux-gpios = <&exp1 12 GPIO_ACTIVE_HIGH>;
    	};
    
    	mdio_mux_1: mdio-mux-1 {
    		compatible = "mdio-mux-multiplexer";
    		mux-controls = <&mdio_mux>;
    		mdio-parent-bus = <&cpsw3g_mdio>;
    		#address-cells = <1>;
    		#size-cells = <0>;
    
    		mdio@1 {
    			reg = <0x1>;
    			#address-cells = <1>;
    			#size-cells = <0>;
    
    			cpsw3g_phy3: ethernet-phy@3 {
    				reg = <3>;
    				tx-internal-delay-ps = <250>;
    				rx-internal-delay-ps = <2000>;
    			};
    		};
    	};
    
    	transceiver1: can-phy0 {
    		compatible = "ti,tcan1042";
    		#phy-cells = <0>;
    		max-bitrate = <5000000>;
    		standby-gpios = <&exp1 8 GPIO_ACTIVE_HIGH>;
    	};
    
    	transceiver2: can-phy1 {
    		compatible = "ti,tcan1042";
    		#phy-cells = <0>;
    		max-bitrate = <5000000>;
    		standby-gpios = <&exp1 9 GPIO_ACTIVE_HIGH>;
    	};
    
    	icssg1_eth: icssg1-eth {
    		compatible = "ti,am642-icssg-prueth";
    		pinctrl-names = "default";
    		pinctrl-0 = <&icssg1_rgmii1_pins_default>;
    
    		sram = <&oc_sram>;
    		ti,prus = <&pru1_0>, <&rtu1_0>, <&tx_pru1_0>, <&pru1_1>, <&rtu1_1>, <&tx_pru1_1>;
    		firmware-name = "ti-pruss/am65x-sr2-pru0-prueth-fw.elf",
    				"ti-pruss/am65x-sr2-rtu0-prueth-fw.elf",
    				"ti-pruss/am65x-sr2-txpru0-prueth-fw.elf",
    				"ti-pruss/am65x-sr2-pru1-prueth-fw.elf",
    				"ti-pruss/am65x-sr2-rtu1-prueth-fw.elf",
    				"ti-pruss/am65x-sr2-txpru1-prueth-fw.elf";
    
    		ti,pruss-gp-mux-sel = <2>,	/* MII mode */
    				      <2>,
    				      <2>,
    				      <2>,	/* MII mode */
    				      <2>,
    				      <2>;
    
    		mii-g-rt = <&icssg1_mii_g_rt>;
    		mii-rt = <&icssg1_mii_rt>;
    		iep = <&icssg1_iep0>,  <&icssg1_iep1>;
    
    		interrupt-parent = <&icssg1_intc>;
    		interrupts = <24 0 2>, <25 1 3>;
    		interrupt-names = "tx_ts0", "tx_ts1";
    
    		dmas = <&main_pktdma 0xc200 15>, /* egress slice 0 */
    		       <&main_pktdma 0xc201 15>, /* egress slice 0 */
    		       <&main_pktdma 0xc202 15>, /* egress slice 0 */
    		       <&main_pktdma 0xc203 15>, /* egress slice 0 */
    		       <&main_pktdma 0xc204 15>, /* egress slice 1 */
    		       <&main_pktdma 0xc205 15>, /* egress slice 1 */
    		       <&main_pktdma 0xc206 15>, /* egress slice 1 */
    		       <&main_pktdma 0xc207 15>, /* egress slice 1 */
    		       <&main_pktdma 0x4200 15>, /* ingress slice 0 */
    		       <&main_pktdma 0x4201 15>, /* ingress slice 1 */
    		       <&main_pktdma 0x4202 0>, /* mgmnt rsp slice 0 */
    		       <&main_pktdma 0x4203 0>; /* mgmnt rsp slice 1 */
    		dma-names = "tx0-0", "tx0-1", "tx0-2", "tx0-3",
    			    "tx1-0", "tx1-1", "tx1-2", "tx1-3",
    			    "rx0", "rx1",
    			    "rxmgm0", "rxmgm1";
    
    		icssg1_emac0: ethernet-mii0 {
    			phy-handle = <&icssg1_phy1>;
    			phy-mode = "rgmii-rxid";
    			syscon-rgmii-delay = <&main_conf 0x4110>;
    			/* Filled in by bootloader */
    			local-mac-address = [00 00 00 00 00 00];
    		};
    
    		icssg1_emac1: ethernet-mii1 {
    			syscon-rgmii-delay = <&main_conf 0x4114>;
    			/* Filled in by bootloader */
    			local-mac-address = [00 00 00 00 00 00];
    			status = "disabled";
    		};
    	};
    };
    
    /* Modify sram label present in k3-am64-main.dtsi */
    &oc_sram {
        main_r5fss0_core0_sram: r5f-sram@80000 {
            reg = <0x80000 0x40000>;
        };
        
        main_r5fss0_core1_sram: r5f-sram@c0000 {
            reg = <0xc0000 0x40000>;
        };
        
        main_r5fss1_core0_sram: r5f-sram@100000 {
            reg = <0x100000 0x40000>;
        };
        
        main_r5fss1_core1_sram: r5f-sram@140000 {
            reg = <0x140000 0x40000>;
        };
    };
    
    &main_r5fss0_core0 {
    	mboxes = <&mailbox0_cluster2 &mbox_main_r5fss0_core0>;
    	memory-region = <&main_r5fss0_core0_dma_memory_region>,
    			<&main_r5fss0_core0_memory_region>;
    	sram = <&main_r5fss0_core0_sram>;
    };
    
    &main_r5fss0_core1 {
    	mboxes = <&mailbox0_cluster2 &mbox_main_r5fss0_core1>;
    	memory-region = <&main_r5fss0_core1_dma_memory_region>,
    			<&main_r5fss0_core1_memory_region>;
    	sram = <&main_r5fss0_core1_sram>;
    };
    
    &main_r5fss1_core0 {
    	mboxes = <&mailbox0_cluster4 &mbox_main_r5fss1_core0>;
    	memory-region = <&main_r5fss1_core0_dma_memory_region>,
    			<&main_r5fss1_core0_memory_region>;
    	sram = <&main_r5fss1_core0_sram>;
    };
    
    &main_r5fss1_core1 {
    	mboxes = <&mailbox0_cluster4 &mbox_main_r5fss1_core1>;
    	memory-region = <&main_r5fss1_core1_dma_memory_region>,
    			<&main_r5fss1_core1_memory_region>;
    	sram = <&main_r5fss1_core1_sram>;
    };
    
    &mcu_m4fss {
    	mboxes = <&mailbox0_cluster6 &mbox_m4_0>;
    	memory-region = <&mcu_m4fss_dma_memory_region>,
    			<&mcu_m4fss_memory_region>;
    };
    
    &main_pmx0 {
    	main_mmc1_pins_default: main-mmc1-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0294, PIN_INPUT_PULLUP, 0) /* (J19) MMC1_CMD */
    			AM64X_IOPAD(0x028c, PIN_INPUT_PULLDOWN, 0) /* (L20) MMC1_CLK */
    			AM64X_IOPAD(0x0288, PIN_INPUT_PULLUP, 0) /* (K21) MMC1_DAT0 */
    			AM64X_IOPAD(0x0284, PIN_INPUT_PULLUP, 0) /* (L21) MMC1_DAT1 */
    			AM64X_IOPAD(0x0280, PIN_INPUT_PULLUP, 0) /* (K19) MMC1_DAT2 */
    			AM64X_IOPAD(0x027c, PIN_INPUT_PULLUP, 0) /* (K18) MMC1_DAT3 */
    			AM64X_IOPAD(0x0298, PIN_INPUT_PULLUP, 0) /* (D19) MMC1_SDCD */
    			AM64X_IOPAD(0x029c, PIN_INPUT, 0) /* (C20) MMC1_SDWP */
    			AM64X_IOPAD(0x0290, PIN_INPUT, 0) /* MMC1_CLKLB */
    		>;
    	};
    
    	main_uart0_pins_default: main-uart0-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0238, PIN_INPUT, 0) /* (B16) UART0_CTSn */
    			AM64X_IOPAD(0x023c, PIN_OUTPUT, 0) /* (A16) UART0_RTSn */
    			AM64X_IOPAD(0x0230, PIN_INPUT, 0) /* (D15) UART0_RXD */
    			AM64X_IOPAD(0x0234, PIN_OUTPUT, 0) /* (C16) UART0_TXD */
    		>;
    	};
    
    	main_spi0_pins_default: main-spi0-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0210, PIN_INPUT, 0) /* (D13) SPI0_CLK */
    			AM64X_IOPAD(0x0208, PIN_OUTPUT, 0) /* (D12) SPI0_CS0 */
    			AM64X_IOPAD(0x0214, PIN_OUTPUT, 0) /* (A13) SPI0_D0 */
    			AM64X_IOPAD(0x0218, PIN_INPUT, 0) /* (A14) SPI0_D1 */
    		>;
    	};
    
    	main_i2c1_pins_default: main-i2c1-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0268, PIN_INPUT_PULLUP, 0) /* (C18) I2C1_SCL */
    			AM64X_IOPAD(0x026c, PIN_INPUT_PULLUP, 0) /* (B19) I2C1_SDA */
    		>;
    	};
    
    	mdio1_pins_default: mdio1-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x01fc, PIN_OUTPUT, 4) /* (R2) PRG0_PRU1_GPO19.MDIO0_MDC */
    			AM64X_IOPAD(0x01f8, PIN_INPUT, 4) /* (P5) PRG0_PRU1_GPO18.MDIO0_MDIO */
    		>;
    	};
    
    	rgmii1_pins_default: rgmii1-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x01cc, PIN_INPUT, 4) /* (W5) PRG0_PRU1_GPO7.RGMII1_RD0 */
    			AM64X_IOPAD(0x01d4, PIN_INPUT, 4) /* (Y5) PRG0_PRU1_GPO9.RGMII1_RD1 */
    			AM64X_IOPAD(0x01d8, PIN_INPUT, 4) /* (V6) PRG0_PRU1_GPO10.RGMII1_RD2 */
    			AM64X_IOPAD(0x01f4, PIN_INPUT, 4) /* (V5) PRG0_PRU1_GPO17.RGMII1_RD3 */
    			AM64X_IOPAD(0x0188, PIN_INPUT, 4) /* (AA5) PRG0_PRU0_GPO10.RGMII1_RXC */
    			AM64X_IOPAD(0x0184, PIN_INPUT, 4) /* (W6) PRG0_PRU0_GPO9.RGMII1_RX_CTL */
    			AM64X_IOPAD(0x0124, PIN_OUTPUT, 4) /* (V15) PRG1_PRU1_GPO7.RGMII1_TD0 */
    			AM64X_IOPAD(0x012c, PIN_OUTPUT, 4) /* (V14) PRG1_PRU1_GPO9.RGMII1_TD1 */
    			AM64X_IOPAD(0x0130, PIN_OUTPUT, 4) /* (W14) PRG1_PRU1_GPO10.RGMII1_TD2 */
    			AM64X_IOPAD(0x014c, PIN_OUTPUT, 4) /* (AA14) PRG1_PRU1_GPO17.RGMII1_TD3 */
    			AM64X_IOPAD(0x00e0, PIN_OUTPUT, 4) /* (U14) PRG1_PRU0_GPO10.RGMII1_TXC */
    			AM64X_IOPAD(0x00dc, PIN_OUTPUT, 4) /* (U15) PRG1_PRU0_GPO9.RGMII1_TX_CTL */
    		>;
    	};
    
           rgmii2_pins_default: rgmii2-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0108, PIN_INPUT, 4) /* (W11) PRG1_PRU1_GPO0.RGMII2_RD0 */
    			AM64X_IOPAD(0x010c, PIN_INPUT, 4) /* (V11) PRG1_PRU1_GPO1.RGMII2_RD1 */
    			AM64X_IOPAD(0x0110, PIN_INPUT, 4) /* (AA12) PRG1_PRU1_GPO2.RGMII2_RD2 */
    			AM64X_IOPAD(0x0114, PIN_INPUT, 4) /* (Y12) PRG1_PRU1_GPO3.RGMII2_RD3 */
    			AM64X_IOPAD(0x0120, PIN_INPUT, 4) /* (U11) PRG1_PRU1_GPO6.RGMII2_RXC */
    			AM64X_IOPAD(0x0118, PIN_INPUT, 4) /* (W12) PRG1_PRU1_GPO4.RGMII2_RX_CTL */
    			AM64X_IOPAD(0x0134, PIN_OUTPUT, 4) /* (AA10) PRG1_PRU1_GPO11.RGMII2_TD0 */
    			AM64X_IOPAD(0x0138, PIN_OUTPUT, 4) /* (V10) PRG1_PRU1_GPO12.RGMII2_TD1 */
    			AM64X_IOPAD(0x013c, PIN_OUTPUT, 4) /* (U10) PRG1_PRU1_GPO13.RGMII2_TD2 */
    			AM64X_IOPAD(0x0140, PIN_OUTPUT, 4) /* (AA11) PRG1_PRU1_GPO14.RGMII2_TD3 */
    			AM64X_IOPAD(0x0148, PIN_OUTPUT, 4) /* (Y10) PRG1_PRU1_GPO16.RGMII2_TXC */
    			AM64X_IOPAD(0x0144, PIN_OUTPUT, 4) /* (Y11) PRG1_PRU1_GPO15.RGMII2_TX_CTL */
    		>;
    	};
    
    	main_usb0_pins_default: main-usb0-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x02a8, PIN_OUTPUT, 0) /* (E19) USB0_DRVVBUS */
    		>;
    	};
    
    	ospi0_pins_default: ospi0-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0000, PIN_OUTPUT, 0) /* (N20) OSPI0_CLK */
    			AM64X_IOPAD(0x002c, PIN_OUTPUT, 0) /* (L19) OSPI0_CSn0 */
    			AM64X_IOPAD(0x000c, PIN_INPUT, 0) /* (M19) OSPI0_D0 */
    			AM64X_IOPAD(0x0010, PIN_INPUT, 0) /* (M18) OSPI0_D1 */
    			AM64X_IOPAD(0x0014, PIN_INPUT, 0) /* (M20) OSPI0_D2 */
    			AM64X_IOPAD(0x0018, PIN_INPUT, 0) /* (M21) OSPI0_D3 */
    			AM64X_IOPAD(0x001c, PIN_INPUT, 0) /* (P21) OSPI0_D4 */
    			AM64X_IOPAD(0x0020, PIN_INPUT, 0) /* (P20) OSPI0_D5 */
    			AM64X_IOPAD(0x0024, PIN_INPUT, 0) /* (N18) OSPI0_D6 */
    			AM64X_IOPAD(0x0028, PIN_INPUT, 0) /* (M17) OSPI0_D7 */
    			AM64X_IOPAD(0x0008, PIN_INPUT, 0) /* (N19) OSPI0_DQS */
    		>;
    	};
    
    	main_mcan0_pins_default: main-mcan0-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0254, PIN_INPUT, 0) /* (B17) MCAN0_RX */
    			AM64X_IOPAD(0x0250, PIN_OUTPUT, 0) /* (A17) MCAN0_TX */
    		>;
    	};
    
    	main_mcan1_pins_default: main-mcan1-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x025c, PIN_INPUT, 0) /* (D17) MCAN1_RX */
    			AM64X_IOPAD(0x0258, PIN_OUTPUT, 0) /* (C17) MCAN1_TX */
    		>;
    	};
    
    	icssg1_mdio1_pins_default: icssg1-mdio1-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x015c, PIN_OUTPUT, 0) /* (Y6) PRG1_MDIO0_MDC */
    			AM64X_IOPAD(0x0158, PIN_INPUT, 0) /* (AA6) PRG1_MDIO0_MDIO */
    		>;
    	};
    
    	icssg1_rgmii1_pins_default: icssg1-rgmii1-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x00b8, PIN_INPUT, 2) /* (Y7) PRG1_PRU0_GPO0.PRG1_RGMII1_RD0 */
    			AM64X_IOPAD(0x00bc, PIN_INPUT, 2) /* (U8) PRG1_PRU0_GPO1.PRG1_RGMII1_RD1 */
    			AM64X_IOPAD(0x00c0, PIN_INPUT, 2) /* (W8) PRG1_PRU0_GPO2.PRG1_RGMII1_RD2 */
    			AM64X_IOPAD(0x00c4, PIN_INPUT, 2) /* (V8) PRG1_PRU0_GPO3.PRG1_RGMII1_RD3 */
    			AM64X_IOPAD(0x00d0, PIN_INPUT, 2) /* (AA7) PRG1_PRU0_GPO6.PRG1_RGMII1_RXC */
    			AM64X_IOPAD(0x00c8, PIN_INPUT, 2) /* (Y8) PRG1_PRU0_GPO4.PRG1_RGMII1_RX_CTL */
    			AM64X_IOPAD(0x00e4, PIN_INPUT, 2) /* (AA8) PRG1_PRU0_GPO11.PRG1_RGMII1_TD0 */
    			AM64X_IOPAD(0x00e8, PIN_INPUT, 2) /* (U9) PRG1_PRU0_GPO12.PRG1_RGMII1_TD1 */
    			AM64X_IOPAD(0x00ec, PIN_INPUT, 2) /* (W9) PRG1_PRU0_GPO13.PRG1_RGMII1_TD2 */
    			AM64X_IOPAD(0x00f0, PIN_INPUT, 2) /* (AA9) PRG1_PRU0_GPO14.PRG1_RGMII1_TD3 */
    			AM64X_IOPAD(0x00f8, PIN_INPUT, 2) /* (V9) PRG1_PRU0_GPO16.PRG1_RGMII1_TXC */
    			AM64X_IOPAD(0x00f4, PIN_INPUT, 2) /* (Y9) PRG1_PRU0_GPO15.PRG1_RGMII1_TX_CTL */
    		>;
    	};
    
    	icssg1_iep0_pins_default: icssg1-iep0-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0104, PIN_OUTPUT, 2) /* (W7) PRG1_PRU0_GPO19.PRG1_IEP0_EDC_SYNC_OUT0 */
    		>;
    	};
    
    	main_ecap0_pins_default: main-ecap0-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0270, PIN_INPUT, 0) /* (D18) ECAP0_IN_APWM_OUT */
    		>;
    	};
    };
    
    &main_uart0 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_uart0_pins_default>;
    };
    
    /* main_uart1 is reserved for firmware usage */
    &main_uart1 {
    	status = "reserved";
    };
    
    &main_uart2 {
    	status = "disabled";
    };
    
    &main_uart3 {
    	status = "disabled";
    };
    
    &main_uart4 {
    	status = "disabled";
    };
    
    &main_uart5 {
    	status = "disabled";
    };
    
    &main_uart6 {
    	status = "disabled";
    };
    
    &mcu_uart0 {
    	status = "disabled";
    };
    
    &mcu_uart1 {
    	status = "disabled";
    };
    
    &main_i2c1 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_i2c1_pins_default>;
    	clock-frequency = <400000>;
    
    	exp1: gpio@22 {
    		compatible = "ti,tca6424";
    		reg = <0x22>;
    		gpio-controller;
    		#gpio-cells = <2>;
    		gpio-line-names = "GPIO_eMMC_RSTn", "CAN_MUX_SEL",
    				  "GPIO_CPSW1_RST", "GPIO_RGMII1_RST",
    				  "GPIO_RGMII2_RST", "GPIO_PCIe_RST_OUT",
    				  "MMC1_SD_EN", "FSI_FET_SEL",
    				  "MCAN0_STB_3V3", "MCAN1_STB_3V3",
    				  "CPSW_FET_SEL", "CPSW_FET2_SEL",
    				  "PRG1_RGMII2_FET_SEL", "TEST_GPIO2",
    				  "GPIO_OLED_RESETn", "VPP_LDO_EN",
    				  "TEST_LED1", "TP92", "TP90", "TP88",
    				  "TP87", "TP86", "TP89", "TP91";
    	};
    
    	/* osd9616p0899-10 */
    	display@3c {
    		compatible = "solomon,ssd1306fb-i2c";
    		reg = <0x3c>;
    		reset-gpios = <&exp1 14 GPIO_ACTIVE_LOW>;
    		vbat-supply = <&vddb>;
    		solomon,height = <16>;
    		solomon,width = <96>;
    		solomon,com-seq;
    		solomon,com-invdir;
    		solomon,page-offset = <0>;
    		solomon,prechargep1 = <2>;
    		solomon,prechargep2 = <13>;
    	};
    };
    
    /* mcu_gpio0 is reserved for mcu firmware usage */
    &mcu_gpio0 {
    	status = "reserved";
    };
    
    &mcu_i2c0 {
    	status = "disabled";
    };
    
    &mcu_i2c1 {
    	status = "disabled";
    };
    
    &mcu_spi0 {
    	status = "disabled";
    };
    
    &mcu_spi1 {
    	status = "disabled";
    };
    
    &main_spi0 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_spi0_pins_default>;
    	ti,pindir-d0-out-d1-in = <1>;
    	eeprom@0 {
    		compatible = "microchip,93lc46b";
    		reg = <0>;
    		spi-max-frequency = <1000000>;
    		spi-cs-high;
    		data-size = <16>;
    	};
    };
    
    &sdhci0 {
    	/* emmc */
    	bus-width = <8>;
    	non-removable;
    	ti,driver-strength-ohm = <50>;
    	disable-wp;
    };
    
    &sdhci1 {
    	/* SD/MMC */
    	vmmc-supply = <&vdd_mmc1>;
    	pinctrl-names = "default";
    	bus-width = <4>;
    	pinctrl-0 = <&main_mmc1_pins_default>;
    	ti,driver-strength-ohm = <50>;
    	disable-wp;
    };
    
    &usbss0 {
    	ti,vbus-divider;
    	ti,usb2-only;
    };
    
    &usb0 {
    	dr_mode = "otg";
    	maximum-speed = "high-speed";
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_usb0_pins_default>;
    };
    
    &cpsw3g {
    	pinctrl-names = "default";
    	pinctrl-0 = <&mdio1_pins_default
    		     &rgmii1_pins_default
    		     &rgmii2_pins_default>;
    
    	cpts@3d000 {
    		ti,pps = <7 1>;
    	};
    };
    
    &cpsw_port1 {
    	phy-mode = "rgmii-rxid";
    	phy-handle = <&cpsw3g_phy0>;
    };
    
    &cpsw_port2 {
    	phy-mode = "rgmii-rxid";
    	phy-handle = <&cpsw3g_phy3>;
    };
    
    &cpsw3g_mdio {
    	cpsw3g_phy0: ethernet-phy@0 {
    		reg = <0>;
    		ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
    		ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
    	};
    };
    
    #define TS_OFFSET(pa, val)     (0x4+(pa)*4) (0x10000 | val)
    
    &timesync_router {
    	pinctrl-names = "default";
    	pinctrl-0 = <&mcu_cpts_pps>;
    
    	/* Example of the timesync routing */
    	mcu_cpts_pps: mcu-cpts-pps {
    		pinctrl-single,pins = <
    				/* pps [cpts genf1] in22 -> out37 [cpts hw8_push] */
    				TS_OFFSET(37, 22)
    				/* pps [cpts genf1] in22 -> out25 [SYNC1_OUT pin] */
    				TS_OFFSET(25, 22)
    				>;
    	};
    };
    
    &mailbox0_cluster2 {
    	mbox_main_r5fss0_core0: mbox-main-r5fss0-core0 {
    		ti,mbox-rx = <0 0 2>;
    		ti,mbox-tx = <1 0 2>;
    	};
    
    	mbox_main_r5fss0_core1: mbox-main-r5fss0-core1 {
    		ti,mbox-rx = <2 0 2>;
    		ti,mbox-tx = <3 0 2>;
    	};
    };
    
    &mailbox0_cluster3 {
    	status = "disabled";
    };
    
    &mailbox0_cluster4 {
    	mbox_main_r5fss1_core0: mbox-main-r5fss1-core0 {
    		ti,mbox-rx = <0 0 2>;
    		ti,mbox-tx = <1 0 2>;
    	};
    
    	mbox_main_r5fss1_core1: mbox-main-r5fss1-core1 {
    		ti,mbox-rx = <2 0 2>;
    		ti,mbox-tx = <3 0 2>;
    	};
    };
    
    &mailbox0_cluster5 {
    	status = "disabled";
    };
    
    &mailbox0_cluster6 {
    	mbox_m4_0: mbox-m4-0 {
    		ti,mbox-rx = <0 0 2>;
    		ti,mbox-tx = <1 0 2>;
    	};
    };
    
    &mailbox0_cluster7 {
    	status = "disabled";
    };
    
    &serdes_ln_ctrl {
    	idle-states = <AM64_SERDES0_LANE0_PCIE0>;
    };
    
    &serdes0 {
    	serdes0_pcie_link: phy@0 {
    		reg = <0>;
    		cdns,num-lanes = <1>;
    		#phy-cells = <0>;
    		cdns,phy-type = <PHY_TYPE_PCIE>;
    		resets = <&serdes_wiz0 1>;
    	};
    };
    
    &pcie0_rc {
    	reset-gpios = <&exp1 5 GPIO_ACTIVE_HIGH>;
    	phys = <&serdes0_pcie_link>;
    	phy-names = "pcie-phy";
    	num-lanes = <1>;
    };
    
    &pcie0_ep {
    	phys = <&serdes0_pcie_link>;
    	phy-names = "pcie-phy";
    	num-lanes = <1>;
    	status = "disabled";
    };
    
    &tscadc0 {
    	/* ADC is reserved for R5 usage */
    	status = "reserved";
    };
    
    &ospi0 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&ospi0_pins_default>;
    
    	flash@0{
    		compatible = "jedec,spi-nor";
    		reg = <0x0>;
    		spi-tx-bus-width = <8>;
    		spi-rx-bus-width = <8>;
    		spi-max-frequency = <25000000>;
    		cdns,tshsl-ns = <60>;
    		cdns,tsd2d-ns = <60>;
    		cdns,tchsh-ns = <60>;
    		cdns,tslch-ns = <60>;
    		cdns,read-delay = <4>;
    		cdns,phy-mode;
    		#address-cells = <1>;
    		#size-cells = <1>;
    	};
    };
    
    &main_mcan0 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_mcan0_pins_default>;
    	phys = <&transceiver1>;
    };
    
    &main_mcan1 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_mcan1_pins_default>;
    	phys = <&transceiver2>;
    };
    
    &icssg0_mdio {
    	status = "disabled";
    };
    
    &icssg1_mdio {
    	pinctrl-names = "default";
    	pinctrl-0 = <&icssg1_mdio1_pins_default>;
    
    	icssg1_phy1: ethernet-phy@0 {
    		reg = <0xf>;
    		tx-internal-delay-ps = <250>;
    		rx-internal-delay-ps = <2000>;
    	};
    };
    
    &icssg1_iep0 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&icssg1_iep0_pins_default>;
    };
    
    &ecap0 {
    	/* PWM is available on Pin 1 of header J12 */
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_ecap0_pins_default>;
    };
    

    I want to run EtherCAT example application from R5F core. So, the unused cores in this case will be main_r5fss0_core1, main_r5fss1_core0, main_r5fss1_core1 and mcu_m4fss ?

    Also, initially I was compiling the k3-am642-evm.dts to generate k3-am642-evm.dtb, then copied it to the /boot folder of the EVM board. Now because the board is not booting, how can I do it?

  • Hello Ankita,

    Ok, there have been a lot of changes here.

    1) Back on this response, I thought you were using the Linux SPL boot flow documented in the Linux SDK docs here. However, it sounds like you are actually using the MCU+ SBL boot flow documented in the MCU+ SDK here. Can you please confirm exactly what boot flow you want to use?

    2) Are you still trying to initialize the R5F cores with Linux? If you are loading the R5F binaries with SBL boot, then the cores will already be running by the time Linux RemoteProc driver is called during Linux boot time.

    3) If you are initializing the R5F cores during SBL boot, do you want to be able to use RPMsg communication between Linux and the R5F remote cores?
    3a) If you want to use RPMsg, leave status = okay in the Linux devicetree
    3b) If you do not want to use RPMsg, you can set status = reserved or disabled in the Linux devicetree

    4) In your initial post, you removed the PRU Ethernet nodes from the Linux devicetree. However, in your latest devicetree I see that the PRU Ethernet nodes are back. If you want the R5F cores to control the PRU Ethernet nodes, then the PRU Ethernet and ICSSG nodes should be disabled in the Linux devicetree, like in your initial post.

    Regards,

    Nick

  • Hi Nick,

    I am using Linux SPL boot flow, booting the AM64x EVM through SD Card(wic image downloaded from here). We initially used the MCU+SBL flow for SoC intialization and testing if the examples work.

    I diverged and started using the emmc flow as suggested in the forum post mentioned in this post, I think I went wrong here.

    Now circling back to the original issue-

    1. We are using Linux SPL boot flow, using SD card. Once the device boots, we tried loading the R5F0 core(used this documentation) with the EtherCAT beckhoff example that comes with the MCU+SDK but it doesn't work.

    2. As per the boot flow, I observed that it mentions that bootloader has to run on R5 core. Is this the same R5F0 core which I am trying to use to run EtherCAT? Should I not be using it then?

    3. With Linux SPL boot flow, by default no binary is loaded to the R5F0 core? If not, then could you please point me to the documentation which I can follow to avoid doing it?

    4. We want to keep using the RPMsg between the R5F and A53 cores.

    5. When I removed the PRU ethernet nodes from the Linux device tree, I observed a hang during boot, so I brought them back. I understand I should have them removed in order to get EtherCAT working. Do you have any specific suggestion?

     

    Thanks,

    Ankita

  • Hello Ankita,

    Got it. With the Linux SPL boot flow, R5F0_0 does start the SYSFW running on the DMSC core, and then run the SPL that initializes other parts of the system. However, once the SPL finishes running, other firmware can be run on the R5F0_0.

    By the time the AM64x Linux RemoteProc driver is starting to initialize remote cores, R5F0_0 is available for the RemoteProc driver to load firmware into and initialize R5F0_0, just like the other R5F cores.

    Can you post the hang that you observe when the PRU_ICSSGs are disabled in the Linux devicetree, and references to the PRU Ethernet are removed from the Linux devicetree? The terminal output in the original post has a bunch of other errors that are unrelated to PRU Ethernet, so I assume there is a different hang you were seeing.

    Regards,

    Nick

  • Hi Nick,

    I used the below device tree changes, and the board booted fine(Using SD card boot mode). However, it had an IP(ethernet connected). Is this expected?

    // SPDX-License-Identifier: GPL-2.0
    /*
     * Copyright (C) 2020-2021 Texas Instruments Incorporated - https://www.ti.com/
     */
    
    /dts-v1/;
    
    #include <dt-bindings/phy/phy.h>
    #include <dt-bindings/mux/ti-serdes.h>
    #include <dt-bindings/leds/common.h>
    #include <dt-bindings/gpio/gpio.h>
    #include <dt-bindings/net/ti-dp83867.h>
    #include "k3-am642.dtsi"
    
    / {
    	compatible =  "ti,am642-evm", "ti,am642";
    	model = "Texas Instruments AM642 EVM";
    
    	chosen {
    		stdout-path = "serial2:115200n8";
    		bootargs = "console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000";
    	};
    
    	memory@80000000 {
    		device_type = "memory";
    		/* 2G RAM */
    		reg = <0x00000000 0x80000000 0x00000000 0x80000000>;
    
    	};
    
    	reserved-memory {
    		#address-cells = <2>;
    		#size-cells = <2>;
    		ranges;
    
    		secure_ddr: optee@9e800000 {
    			reg = <0x00 0x9e800000 0x00 0x01800000>; /* for OP-TEE */
    			alignment = <0x1000>;
    			no-map;
    		};
    
    		main_r5fss0_core0_dma_memory_region: r5f-dma-memory@a0000000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa0000000 0x00 0x100000>;
    			no-map;
    		};
    
    		main_r5fss0_core0_memory_region: r5f-memory@a0100000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa0100000 0x00 0xf00000>;
    			no-map;
    		};
    
    		main_r5fss0_core1_dma_memory_region: r5f-dma-memory@a1000000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa1000000 0x00 0x100000>;
    			no-map;
    		};
    
    		main_r5fss0_core1_memory_region: r5f-memory@a1100000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa1100000 0x00 0xf00000>;
    			no-map;
    		};
    
    		main_r5fss1_core0_dma_memory_region: r5f-dma-memory@a2000000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa2000000 0x00 0x100000>;
    			no-map;
    		};
    
    		main_r5fss1_core0_memory_region: r5f-memory@a2100000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa2100000 0x00 0xf00000>;
    			no-map;
    		};
    
    		main_r5fss1_core1_dma_memory_region: r5f-dma-memory@a3000000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa3000000 0x00 0x100000>;
    			no-map;
    		};
    
    		main_r5fss1_core1_memory_region: r5f-memory@a3100000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa3100000 0x00 0xf00000>;
    			no-map;
    		};
    
    		mcu_m4fss_dma_memory_region: m4f-dma-memory@a4000000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa4000000 0x00 0x100000>;
    			no-map;
    		};
    
    		mcu_m4fss_memory_region: m4f-memory@a4100000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa4100000 0x00 0xf00000>;
    			no-map;
    		};
    
    		rtos_ipc_memory_region: ipc-memories@a5000000 {
    			reg = <0x00 0xa5000000 0x00 0x00800000>;
    			alignment = <0x1000>;
    			no-map;
    		};
    	};
    
    	evm_12v0: fixedregulator-evm12v0 {
    		/* main DC jack */
    		compatible = "regulator-fixed";
    		regulator-name = "evm_12v0";
    		regulator-min-microvolt = <12000000>;
    		regulator-max-microvolt = <12000000>;
    		regulator-always-on;
    		regulator-boot-on;
    	};
    
    	vsys_5v0: fixedregulator-vsys5v0 {
    		/* output of LM5140 */
    		compatible = "regulator-fixed";
    		regulator-name = "vsys_5v0";
    		regulator-min-microvolt = <5000000>;
    		regulator-max-microvolt = <5000000>;
    		vin-supply = <&evm_12v0>;
    		regulator-always-on;
    		regulator-boot-on;
    	};
    
    	vsys_3v3: fixedregulator-vsys3v3 {
    		/* output of LM5140 */
    		compatible = "regulator-fixed";
    		regulator-name = "vsys_3v3";
    		regulator-min-microvolt = <3300000>;
    		regulator-max-microvolt = <3300000>;
    		vin-supply = <&evm_12v0>;
    		regulator-always-on;
    		regulator-boot-on;
    	};
    
    	vdd_mmc1: fixed-regulator-sd {
    		/* TPS2051BD */
    		compatible = "regulator-fixed";
    		regulator-name = "vdd_mmc1";
    		regulator-min-microvolt = <3300000>;
    		regulator-max-microvolt = <3300000>;
    		regulator-boot-on;
    		enable-active-high;
    		vin-supply = <&vsys_3v3>;
    		gpio = <&exp1 6 GPIO_ACTIVE_HIGH>;
    	};
    
    	vddb: fixedregulator-vddb {
    		compatible = "regulator-fixed";
    		regulator-name = "vddb_3v3_display";
    		regulator-min-microvolt = <3300000>;
    		regulator-max-microvolt = <3300000>;
    		vin-supply = <&vsys_3v3>;
    		regulator-always-on;
    		regulator-boot-on;
    	};
    
    	leds {
    		compatible = "gpio-leds";
    
    		led-0 {
    			label = "am64-evm:red:heartbeat";
    			gpios = <&exp1 16 GPIO_ACTIVE_HIGH>;
    			linux,default-trigger = "heartbeat";
    			function = LED_FUNCTION_HEARTBEAT;
    			default-state = "off";
    		};
    	};
    
    	mdio_mux: mux-controller {
    		compatible = "gpio-mux";
    		#mux-control-cells = <0>;
    
    		mux-gpios = <&exp1 12 GPIO_ACTIVE_HIGH>;
    	};
    
    	mdio_mux_1: mdio-mux-1 {
    		compatible = "mdio-mux-multiplexer";
    		mux-controls = <&mdio_mux>;
    		mdio-parent-bus = <&cpsw3g_mdio>;
    		#address-cells = <1>;
    		#size-cells = <0>;
    
    		mdio@1 {
    			reg = <0x1>;
    			#address-cells = <1>;
    			#size-cells = <0>;
    
    			cpsw3g_phy3: ethernet-phy@3 {
    				reg = <3>;
    				tx-internal-delay-ps = <250>;
    				rx-internal-delay-ps = <2000>;
    			};
    		};
    	};
    
    	transceiver1: can-phy0 {
    		compatible = "ti,tcan1042";
    		#phy-cells = <0>;
    		max-bitrate = <5000000>;
    		standby-gpios = <&exp1 8 GPIO_ACTIVE_HIGH>;
    	};
    
    	transceiver2: can-phy1 {
    		compatible = "ti,tcan1042";
    		#phy-cells = <0>;
    		max-bitrate = <5000000>;
    		standby-gpios = <&exp1 9 GPIO_ACTIVE_HIGH>;
    	};
    
    	icssg1_eth: icssg1-eth {
    		status = "disabled";
    	};
    };
    
    /* Modify sram label present in k3-am64-main.dtsi */
    &oc_sram {
        main_r5fss0_core0_sram: r5f-sram@80000 {
            reg = <0x80000 0x40000>;
        };
        
        main_r5fss0_core1_sram: r5f-sram@c0000 {
            reg = <0xc0000 0x40000>;
        };
        
        main_r5fss1_core0_sram: r5f-sram@100000 {
            reg = <0x100000 0x40000>;
        };
        
        main_r5fss1_core1_sram: r5f-sram@140000 {
            reg = <0x140000 0x40000>;
        };
    };
    
    &main_r5fss0_core0 {
    	mboxes = <&mailbox0_cluster2 &mbox_main_r5fss0_core0>;
    	memory-region = <&main_r5fss0_core0_dma_memory_region>,
    			<&main_r5fss0_core0_memory_region>;
    	sram = <&main_r5fss0_core0_sram>;
    };
    
    &main_r5fss0_core1 {
    	mboxes = <&mailbox0_cluster2 &mbox_main_r5fss0_core1>;
    	memory-region = <&main_r5fss0_core1_dma_memory_region>,
    			<&main_r5fss0_core1_memory_region>;
    	sram = <&main_r5fss0_core1_sram>;
    };
    
    &main_r5fss1_core0 {
    	mboxes = <&mailbox0_cluster4 &mbox_main_r5fss1_core0>;
    	memory-region = <&main_r5fss1_core0_dma_memory_region>,
    			<&main_r5fss1_core0_memory_region>;
    	sram = <&main_r5fss1_core0_sram>;
    };
    
    &main_r5fss1_core1 {
    	mboxes = <&mailbox0_cluster4 &mbox_main_r5fss1_core1>;
    	memory-region = <&main_r5fss1_core1_dma_memory_region>,
    			<&main_r5fss1_core1_memory_region>;
    	sram = <&main_r5fss1_core1_sram>;
    };
    
    &mcu_m4fss {
    	mboxes = <&mailbox0_cluster6 &mbox_m4_0>;
    	memory-region = <&mcu_m4fss_dma_memory_region>,
    			<&mcu_m4fss_memory_region>;
    };
    
    &main_pmx0 {
    	main_mmc1_pins_default: main-mmc1-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0294, PIN_INPUT_PULLUP, 0) /* (J19) MMC1_CMD */
    			AM64X_IOPAD(0x028c, PIN_INPUT_PULLDOWN, 0) /* (L20) MMC1_CLK */
    			AM64X_IOPAD(0x0288, PIN_INPUT_PULLUP, 0) /* (K21) MMC1_DAT0 */
    			AM64X_IOPAD(0x0284, PIN_INPUT_PULLUP, 0) /* (L21) MMC1_DAT1 */
    			AM64X_IOPAD(0x0280, PIN_INPUT_PULLUP, 0) /* (K19) MMC1_DAT2 */
    			AM64X_IOPAD(0x027c, PIN_INPUT_PULLUP, 0) /* (K18) MMC1_DAT3 */
    			AM64X_IOPAD(0x0298, PIN_INPUT_PULLUP, 0) /* (D19) MMC1_SDCD */
    			AM64X_IOPAD(0x029c, PIN_INPUT, 0) /* (C20) MMC1_SDWP */
    			AM64X_IOPAD(0x0290, PIN_INPUT, 0) /* MMC1_CLKLB */
    		>;
    	};
    
    	main_uart0_pins_default: main-uart0-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0238, PIN_INPUT, 0) /* (B16) UART0_CTSn */
    			AM64X_IOPAD(0x023c, PIN_OUTPUT, 0) /* (A16) UART0_RTSn */
    			AM64X_IOPAD(0x0230, PIN_INPUT, 0) /* (D15) UART0_RXD */
    			AM64X_IOPAD(0x0234, PIN_OUTPUT, 0) /* (C16) UART0_TXD */
    		>;
    	};
    
    	main_spi0_pins_default: main-spi0-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0210, PIN_INPUT, 0) /* (D13) SPI0_CLK */
    			AM64X_IOPAD(0x0208, PIN_OUTPUT, 0) /* (D12) SPI0_CS0 */
    			AM64X_IOPAD(0x0214, PIN_OUTPUT, 0) /* (A13) SPI0_D0 */
    			AM64X_IOPAD(0x0218, PIN_INPUT, 0) /* (A14) SPI0_D1 */
    		>;
    	};
    
    	main_i2c1_pins_default: main-i2c1-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0268, PIN_INPUT_PULLUP, 0) /* (C18) I2C1_SCL */
    			AM64X_IOPAD(0x026c, PIN_INPUT_PULLUP, 0) /* (B19) I2C1_SDA */
    		>;
    	};
    
    	mdio1_pins_default: mdio1-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x01fc, PIN_OUTPUT, 4) /* (R2) PRG0_PRU1_GPO19.MDIO0_MDC */
    			AM64X_IOPAD(0x01f8, PIN_INPUT, 4) /* (P5) PRG0_PRU1_GPO18.MDIO0_MDIO */
    		>;
    	};
    
    	rgmii1_pins_default: rgmii1-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x01cc, PIN_INPUT, 4) /* (W5) PRG0_PRU1_GPO7.RGMII1_RD0 */
    			AM64X_IOPAD(0x01d4, PIN_INPUT, 4) /* (Y5) PRG0_PRU1_GPO9.RGMII1_RD1 */
    			AM64X_IOPAD(0x01d8, PIN_INPUT, 4) /* (V6) PRG0_PRU1_GPO10.RGMII1_RD2 */
    			AM64X_IOPAD(0x01f4, PIN_INPUT, 4) /* (V5) PRG0_PRU1_GPO17.RGMII1_RD3 */
    			AM64X_IOPAD(0x0188, PIN_INPUT, 4) /* (AA5) PRG0_PRU0_GPO10.RGMII1_RXC */
    			AM64X_IOPAD(0x0184, PIN_INPUT, 4) /* (W6) PRG0_PRU0_GPO9.RGMII1_RX_CTL */
    			AM64X_IOPAD(0x0124, PIN_OUTPUT, 4) /* (V15) PRG1_PRU1_GPO7.RGMII1_TD0 */
    			AM64X_IOPAD(0x012c, PIN_OUTPUT, 4) /* (V14) PRG1_PRU1_GPO9.RGMII1_TD1 */
    			AM64X_IOPAD(0x0130, PIN_OUTPUT, 4) /* (W14) PRG1_PRU1_GPO10.RGMII1_TD2 */
    			AM64X_IOPAD(0x014c, PIN_OUTPUT, 4) /* (AA14) PRG1_PRU1_GPO17.RGMII1_TD3 */
    			AM64X_IOPAD(0x00e0, PIN_OUTPUT, 4) /* (U14) PRG1_PRU0_GPO10.RGMII1_TXC */
    			AM64X_IOPAD(0x00dc, PIN_OUTPUT, 4) /* (U15) PRG1_PRU0_GPO9.RGMII1_TX_CTL */
    		>;
    	};
    
           rgmii2_pins_default: rgmii2-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0108, PIN_INPUT, 4) /* (W11) PRG1_PRU1_GPO0.RGMII2_RD0 */
    			AM64X_IOPAD(0x010c, PIN_INPUT, 4) /* (V11) PRG1_PRU1_GPO1.RGMII2_RD1 */
    			AM64X_IOPAD(0x0110, PIN_INPUT, 4) /* (AA12) PRG1_PRU1_GPO2.RGMII2_RD2 */
    			AM64X_IOPAD(0x0114, PIN_INPUT, 4) /* (Y12) PRG1_PRU1_GPO3.RGMII2_RD3 */
    			AM64X_IOPAD(0x0120, PIN_INPUT, 4) /* (U11) PRG1_PRU1_GPO6.RGMII2_RXC */
    			AM64X_IOPAD(0x0118, PIN_INPUT, 4) /* (W12) PRG1_PRU1_GPO4.RGMII2_RX_CTL */
    			AM64X_IOPAD(0x0134, PIN_OUTPUT, 4) /* (AA10) PRG1_PRU1_GPO11.RGMII2_TD0 */
    			AM64X_IOPAD(0x0138, PIN_OUTPUT, 4) /* (V10) PRG1_PRU1_GPO12.RGMII2_TD1 */
    			AM64X_IOPAD(0x013c, PIN_OUTPUT, 4) /* (U10) PRG1_PRU1_GPO13.RGMII2_TD2 */
    			AM64X_IOPAD(0x0140, PIN_OUTPUT, 4) /* (AA11) PRG1_PRU1_GPO14.RGMII2_TD3 */
    			AM64X_IOPAD(0x0148, PIN_OUTPUT, 4) /* (Y10) PRG1_PRU1_GPO16.RGMII2_TXC */
    			AM64X_IOPAD(0x0144, PIN_OUTPUT, 4) /* (Y11) PRG1_PRU1_GPO15.RGMII2_TX_CTL */
    		>;
    	};
    
    	main_usb0_pins_default: main-usb0-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x02a8, PIN_OUTPUT, 0) /* (E19) USB0_DRVVBUS */
    		>;
    	};
    
    	ospi0_pins_default: ospi0-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0000, PIN_OUTPUT, 0) /* (N20) OSPI0_CLK */
    			AM64X_IOPAD(0x002c, PIN_OUTPUT, 0) /* (L19) OSPI0_CSn0 */
    			AM64X_IOPAD(0x000c, PIN_INPUT, 0) /* (M19) OSPI0_D0 */
    			AM64X_IOPAD(0x0010, PIN_INPUT, 0) /* (M18) OSPI0_D1 */
    			AM64X_IOPAD(0x0014, PIN_INPUT, 0) /* (M20) OSPI0_D2 */
    			AM64X_IOPAD(0x0018, PIN_INPUT, 0) /* (M21) OSPI0_D3 */
    			AM64X_IOPAD(0x001c, PIN_INPUT, 0) /* (P21) OSPI0_D4 */
    			AM64X_IOPAD(0x0020, PIN_INPUT, 0) /* (P20) OSPI0_D5 */
    			AM64X_IOPAD(0x0024, PIN_INPUT, 0) /* (N18) OSPI0_D6 */
    			AM64X_IOPAD(0x0028, PIN_INPUT, 0) /* (M17) OSPI0_D7 */
    			AM64X_IOPAD(0x0008, PIN_INPUT, 0) /* (N19) OSPI0_DQS */
    		>;
    	};
    
    	main_mcan0_pins_default: main-mcan0-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0254, PIN_INPUT, 0) /* (B17) MCAN0_RX */
    			AM64X_IOPAD(0x0250, PIN_OUTPUT, 0) /* (A17) MCAN0_TX */
    		>;
    	};
    
    	main_mcan1_pins_default: main-mcan1-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x025c, PIN_INPUT, 0) /* (D17) MCAN1_RX */
    			AM64X_IOPAD(0x0258, PIN_OUTPUT, 0) /* (C17) MCAN1_TX */
    		>;
    	};
    
    	icssg1_rgmii1_pins_default: icssg1-rgmii1-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x00b8, PIN_INPUT, 2) /* (Y7) PRG1_PRU0_GPO0.PRG1_RGMII1_RD0 */
    			AM64X_IOPAD(0x00bc, PIN_INPUT, 2) /* (U8) PRG1_PRU0_GPO1.PRG1_RGMII1_RD1 */
    			AM64X_IOPAD(0x00c0, PIN_INPUT, 2) /* (W8) PRG1_PRU0_GPO2.PRG1_RGMII1_RD2 */
    			AM64X_IOPAD(0x00c4, PIN_INPUT, 2) /* (V8) PRG1_PRU0_GPO3.PRG1_RGMII1_RD3 */
    			AM64X_IOPAD(0x00d0, PIN_INPUT, 2) /* (AA7) PRG1_PRU0_GPO6.PRG1_RGMII1_RXC */
    			AM64X_IOPAD(0x00c8, PIN_INPUT, 2) /* (Y8) PRG1_PRU0_GPO4.PRG1_RGMII1_RX_CTL */
    			AM64X_IOPAD(0x00e4, PIN_INPUT, 2) /* (AA8) PRG1_PRU0_GPO11.PRG1_RGMII1_TD0 */
    			AM64X_IOPAD(0x00e8, PIN_INPUT, 2) /* (U9) PRG1_PRU0_GPO12.PRG1_RGMII1_TD1 */
    			AM64X_IOPAD(0x00ec, PIN_INPUT, 2) /* (W9) PRG1_PRU0_GPO13.PRG1_RGMII1_TD2 */
    			AM64X_IOPAD(0x00f0, PIN_INPUT, 2) /* (AA9) PRG1_PRU0_GPO14.PRG1_RGMII1_TD3 */
    			AM64X_IOPAD(0x00f8, PIN_INPUT, 2) /* (V9) PRG1_PRU0_GPO16.PRG1_RGMII1_TXC */
    			AM64X_IOPAD(0x00f4, PIN_INPUT, 2) /* (Y9) PRG1_PRU0_GPO15.PRG1_RGMII1_TX_CTL */
    		>;
    	};
    
    	icssg1_iep0_pins_default: icssg1-iep0-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0104, PIN_OUTPUT, 2) /* (W7) PRG1_PRU0_GPO19.PRG1_IEP0_EDC_SYNC_OUT0 */
    		>;
    	};
    
    	main_ecap0_pins_default: main-ecap0-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0270, PIN_INPUT, 0) /* (D18) ECAP0_IN_APWM_OUT */
    		>;
    	};
    };
    
    &main_uart0 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_uart0_pins_default>;
    };
    
    /* main_uart1 is reserved for firmware usage */
    &main_uart1 {
    	status = "reserved";
    };
    
    &main_uart2 {
    	status = "disabled";
    };
    
    &main_uart3 {
    	status = "disabled";
    };
    
    &main_uart4 {
    	status = "disabled";
    };
    
    &main_uart5 {
    	status = "disabled";
    };
    
    &main_uart6 {
    	status = "disabled";
    };
    
    &mcu_uart0 {
    	status = "disabled";
    };
    
    &mcu_uart1 {
    	status = "disabled";
    };
    
    &main_i2c1 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_i2c1_pins_default>;
    	clock-frequency = <400000>;
    
    	exp1: gpio@22 {
    		compatible = "ti,tca6424";
    		reg = <0x22>;
    		gpio-controller;
    		#gpio-cells = <2>;
    		gpio-line-names = "GPIO_eMMC_RSTn", "CAN_MUX_SEL",
    				  "GPIO_CPSW1_RST", "GPIO_RGMII1_RST",
    				  "GPIO_RGMII2_RST", "GPIO_PCIe_RST_OUT",
    				  "MMC1_SD_EN", "FSI_FET_SEL",
    				  "MCAN0_STB_3V3", "MCAN1_STB_3V3",
    				  "CPSW_FET_SEL", "CPSW_FET2_SEL",
    				  "PRG1_RGMII2_FET_SEL", "TEST_GPIO2",
    				  "GPIO_OLED_RESETn", "VPP_LDO_EN",
    				  "TEST_LED1", "TP92", "TP90", "TP88",
    				  "TP87", "TP86", "TP89", "TP91";
    	};
    
    	/* osd9616p0899-10 */
    	display@3c {
    		compatible = "solomon,ssd1306fb-i2c";
    		reg = <0x3c>;
    		reset-gpios = <&exp1 14 GPIO_ACTIVE_LOW>;
    		vbat-supply = <&vddb>;
    		solomon,height = <16>;
    		solomon,width = <96>;
    		solomon,com-seq;
    		solomon,com-invdir;
    		solomon,page-offset = <0>;
    		solomon,prechargep1 = <2>;
    		solomon,prechargep2 = <13>;
    	};
    };
    
    /* mcu_gpio0 is reserved for mcu firmware usage */
    &mcu_gpio0 {
    	status = "reserved";
    };
    
    &mcu_i2c0 {
    	status = "disabled";
    };
    
    &mcu_i2c1 {
    	status = "disabled";
    };
    
    &mcu_spi0 {
    	status = "disabled";
    };
    
    &mcu_spi1 {
    	status = "disabled";
    };
    
    &main_spi0 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_spi0_pins_default>;
    	ti,pindir-d0-out-d1-in = <1>;
    	eeprom@0 {
    		compatible = "microchip,93lc46b";
    		reg = <0>;
    		spi-max-frequency = <1000000>;
    		spi-cs-high;
    		data-size = <16>;
    	};
    };
    
    &sdhci0 {
    	/* emmc */
    	bus-width = <8>;
    	non-removable;
    	ti,driver-strength-ohm = <50>;
    	disable-wp;
    };
    
    &sdhci1 {
    	/* SD/MMC */
    	vmmc-supply = <&vdd_mmc1>;
    	pinctrl-names = "default";
    	bus-width = <4>;
    	pinctrl-0 = <&main_mmc1_pins_default>;
    	ti,driver-strength-ohm = <50>;
    	disable-wp;
    };
    
    &usbss0 {
    	ti,vbus-divider;
    	ti,usb2-only;
    };
    
    &usb0 {
    	dr_mode = "otg";
    	maximum-speed = "high-speed";
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_usb0_pins_default>;
    };
    
    &cpsw3g {
    	pinctrl-names = "default";
    	pinctrl-0 = <&mdio1_pins_default
    		     &rgmii1_pins_default
    		     &rgmii2_pins_default>;
    
    	cpts@3d000 {
    		ti,pps = <7 1>;
    	};
    };
    
    &cpsw_port1 {
    	phy-mode = "rgmii-rxid";
    	phy-handle = <&cpsw3g_phy0>;
    };
    
    &cpsw_port2 {
    	phy-mode = "rgmii-rxid";
    	phy-handle = <&cpsw3g_phy3>;
    };
    
    &cpsw3g_mdio {
    	cpsw3g_phy0: ethernet-phy@0 {
    		reg = <0>;
    		ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
    		ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
    	};
    };
    
    #define TS_OFFSET(pa, val)     (0x4+(pa)*4) (0x10000 | val)
    
    &timesync_router {
    	pinctrl-names = "default";
    	pinctrl-0 = <&mcu_cpts_pps>;
    
    	/* Example of the timesync routing */
    	mcu_cpts_pps: mcu-cpts-pps {
    		pinctrl-single,pins = <
    				/* pps [cpts genf1] in22 -> out37 [cpts hw8_push] */
    				TS_OFFSET(37, 22)
    				/* pps [cpts genf1] in22 -> out25 [SYNC1_OUT pin] */
    				TS_OFFSET(25, 22)
    				>;
    	};
    };
    
    &mailbox0_cluster2 {
    	mbox_main_r5fss0_core0: mbox-main-r5fss0-core0 {
    		ti,mbox-rx = <0 0 2>;
    		ti,mbox-tx = <1 0 2>;
    	};
    
    	mbox_main_r5fss0_core1: mbox-main-r5fss0-core1 {
    		ti,mbox-rx = <2 0 2>;
    		ti,mbox-tx = <3 0 2>;
    	};
    };
    
    &mailbox0_cluster3 {
    	status = "disabled";
    };
    
    &mailbox0_cluster4 {
    	mbox_main_r5fss1_core0: mbox-main-r5fss1-core0 {
    		ti,mbox-rx = <0 0 2>;
    		ti,mbox-tx = <1 0 2>;
    	};
    
    	mbox_main_r5fss1_core1: mbox-main-r5fss1-core1 {
    		ti,mbox-rx = <2 0 2>;
    		ti,mbox-tx = <3 0 2>;
    	};
    };
    
    &mailbox0_cluster5 {
    	status = "disabled";
    };
    
    &mailbox0_cluster6 {
    	mbox_m4_0: mbox-m4-0 {
    		ti,mbox-rx = <0 0 2>;
    		ti,mbox-tx = <1 0 2>;
    	};
    };
    
    &mailbox0_cluster7 {
    	status = "disabled";
    };
    
    &serdes_ln_ctrl {
    	idle-states = <AM64_SERDES0_LANE0_PCIE0>;
    };
    
    &serdes0 {
    	serdes0_pcie_link: phy@0 {
    		reg = <0>;
    		cdns,num-lanes = <1>;
    		#phy-cells = <0>;
    		cdns,phy-type = <PHY_TYPE_PCIE>;
    		resets = <&serdes_wiz0 1>;
    	};
    };
    
    &pcie0_rc {
    	reset-gpios = <&exp1 5 GPIO_ACTIVE_HIGH>;
    	phys = <&serdes0_pcie_link>;
    	phy-names = "pcie-phy";
    	num-lanes = <1>;
    };
    
    &pcie0_ep {
    	phys = <&serdes0_pcie_link>;
    	phy-names = "pcie-phy";
    	num-lanes = <1>;
    	status = "disabled";
    };
    
    &tscadc0 {
    	/* ADC is reserved for R5 usage */
    	status = "reserved";
    };
    
    &ospi0 {
    	pinctrl-names = "default";
    	
    	flash@0{
    		compatible = "jedec,spi-nor";
    		reg = <0x0>;
    		spi-tx-bus-width = <8>;
    		spi-rx-bus-width = <8>;
    		spi-max-frequency = <25000000>;
    		cdns,tshsl-ns = <60>;
    		cdns,tsd2d-ns = <60>;
    		cdns,tchsh-ns = <60>;
    		cdns,tslch-ns = <60>;
    		cdns,read-delay = <4>;
    		cdns,phy-mode;
    		#address-cells = <1>;
    		#size-cells = <1>;
    	};
    };
    
    &main_mcan0 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_mcan0_pins_default>;
    	phys = <&transceiver1>;
    };
    
    &main_mcan1 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_mcan1_pins_default>;
    	phys = <&transceiver2>;
    };
    
    &icssg0 {
    	status = "disabled";
    };
    
    &icssg1 {
    	status = "disabled";
    };
    
    &icssg0_mdio {
    	status = "disabled";
    };
    
    &icssg1_mdio {
    	status = "disabled";
    };
    
    &icssg1_iep0 {
    	status= " disabled";
    };
    
    &ecap0 {
    	/* PWM is available on Pin 1 of header J12 */
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_ecap0_pins_default>;
    };

    Also, with these device tree changes, the remote cores R5F* were initially offline. I loaded EtherCAT beckhoff example and it didn't go beyond System_Init().

    Below is the linker.cmd for EtherCAT beckhoff example.

    /**
     * These arguments were used when this file was generated. They will be automatically applied on subsequent loads
     * via the GUI or CLI. Run CLI with '--help' for additional information on how to override these arguments.
     * @cliArgs --device "AM64x_beta" --package "ALV" --part "Default" --context "r5fss0-0" --product "MCU_PLUS_SDK_AM64x@08.05.00"
     * @versions {"tool":"1.14.0+2667"}
     */
    
    /**
     * Import the modules used in this configuration.
     */
    const eeprom          = scripting.addModule("/board/eeprom/eeprom", {}, false);
    const eeprom1         = eeprom.addInstance();
    const flash           = scripting.addModule("/board/flash/flash", {}, false);
    const flash1          = flash.addInstance();
    const led             = scripting.addModule("/board/led/led", {}, false);
    const led1            = led.addInstance();
    const led2            = led.addInstance();
    const led3            = led.addInstance();
    const gpio            = scripting.addModule("/drivers/gpio/gpio", {}, false);
    const gpio1           = gpio.addInstance();
    const i2c             = scripting.addModule("/drivers/i2c/i2c", {}, false);
    const i2c1            = i2c.addInstance();
    const i2c2            = i2c.addInstance();
    const ipc             = scripting.addModule("/drivers/ipc/ipc");
    const pruicss         = scripting.addModule("/drivers/pruicss/pruicss", {}, false);
    const pruicss1        = pruicss.addInstance();
    const ethercat        = scripting.addModule("/industrial_comms/ethercat/ethercat", {}, false);
    const ethercat1       = ethercat.addInstance();
    const addr_translate  = scripting.addModule("/kernel/dpl/addr_translate", {}, false);
    const addr_translate1 = addr_translate.addInstance();
    const debug_log       = scripting.addModule("/kernel/dpl/debug_log");
    const mpu_armv7       = scripting.addModule("/kernel/dpl/mpu_armv7", {}, false);
    const mpu_armv71      = mpu_armv7.addInstance();
    const mpu_armv72      = mpu_armv7.addInstance();
    const mpu_armv73      = mpu_armv7.addInstance();
    const mpu_armv74      = mpu_armv7.addInstance();
    const mpu_armv75      = mpu_armv7.addInstance();
    const mpu_armv76      = mpu_armv7.addInstance();
    const mpu_armv77      = mpu_armv7.addInstance();
    
    /**
     * Write custom configuration values to the imported modules.
     */
    eeprom1.$name = "CONFIG_EEPROM0";
    
    flash1.$name                  = "CONFIG_FLASH0";
    flash1.peripheralDriver.$name = "CONFIG_OSPI0";
    
    led1.name  = "TPIC2810";
    led1.$name = "CONFIG_LED_DIGITAL_OUTPUT";
    
    led2.$name = "CONFIG_LED_RUN";
    
    led3.name    = "Ioexp";
    led3.ioIndex = 16;
    led3.$name   = "CONFIG_LED_ERROR";
    
    gpio1.$name                    = "CONFIG_GPIO0";
    led2.peripheralDriver          = gpio1;
    gpio1.pinDir                   = "OUTPUT";
    gpio1.useMcuDomainPeripherals  = true;
    gpio1.MCU_GPIO.$assign         = "MCU_GPIO0";
    gpio1.MCU_GPIO.gpioPin.$assign = "ball.A7";
    
    i2c1.$name               = "CONFIG_I2C0";
    eeprom1.peripheralDriver = i2c1;
    i2c1.I2C.$assign         = "I2C0";
    i2c1.I2C.SCL.$assign     = "ball.A18";
    i2c1.I2C.SDA.$assign     = "ball.B18";
    
    i2c2.$name            = "CONFIG_I2C1";
    led1.peripheralDriver = i2c2;
    led3.peripheralDriver = i2c2;
    i2c2.I2C.$assign      = "I2C1";
    i2c2.I2C.SCL.$assign  = "ball.C18";
    i2c2.I2C.SDA.$assign  = "ball.B19";
    
    ipc.enableLinuxIpc = true;
    
    ethercat1.$name              = "CONFIG_ETHERCAT0";
    ethercat1.instance           = "ICSSG1";
    ethercat1.ethphy[0].$name    = "CONFIG_ETHPHY0";
    ethercat1.ethphy[1].$name    = "CONFIG_ETHPHY1";
    ethercat1.ethphy[1].mdioPort = 3;
    
    pruicss1.iepSyncMode                     = scripting.forceWrite(true);
    ethercat1.icss                           = pruicss1;
    pruicss1.$name                           = "CONFIG_PRU_ICSS1";
    pruicss1.AdditionalICSSSettings[0].$name = "CONFIG_PRU_ICSS_IO0";
    
    addr_translate1.$name = "CONFIG_ADDR_TRANSLATE_REGION0";
    
    debug_log.enableCssLog  = false;
    debug_log.enableMemLog  = true;
    debug_log.enableUartLog = true;
    debug_log.uartLog.$name = "CONFIG_UART0";
    
    mpu_armv71.$name             = "CONFIG_MPU_REGION0";
    mpu_armv71.size              = 31;
    mpu_armv71.attributes        = "Device";
    mpu_armv71.accessPermissions = "Supervisor RD+WR, User RD";
    mpu_armv71.allowExecute      = false;
    
    mpu_armv72.$name             = "CONFIG_MPU_REGION1";
    mpu_armv72.size              = 15;
    mpu_armv72.accessPermissions = "Supervisor RD+WR, User RD";
    
    mpu_armv73.$name             = "CONFIG_MPU_REGION2";
    mpu_armv73.baseAddr          = 0x41010000;
    mpu_armv73.size              = 15;
    mpu_armv73.accessPermissions = "Supervisor RD+WR, User RD";
    
    mpu_armv74.$name             = "CONFIG_MPU_REGION3";
    mpu_armv74.accessPermissions = "Supervisor RD+WR, User RD";
    mpu_armv74.baseAddr          = 0x70000000;
    mpu_armv74.size              = 21;
    
    mpu_armv75.$name    = "CONFIG_MPU_REGION4";
    mpu_armv75.baseAddr = 0x80000000;
    mpu_armv75.size     = 31;
    
    mpu_armv76.$name = "CONFIG_MPU_REGION5";
    
    mpu_armv77.$name = "CONFIG_MPU_REGION6";
    
    /**
     * Pinmux solution for unlocked pins/peripherals. This ensures that minor changes to the automatic solver in a future
     * version of the tool will not impact the pinmux you originally saw.  These lines can be completely deleted in order to
     * re-solve from scratch.
     */
    flash1.peripheralDriver.OSPI.$suggestSolution              = "OSPI0";
    flash1.peripheralDriver.OSPI.CLK.$suggestSolution          = "ball.N20";
    flash1.peripheralDriver.OSPI.CSn0.$suggestSolution         = "ball.L19";
    flash1.peripheralDriver.OSPI.DQS.$suggestSolution          = "ball.N19";
    flash1.peripheralDriver.OSPI.D7.$suggestSolution           = "ball.M17";
    flash1.peripheralDriver.OSPI.D6.$suggestSolution           = "ball.N18";
    flash1.peripheralDriver.OSPI.D5.$suggestSolution           = "ball.P20";
    flash1.peripheralDriver.OSPI.D4.$suggestSolution           = "ball.P21";
    flash1.peripheralDriver.OSPI.D3.$suggestSolution           = "ball.M21";
    flash1.peripheralDriver.OSPI.D2.$suggestSolution           = "ball.M20";
    flash1.peripheralDriver.OSPI.D1.$suggestSolution           = "ball.M18";
    flash1.peripheralDriver.OSPI.D0.$suggestSolution           = "ball.M19";
    ethercat1.PRU_ICSSG1_MDIO.$suggestSolution                 = "PRU_ICSSG1_MDIO0";
    ethercat1.PRU_ICSSG1_MDIO.MDC.$suggestSolution             = "ball.Y6";
    ethercat1.PRU_ICSSG1_MDIO.MDIO.$suggestSolution            = "ball.AA6";
    ethercat1.PRU_ICSSG1_IEP.$suggestSolution                  = "PRU_ICSSG1_IEP0";
    ethercat1.PRU_ICSSG1_IEP.EDC_LATCH_IN0.$suggestSolution    = "ball.V7";
    ethercat1.PRU_ICSSG1_IEP.EDC_LATCH_IN1.$suggestSolution    = "ball.U13";
    ethercat1.PRU_ICSSG1_IEP.EDC_SYNC_OUT0.$suggestSolution    = "ball.W7";
    ethercat1.PRU_ICSSG1_IEP.EDC_SYNC_OUT1.$suggestSolution    = "ball.U7";
    ethercat1.PRU_ICSSG1_MII_G_RT.$suggestSolution             = "PRU_ICSSG1_MII_G_RT";
    ethercat1.PRU_ICSSG1_MII_G_RT.MII0_RXD0.$suggestSolution   = "ball.Y7";
    ethercat1.PRU_ICSSG1_MII_G_RT.MII0_RXD1.$suggestSolution   = "ball.U8";
    ethercat1.PRU_ICSSG1_MII_G_RT.MII0_RXD2.$suggestSolution   = "ball.W8";
    ethercat1.PRU_ICSSG1_MII_G_RT.MII0_RXD3.$suggestSolution   = "ball.V8";
    ethercat1.PRU_ICSSG1_MII_G_RT.MII0_RXDV.$suggestSolution   = "ball.Y8";
    ethercat1.PRU_ICSSG1_MII_G_RT.MII0_RXER.$suggestSolution   = "ball.V13";
    ethercat1.PRU_ICSSG1_MII_G_RT.MII0_RXLINK.$suggestSolution = "ball.W13";
    ethercat1.PRU_ICSSG1_MII_G_RT.MII0_TXD0.$suggestSolution   = "ball.AA8";
    ethercat1.PRU_ICSSG1_MII_G_RT.MII0_TXD1.$suggestSolution   = "ball.U9";
    ethercat1.PRU_ICSSG1_MII_G_RT.MII0_TXD2.$suggestSolution   = "ball.W9";
    ethercat1.PRU_ICSSG1_MII_G_RT.MII0_TXD3.$suggestSolution   = "ball.AA9";
    ethercat1.PRU_ICSSG1_MII_G_RT.MII0_TXEN.$suggestSolution   = "ball.Y9";
    ethercat1.PRU_ICSSG1_MII_G_RT.MII1_RXD0.$suggestSolution   = "ball.W11";
    ethercat1.PRU_ICSSG1_MII_G_RT.MII1_RXD1.$suggestSolution   = "ball.V11";
    ethercat1.PRU_ICSSG1_MII_G_RT.MII1_RXD2.$suggestSolution   = "ball.AA12";
    ethercat1.PRU_ICSSG1_MII_G_RT.MII1_RXD3.$suggestSolution   = "ball.Y12";
    ethercat1.PRU_ICSSG1_MII_G_RT.MII1_RXDV.$suggestSolution   = "ball.W12";
    ethercat1.PRU_ICSSG1_MII_G_RT.MII1_RXER.$suggestSolution   = "ball.AA13";
    ethercat1.PRU_ICSSG1_MII_G_RT.MII1_RXLINK.$suggestSolution = "ball.U12";
    ethercat1.PRU_ICSSG1_MII_G_RT.MII1_TXD0.$suggestSolution   = "ball.AA10";
    ethercat1.PRU_ICSSG1_MII_G_RT.MII1_TXD1.$suggestSolution   = "ball.V10";
    ethercat1.PRU_ICSSG1_MII_G_RT.MII1_TXD2.$suggestSolution   = "ball.U10";
    ethercat1.PRU_ICSSG1_MII_G_RT.MII1_TXD3.$suggestSolution   = "ball.AA11";
    ethercat1.PRU_ICSSG1_MII_G_RT.MII1_TXEN.$suggestSolution   = "ball.Y11";
    ethercat1.PRU_ICSSG1_MII_G_RT.MII_MR0_CLK.$suggestSolution = "ball.AA7";
    ethercat1.PRU_ICSSG1_MII_G_RT.MII_MR1_CLK.$suggestSolution = "ball.U11";
    ethercat1.PRU_ICSSG1_MII_G_RT.MII_MT0_CLK.$suggestSolution = "ball.V9";
    ethercat1.PRU_ICSSG1_MII_G_RT.MII_MT1_CLK.$suggestSolution = "ball.Y10";
    debug_log.uartLog.UART.$suggestSolution                    = "USART0";
    debug_log.uartLog.UART.RXD.$suggestSolution                = "ball.D15";
    debug_log.uartLog.UART.TXD.$suggestSolution                = "ball.C16";
    

    Below are boot logs-

    root@am64xx-evm:/boot#
    root@am64xx-evm:/boot#
    root@am64xx-evm:/boot#
    root@am64xx-evm:/boot# ▒
    U-Boot SPL 2021.01 (May 07 2023 - 03:05:44 +0000)
    Resetting on cold boot to workaround ErrataID:i2331
    resetting ...
    
    U-Boot SPL 2021.01 (May 07 2023 - 03:05:44 +0000)
    SYSFW ABI: 3.1 (firmware rev 0x0008 '8.6.4--v08.06.04 (Chill Capybar')
    SPL initial stack usage: 13424 bytes
    Trying to boot from MMC2
    Warning: Did not detect image signing certificate. Skipping authentication to prevent boot failure. This will fail on Security Enforcing(HS-SE) devices
    Warning: Did not detect image signing certificate. Skipping authentication to prevent boot failure. This will fail on Security Enforcing(HS-SE) devices
    Authentication passed
    Authentication passed
    Starting ATF on ARM64 core...
    
    NOTICE:  BL31: v2.8(release):v2.8-226-g2fcd408bb
    NOTICE:  BL31: Built : 03:03:30, May  7 2023
    I/TC:
    I/TC: OP-TEE version: 3.20.0-rc1 (gcc version 9.2.1 20191025 (GNU Toolchain for the A-profile Architecture 9.2-2019.12 (arm-9.10))) #1 Sun May  7 03:04:29 UTC 2023 aarch64
    I/TC: WARNING: This OP-TEE configuration might be insecure!
    I/TC: WARNING: Please check https://optee.readthedocs.io/en/latest/architecture/porting_guidelines.html
    I/TC: Primary CPU initializing
    I/TC: SYSFW ABI: 3.1 (firmware rev 0x0008 '8.6.4--v08.06.04 (Chill Capybar')
    I/TC: HUK Initialized
    I/TC: Activated SA2UL device
    I/TC: Enabled firewalls for SA2UL TRNG device
    I/TC: SA2UL TRNG initialized
    I/TC: SA2UL Drivers initialized
    I/TC: Primary CPU switching to normal world boot
    
    U-Boot SPL 2021.01 (May 07 2023 - 03:07:54 +0000)
    SYSFW ABI: 3.1 (firmware rev 0x0008 '8.6.4--v08.06.04 (Chill Capybar')
    Trying to boot from MMC2
    Authentication passed
    Authentication passed
    
    
    U-Boot 2021.01 (May 07 2023 - 03:07:54 +0000)
    
    SoC:   AM64X SR2.0 HS-FS
    Model: Texas Instruments AM642 EVM
    Board: AM64-EVM rev C
    DRAM:  2 GiB
    NAND:  0 MiB
    MMC:   mmc@fa10000: 0, mmc@fa00000: 1
    Loading Environment from FAT... *** Warning - bad CRC, using default environment
    
    In:    serial@2800000
    Out:   serial@2800000
    Err:   serial@2800000
    Unidentified board claims AM64-EVM in eeprom header
    Net:   eth0: ethernet@8000000port@1
    Hit any key to stop autoboot:  0
    switch to partitions #0, OK
    mmc1 is current device
    SD/MMC found on device 1
    Failed to load 'boot.scr'
    574 bytes read in 4 ms (139.6 KiB/s)
    Loaded env from uEnv.txt
    Importing environment from mmc1 ...
    19147264 bytes read in 814 ms (22.4 MiB/s)
    55215 bytes read in 13 ms (4.1 MiB/s)
    ## Flattened Device Tree blob at 88000000
       Booting using the fdt blob at 0x88000000
       Loading Device Tree to 000000008feef000, end 000000008fffffff ... OK
    
    Starting kernel ...
    
    [    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
    [    0.000000] Linux version 5.10.168-g991c5ce91e (oe-user@oe-host) (aarch64-oe-linux-gcc (GCC) 9.5.0, GNU ld (GNU Binutils) 2.34.0.20200910) #1 SMP PREEMPT Thu Jun 15 08:35:21 UTC 2023
    [    0.000000] Machine model: Texas Instruments AM642 EVM
    [    0.000000] earlycon: ns16550a0 at MMIO32 0x0000000002800000 (options '')
    [    0.000000] printk: bootconsole [ns16550a0] enabled
    [    0.000000] efi: UEFI not found.
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a0000000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a0000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a0100000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-memory@a0100000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a1000000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a1000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a1100000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-memory@a1100000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a2000000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a2000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a2100000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-memory@a2100000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a3000000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a3000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a3100000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-memory@a3100000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a4000000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node m4f-dma-memory@a4000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a4100000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node m4f-memory@a4100000, compatible id shared-dma-pool
    [    0.000000] Zone ranges:
    [    0.000000]   DMA      [mem 0x0000000080000000-0x00000000ffffffff]
    [    0.000000]   DMA32    empty
    [    0.000000]   Normal   empty
    [    0.000000] Movable zone start for each node
    [    0.000000] Early memory node ranges
    [    0.000000]   node   0: [mem 0x0000000080000000-0x000000009e7fffff]
    [    0.000000]   node   0: [mem 0x000000009e800000-0x00000000a57fffff]
    [    0.000000]   node   0: [mem 0x00000000a5800000-0x00000000ffffffff]
    [    0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x00000000ffffffff]
    [    0.000000] cma: Reserved 512 MiB at 0x00000000dd000000
    [    0.000000] psci: probing for conduit method from DT.
    [    0.000000] psci: PSCIv1.1 detected in firmware.
    [    0.000000] psci: Using standard PSCI v0.2 function IDs
    [    0.000000] psci: Trusted OS migration not required
    [    0.000000] psci: SMC Calling Convention v1.2
    [    0.000000] percpu: Embedded 22 pages/cpu s51288 r8192 d30632 u90112
    [    0.000000] Detected VIPT I-cache on CPU0
    [    0.000000] CPU features: detected: ARM erratum 845719
    [    0.000000] CPU features: detected: GIC system register CPU interface
    [    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 516096
    [    0.000000] Kernel command line: console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000 mtdparts=fc40000.spi.0:1m(ospi.tiboot3),2m(ospi.tispl),4m(ospi.u-boot),256k(ospi.env),256k(ospi.env.backup),57088k@8m(ospi.rootfs),256k(ospi.phypattern);omap2-nand.0:2m(NAND.tiboot3),2m(NAND.tispl),2m(NAND.tiboot3.backup),4m(NAND.u-boot),256k(NAND.u-boot-env),256k(NAND.u-boot-env.backup),-(NAND.file-system) root=PARTUUID=435198aa-02 rw rootfstype=ext4 rootwait
    [    0.000000] Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes, linear)
    [    0.000000] Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes, linear)
    [    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
    [    0.000000] Memory: 1398792K/2097152K available (11200K kernel code, 1162K rwdata, 4308K rodata, 1920K init, 431K bss, 174072K reserved, 524288K cma-reserved)
    [    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
    [    0.000000] rcu: Preemptible hierarchical RCU implementation.
    [    0.000000] rcu:     RCU event tracing is enabled.
    [    0.000000] rcu:     RCU restricting CPUs from NR_CPUS=256 to nr_cpu_ids=2.
    [    0.000000]  Trampoline variant of Tasks RCU enabled.
    [    0.000000]  Tracing variant of Tasks RCU enabled.
    [    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
    [    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2
    [    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
    [    0.000000] GICv3: GIC: Using split EOI/Deactivate mode
    [    0.000000] GICv3: 256 SPIs implemented
    [    0.000000] GICv3: 0 Extended SPIs implemented
    [    0.000000] GICv3: Distributor has no Range Selector support
    [    0.000000] GICv3: 16 PPIs implemented
    [    0.000000] GICv3: CPU0: found redistributor 0 region 0:0x0000000001840000
    [    0.000000] ITS [mem 0x01820000-0x0182ffff]
    [    0.000000] GIC: enabling workaround for ITS: Socionext Synquacer pre-ITS
    [    0.000000] ITS@0x0000000001820000: Devices Table too large, reduce ids 20->19
    [    0.000000] ITS@0x0000000001820000: allocated 524288 Devices @80800000 (flat, esz 8, psz 64K, shr 0)
    [    0.000000] ITS: using cache flushing for cmd queue
    [    0.000000] GICv3: using LPI property table @0x0000000080030000
    [    0.000000] GIC: using cache flushing for LPI property table
    [    0.000000] GICv3: CPU0: using allocated LPI pending table @0x0000000080040000
    [    0.000000] arch_timer: cp15 timer(s) running at 200.00MHz (phys).
    [    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x2e2049d3e8, max_idle_ns: 440795210634 ns
    [    0.000005] sched_clock: 56 bits at 200MHz, resolution 5ns, wraps every 4398046511102ns
    [    0.008586] Console: colour dummy device 80x25
    [    0.013182] Calibrating delay loop (skipped), value calculated using timer frequency.. 400.00 BogoMIPS (lpj=800000)
    [    0.023857] pid_max: default: 32768 minimum: 301
    [    0.028682] LSM: Security Framework initializing
    [    0.033470] Mount-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
    [    0.041046] Mountpoint-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
    [    0.051019] rcu: Hierarchical SRCU implementation.
    [    0.056294] Platform MSI: msi-controller@1820000 domain created
    [    0.062702] PCI/MSI: /bus@f4000/interrupt-controller@1800000/msi-controller@1820000 domain created
    [    0.072007] EFI services will not be available.
    [    0.076925] smp: Bringing up secondary CPUs ...
    I/TC: Secondary CPU 1 initializing
    I/TC: Secondary CPU 1 switching to normal world boot
    [    0.090546] Detected VIPT I-cache on CPU1
    [    0.090588] GICv3: CPU1: found redistributor 1 region 0:0x0000000001860000
    [    0.090604] GICv3: CPU1: using allocated LPI pending table @0x0000000080050000
    [    0.090670] CPU1: Booted secondary processor 0x0000000001 [0x410fd034]
    [    0.090801] smp: Brought up 1 node, 2 CPUs
    [    0.120184] SMP: Total of 2 processors activated.
    [    0.124995] CPU features: detected: 32-bit EL0 Support
    [    0.130269] CPU features: detected: CRC32 instructions
    [    0.143804] CPU: All CPU(s) started at EL2
    [    0.148012] alternatives: patching kernel code
    [    0.153803] devtmpfs: initialized
    [    0.165250] KASLR disabled due to lack of seed
    [    0.170054] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
    [    0.180030] futex hash table entries: 512 (order: 3, 32768 bytes, linear)
    [    0.204403] pinctrl core: initialized pinctrl subsystem
    [    0.210474] DMI not present or invalid.
    [    0.215191] NET: Registered protocol family 16
    [    0.221648] DMA: preallocated 256 KiB GFP_KERNEL pool for atomic allocations
    [    0.229029] DMA: preallocated 256 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations
    [    0.237138] DMA: preallocated 256 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
    [    0.245958] thermal_sys: Registered thermal governor 'step_wise'
    [    0.245968] thermal_sys: Registered thermal governor 'power_allocator'
    [    0.252576] cpuidle: using governor menu
    [    0.263533] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
    [    0.270544] ASID allocator initialised with 65536 entries
    [    0.304335] HugeTLB registered 1.00 GiB page size, pre-allocated 0 pages
    [    0.311218] HugeTLB registered 32.0 MiB page size, pre-allocated 0 pages
    [    0.318069] HugeTLB registered 2.00 MiB page size, pre-allocated 0 pages
    [    0.324918] HugeTLB registered 64.0 KiB page size, pre-allocated 0 pages
    [    0.333192] cryptd: max_cpu_qlen set to 1000
    [    0.341123] k3-chipinfo 43000014.chipid: Family:AM64X rev:SR2.0 JTAGID[0x1bb3802f] Detected
    [    0.350517] vsys_5v0: supplied by evm_12v0
    [    0.355220] vsys_3v3: supplied by evm_12v0
    [    0.360085] vddb_3v3_display: supplied by vsys_3v3
    [    0.366469] iommu: Default domain type: Translated
    [    0.371903] SCSI subsystem initialized
    [    0.376433] mc: Linux media interface: v0.10
    [    0.380838] videodev: Linux video capture interface: v2.00
    [    0.386538] pps_core: LinuxPPS API ver. 1 registered
    [    0.391613] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
    [    0.400961] PTP clock support registered
    [    0.405014] EDAC MC: Ver: 3.0.0
    [    0.409165] omap-mailbox 29020000.mailbox: omap mailbox rev 0x66fc9100
    [    0.416095] omap-mailbox 29040000.mailbox: omap mailbox rev 0x66fc9100
    [    0.422913] omap-mailbox 29060000.mailbox: omap mailbox rev 0x66fc9100
    [    0.430469] FPGA manager framework
    [    0.434084] Advanced Linux Sound Architecture Driver Initialized.
    [    0.441491] clocksource: Switched to clocksource arch_sys_counter
    [    0.448014] VFS: Disk quotas dquot_6.6.0
    [    0.452097] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
    [    0.465672] NET: Registered protocol family 2
    [    0.470421] IP idents hash table entries: 32768 (order: 6, 262144 bytes, linear)
    [    0.479408] tcp_listen_portaddr_hash hash table entries: 1024 (order: 2, 16384 bytes, linear)
    [    0.488215] TCP established hash table entries: 16384 (order: 5, 131072 bytes, linear)
    [    0.496449] TCP bind hash table entries: 16384 (order: 6, 262144 bytes, linear)
    [    0.504196] TCP: Hash tables configured (established 16384 bind 16384)
    [    0.511132] UDP hash table entries: 1024 (order: 3, 32768 bytes, linear)
    [    0.518036] UDP-Lite hash table entries: 1024 (order: 3, 32768 bytes, linear)
    [    0.525550] NET: Registered protocol family 1
    [    0.530676] RPC: Registered named UNIX socket transport module.
    [    0.536769] RPC: Registered udp transport module.
    [    0.541577] RPC: Registered tcp transport module.
    [    0.546383] RPC: Registered tcp NFSv4.1 backchannel transport module.
    [    0.552972] NET: Registered protocol family 44
    [    0.557538] PCI: CLS 0 bytes, default 64
    [    0.562379] hw perfevents: enabled with armv8_cortex_a53 PMU driver, 7 counters available
    [    0.575386] Initialise system trusted keyrings
    [    0.580279] workingset: timestamp_bits=46 max_order=19 bucket_order=0
    [    0.591358] squashfs: version 4.0 (2009/01/31) Phillip Lougher
    [    0.598245] NFS: Registering the id_resolver key type
    [    0.603484] Key type id_resolver registered
    [    0.607774] Key type id_legacy registered
    [    0.611966] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
    [    0.618817] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering...
    [    0.626654] 9p: Installing v9fs 9p2000 file system support
    [    0.675440] Key type asymmetric registered
    [    0.679651] Asymmetric key parser 'x509' registered
    [    0.684690] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 243)
    [    0.692260] io scheduler mq-deadline registered
    [    0.696895] io scheduler kyber registered
    [    0.703672] pinctrl-single 4084000.pinctrl: 33 pins, size 132
    [    0.710130] pinctrl-single f4000.pinctrl: 180 pins, size 720
    [    0.717102] pinctrl-single a40000.timesync-router: 512 pins, size 2048
    [    0.734314] Serial: 8250/16550 driver, 10 ports, IRQ sharing enabled
    [    0.757876] brd: module loaded
    [    0.769284] loop: module loaded
    [    0.773681] megasas: 07.714.04.00-rc1
    [    0.782398] tun: Universal TUN/TAP device driver, 1.6
    [    0.788417] igbvf: Intel(R) Gigabit Virtual Function Network Driver
    [    0.794853] igbvf: Copyright (c) 2009 - 2012 Intel Corporation.
    [    0.800966] sky2: driver version 1.30
    [    0.806197] VFIO - User Level meta-driver version: 0.3
    [    0.812768] i2c /dev entries driver
    [    0.818152] sdhci: Secure Digital Host Controller Interface driver
    [    0.824500] sdhci: Copyright(c) Pierre Ossman
    [    0.829811] sdhci-pltfm: SDHCI platform and OF driver helper
    [    0.837089] ledtrig-cpu: registered to indicate activity on CPUs
    [    0.843787] SMCCC: SOC_ID: ARCH_SOC_ID not implemented, skipping ....
    [    0.852192] optee: probing for conduit method.
    I/TC: Reserved shared memory is enabled
    I/TC: Dynamic shared memory is enabled
    I/TC: Normal World virtualization support is disabled
    I/TC: Asynchronous notifications are disabled
    [    0.856815] optee: revision 3.19 (3bc3809a)
    [    0.873458] optee: dynamic shared memory is enabled
    [    0.883202] optee: initialized driver
    [    0.889849] NET: Registered protocol family 17
    [    0.894585] 9pnet: Installing 9P2000 support
    [    0.899043] Key type dns_resolver registered
    [    0.903912] Loading compiled-in X.509 certificates
    [    0.927536] ti-sci 44043000.dmsc: lpm region is required for suspend but not provided.
    [    0.935770] ti-sci 44043000.dmsc: ABI: 3.1 (firmware rev 0x0008 '8.6.4--v08.06.04 (Chill Capybar')
    [    0.993047] omap-gpmc 3b000000.memory-controller: GPMC revision 6.0
    [    0.999539] gpmc_mem_init: disabling cs 0 mapped at 0x0-0x1000000
    [    1.008194] omap_i2c 20000000.i2c: bus 0 rev0.12 at 100 kHz
    [    1.015920] pca953x 1-0022: supply vcc not found, using dummy regulator
    [    1.022897] pca953x 1-0022: using AI
    [    1.078907] Console: switching to mono frame buffer device 12x2
    [    1.113796] ssd1307fb 1-003c: fb0: Solomon SSD1307 framebuffer device registered, using 192 bytes of video memory
    [    1.124508] omap_i2c 20010000.i2c: bus 1 rev0.12 at 400 kHz
    [    1.131574] omap_i2c 20020000.i2c: bus 2 rev0.12 at 100 kHz
    [    1.138648] omap_i2c 20030000.i2c: bus 3 rev0.12 at 100 kHz
    [    1.144888] ti-sci-intr bus@f4000:bus@4000000:interrupt-controller1: Interrupt Router 5 domain created
    [    1.154785] ti-sci-intr bus@f4000:interrupt-controller0: Interrupt Router 3 domain created
    [    1.163842] ti-sci-inta 48000000.interrupt-controller: Interrupt Aggregator domain 28 created
    [    1.184942] j721e-pcie f102000.pcie: host bridge /bus@f4000/pcie@f102000 ranges:
    [    1.192636] j721e-pcie f102000.pcie:       IO 0x0068001000..0x0068010fff -> 0x0068001000
    [    1.200926] j721e-pcie f102000.pcie:      MEM 0x0068011000..0x006fffffff -> 0x0068011000
    [    1.209216] j721e-pcie f102000.pcie:   IB MEM 0x0000000000..0x0fffffffff -> 0x0000000000
    [    2.221931] j721e-pcie f102000.pcie: PCI host bridge to bus 0000:00
    [    2.228378] pci_bus 0000:00: root bus resource [bus 00-ff]
    [    2.233990] pci_bus 0000:00: root bus resource [io  0x0000-0xffff] (bus address [0x68001000-0x68010fff])
    [    2.243685] pci_bus 0000:00: root bus resource [mem 0x68011000-0x6fffffff]
    [    2.250754] pci 0000:00:00.0: [104c:b010] type 01 class 0x060400
    [    2.256912] pci 0000:00:00.0: reg 0x10: [mem 0x00000000-0xfffffffff 64bit pref]
    [    2.264462] pci 0000:00:00.0: supports D1
    [    2.268563] pci 0000:00:00.0: PME# supported from D0 D1 D3hot
    [    2.277173] pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
    [    2.288176] pci_bus 0000:01: busn_res: [bus 01-ff] end is updated to 01
    [    2.288222] pci 0000:00:00.0: BAR 0: no space for [mem size 0x1000000000 64bit pref]
    [    2.288229] pci 0000:00:00.0: BAR 0: failed to assign [mem size 0x1000000000 64bit pref]
    [    2.288238] pci 0000:00:00.0: PCI bridge to [bus 01]
    [    2.288891] pcieport 0000:00:00.0: PME: Signaling with IRQ 44
    [    2.289862] ti-udma 485c0100.dma-controller: Number of rings: 68
    [    2.291310] ti-udma 485c0100.dma-controller: Channels: 24 (bchan: 12, tchan: 6, rchan: 6)
    [    2.340627] ti-udma 485c0000.dma-controller: Number of rings: 288
    [    2.355631] ti-udma 485c0000.dma-controller: Channels: 44 (tchan: 29, rchan: 15)
    [    2.366793] printk: console [ttyS2] disabled
    [    2.371261] 2800000.serial: ttyS2 at MMIO 0x2800000 (irq = 16, base_baud = 3000000) is a 8250
    [    2.380029] printk: console [ttyS2] enabled
    [    2.380029] printk: console [ttyS2] enabled
    [    2.388476] printk: bootconsole [ns16550a0] disabled
    [    2.388476] printk: bootconsole [ns16550a0] disabled
    [    2.402631] spi-nor spi0.0: unrecognized JEDEC id bytes: 00 00 00 00 00 00
    [    2.409570] spi-nor: probe of spi0.0 failed with error -2
    [    2.426649] davinci_mdio 8000f00.mdio: Configuring MDIO in manual mode
    [    2.473501] davinci_mdio 8000f00.mdio: davinci mdio revision 9.7, bus freq 1000000
    [    2.482530] davinci_mdio 8000f00.mdio: phy[0]: device 8000f00.mdio:00, driver TI DP83867
    [    2.490786] am65-cpsw-nuss 8000000.ethernet: initializing am65 cpsw nuss version 0x6BA00903, cpsw version 0x6BA80903 Ports: 3 quirks:00000006
    [    2.503672] am65-cpsw-nuss 8000000.ethernet: initialized cpsw ale version 1.4
    [    2.510803] am65-cpsw-nuss 8000000.ethernet: ALE Table size 512
    [    2.517517] pps pps0: new PPS source ptp0
    [    2.521957] am65-cpsw-nuss 8000000.ethernet: CPTS ver 0x4e8a010c, freq:500000000, add_val:1 pps:1
    [    2.532592] am65-cpsw-nuss 8000000.ethernet: set new flow-id-base 16
    [    2.543555] am65-cpts 39000000.cpts: CPTS ver 0x4e8a010c, freq:500000000, add_val:1 pps:0
    [    2.552718] k3-j72xx-soc-thermal b00000.temperature-sensor: invalid resource
    [    2.559837] k3-j72xx-soc-thermal: probe of b00000.temperature-sensor failed with error -22
    [    2.571762] mmc1: CQHCI version 5.10
    [    2.571909] gpio-mux mux-controller: 2-way mux-controller registered
    [    2.590653] vdd_mmc1: supplied by vsys_3v3
    [    2.602627] debugfs: Directory 'pd:114' with parent 'pm_genpd' already present!
    [    2.602633] mmc0: CQHCI version 5.10
    [    2.610126] mmc1: SDHCI controller on fa10000.mmc [fa10000.mmc] using ADMA 64-bit
    [    2.630753] ALSA device list:
    [    2.633749]   No soundcards found.
    [    2.650073] mmc0: SDHCI controller on fa00000.mmc [fa00000.mmc] using ADMA 64-bit
    [    2.658609] Waiting for root device PARTUUID=435198aa-02...
    [    2.706363] mmc0: new ultra high speed SDR25 SDHC card at address b368
    [    2.715271] mmcblk0: mmc0:b368 NCard 14.6 GiB
    [    2.720205] mmc1: Command Queue Engine enabled
    [    2.724678] mmc1: new HS200 MMC card at address 0001
    [    2.731632]  mmcblk0: p1 p2
    [    2.734571] mmcblk1: mmc1:0001 S0J56X 14.8 GiB
    [    2.739508] mmcblk1boot0: mmc1:0001 S0J56X partition 1 31.5 MiB
    [    2.746557] mmcblk1boot1: mmc1:0001 S0J56X partition 2 31.5 MiB
    [    2.752738] mmcblk1rpmb: mmc1:0001 S0J56X partition 3 4.00 MiB, chardev (237:0)
    [    2.795574] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
    [    2.803776] VFS: Mounted root (ext4 filesystem) on device 179:2.
    [    2.817547] devtmpfs: mounted
    [    2.821949] Freeing unused kernel memory: 1920K
    [    2.826609] Run /sbin/init as init process
    [    3.214355] systemd[1]: System time before build time, advancing clock.
    [    3.318573] NET: Registered protocol family 10
    [    3.324446] Segment Routing with IPv6
    [    3.382042] systemd[1]: systemd 244.5+ running in system mode. (+PAM -AUDIT -SELINUX +IMA -APPARMOR -SMACK +SYSVINIT +UTMP -LIBCRYPTSETUP -GCRYPT -GNUTLS +ACL +XZ -LZ4 -SECCOMP +BLKID -ELFUTILS +KMOD -IDN2 -IDN -PCRE2 default-hierarchy=hybrid)
    [    3.404208] systemd[1]: Detected architecture arm64.
    
    Welcome to Arago 2021.09!
    
    [    3.455827] systemd[1]: Set hostname to <am64xx-evm>.
    [    3.480285] random: systemd: uninitialized urandom read (16 bytes read)
    [    3.487065] systemd[1]: Initializing machine ID from random generator.
    [    4.195040] random: systemd: uninitialized urandom read (16 bytes read)
    [    4.205703] systemd[1]: Created slice system-getty.slice.
    [  OK  ] Created slice system-getty.slice.
    [    4.225758] random: systemd: uninitialized urandom read (16 bytes read)
    [    4.234220] systemd[1]: Created slice system-serial\x2dgetty.slice.
    [  OK  ] Created slice system-serial\x2dgetty.slice.
    [    4.259380] systemd[1]: Created slice system-syslog\x2dng.slice.
    [  OK  ] Created slice system-syslog\x2dng.slice.
    [    4.283424] systemd[1]: Created slice User and Session Slice.
    [  OK  ] Created slice User and Session Slice.
    [    4.306177] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
    [  OK  ] Started Dispatch Password …ts to Console Directory Watch.
    [    4.330111] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
    [  OK  ] Started Forward Password R…uests to Wall Directory Watch.
    [    4.354106] systemd[1]: Reached target Paths.
    [  OK  ] Reached target Paths.
    [    4.369832] systemd[1]: Reached target Remote File Systems.
    [  OK  ] Reached target Remote File Systems.
    [    4.389809] systemd[1]: Reached target Slices.
    [  OK  ] Reached target Slices.
    [    4.405819] systemd[1]: Reached target Swap.
    [  OK  ] Reached target Swap.
    [    4.452327] systemd[1]: Listening on RPCbind Server Activation Socket.
    [  OK  ] Listening on RPCbind Server Activation Socket.
    [    4.473954] systemd[1]: Reached target RPC Port Mapper.
    [  OK  ] Reached target RPC Port Mapper.
    [    4.493767] random: systemd: uninitialized urandom read (16 bytes read)
    [    4.507531] systemd[1]: Listening on Process Core Dump Socket.
    [  OK  ] Listening on Process Core Dump Socket.
    [    4.529743] random: systemd: uninitialized urandom read (16 bytes read)
    [    4.530221] systemd[1]: Listening on initctl Compatibility Named Pipe.
    [  OK  ] Listening on initctl Compatibility Named Pipe.
    [    4.566311] systemd[1]: Condition check resulted in Journal Audit Socket being skipped.
    [    4.574571] random: systemd: uninitialized urandom read (16 bytes read)
    [    4.582002] systemd[1]: Listening on Journal Socket (/dev/log).
    [  OK  ] Listening on Journal Socket (/dev/log).
    [    4.606554] systemd[1]: Listening on Journal Socket.
    [  OK  ] Listening on Journal Socket.
    [    4.622749] systemd[1]: Listening on Network Service Netlink Socket.
    [  OK  ] Listening on Network Service Netlink Socket.
    [    4.646588] systemd[1]: Listening on udev Control Socket.
    [  OK  ] Listening on udev Control Socket.
    [    4.670286] systemd[1]: Listening on udev Kernel Socket.
    [  OK  ] Listening on udev Kernel Socket.
    [    4.699247] systemd[1]: Mounting Huge Pages File System...
             Mounting Huge Pages File System...
    [    4.719200] systemd[1]: Mounting POSIX Message Queue File System...
             Mounting POSIX Message Queue File System...
    [    4.747119] systemd[1]: Mounting Kernel Debug File System...
             Mounting Kernel Debug File System...
    [    4.776179] systemd[1]: Mounting Temporary Directory (/tmp)...
             Mounting Temporary Directory (/tmp)...
    [    4.799912] systemd[1]: Starting Create list of static device nodes for the current kernel...
             Starting Create list of st…odes for the current kernel...
    [    4.843964] systemd[1]: Starting Start psplash boot splash screen...
             Starting Start psplash boot splash screen...
    [    4.872374] systemd[1]: Starting RPC Bind...
             Starting RPC Bind...
    [    4.914014] systemd[1]: Condition check resulted in File System Check on Root Device being skipped.
    [    4.933670] systemd[1]: Starting Journal Service...
             Starting Journal Service...
    [    4.965731] systemd[1]: Starting Load Kernel Modules...
             Starting Load Kernel Modules...
    [    4.991415] systemd[1]: Starting Remount Root and Kernel File Systems...
             Starting Remount Root and Kernel File Systems...
    [    5.023154] cryptodev: loading out-of-tree module taints kernel.
    [    5.038710] systemd[1]: Starting udev Coldplug all Devices...
             Starting udev Coldplug all Devices...[    5.051627] cryptodev: driver 1.10 loaded.
    
    [    5.069217] EXT4-fs (mmcblk0p2): re-mounted. Opts: (null)
    [    5.086548] systemd[1]: Started Start psplash boot splash screen.
    [  OK  ] Started Start psplash boot splash screen.
    [    5.110479] systemd[1]: Started RPC Bind.
    [  OK  ] Started RPC Bind.
    [    5.130534] systemd[1]: Started Journal Service.
    [  OK  ] Started Journal Service.
    [  OK  ] Mounted Huge Pages File System.
    [  OK  ] Mounted POSIX Message Queue File System.
    [  OK  ] Mounted Kernel Debug File System.
    [  OK  ] Mounted Temporary Directory (/tmp).
    [  OK  ] Started Create list of sta… nodes for the current kernel.
    [  OK  ] Started Load Kernel Modules.
    [  OK  ] Started Remount Root and Kernel File Systems.
             Mounting Kernel Configuration File System...
    [  OK  ] Started Start psplash-syst…progress communication helper.
             Starting Flush Journal to Persistent Storage...
    [    5.377251] systemd-journald[166]: Received client request to flush runtime journal.
             Starting Apply Kernel Variables...
             Starting Create System Users...
    [  OK  ] Mounted Kernel Configuration File System.
    [  OK  ] Started Flush Journal to Persistent Storage.
    [  OK  ] Started Apply Kernel Variables.
    [  OK  ] Started Create System Users.
    [    5.586662] random: systemd: uninitialized urandom read (16 bytes read)
    [    5.607985] random: systemd: uninitialized urandom read (16 bytes read)
             Starting Create Static Device Nodes in /dev    5.621723] random: systemd-journal: uninitialized urandom read (16 bytes read)
    m...
    [  OK  ] Started udev Coldplug all Devices.
             Starting udev Wait for Complete Device Initialization...
    [  OK  ] Started Create Static Device Nodes in /dev.
    [  OK  ] Reached target Local File Systems (Pre).
             Mounting /media/ram...
             Mounting /var/volatile...
             Starting udev Kernel Device Manager...
    [  OK  ] Mounted /media/ram.
    [  OK  ] Mounted /var/volatile.
             Starting Load/Save Random Seed...
    [  OK  ] Started udev Kernel Device Manager.
    [    6.572915] random: crng init done
    [    6.577436] random: 60 urandom warning(s) missed due to ratelimiting
    [  OK  ] Started Load/Save Random Seed.
    [    6.646839] CAN device driver interface
    [    6.655406] 93xx46 spi1.0: 16-bit eeprom
    [  OK  ] Created slice system-systemd\x2dbacklight.slice.
             Starting Load/Save Screen …ess of backlight:ssd1307fb0...
    [  OK  ] Started Load/Save Screen B…tness of backlight:ssd1307fb0.
    [    6.945126] k3-m4-rproc 5000000.m4fss: assigned reserved memory node m4f-dma-memory@a4000000
    [    6.983097] platform 78000000.r5f: configured R5F for remoteproc mode
    [    7.006300] k3-m4-rproc 5000000.m4fss: configured M4 for remoteproc mode
    [    7.026151] k3-m4-rproc 5000000.m4fss: local reset is deasserted for device
    [    7.026207] platform 78000000.r5f: assigned reserved memory node r5f-dma-memory@a0000000
    [    7.052699] remoteproc remoteproc0: 5000000.m4fss is available
    [    7.059680] remoteproc remoteproc1: 78000000.r5f is available
    [    7.068840] remoteproc remoteproc0: Direct firmware load for am64-mcu-m4f0_0-fw failed with error -2
    [    7.082985] remoteproc remoteproc0: powering up 5000000.m4fss
    [    7.091422] remoteproc remoteproc0: Direct firmware load for am64-mcu-m4f0_0-fw failed with error -2
    [    7.102476] remoteproc remoteproc0: request_firmware failed: -2
    [    7.111043] remoteproc remoteproc1: Direct firmware load for am64-main-r5f0_0-fw failed with error -2
    [    7.125190] remoteproc remoteproc1: powering up 78000000.r5f
    [    7.131354] remoteproc remoteproc1: Direct firmware load for am64-main-r5f0_0-fw failed with error -2
    [    7.140927] remoteproc remoteproc1: request_firmware failed: -2
    [    7.153367] platform 78200000.r5f: configured R5F for remoteproc mode
    [    7.180264] platform 78200000.r5f: assigned reserved memory node r5f-dma-memory@a1000000
    [    7.196243] m_can_platform 20701000.can: m_can device registered (irq=36, version=32)
    [    7.197178] remoteproc remoteproc2: 78200000.r5f is available
    [    7.210874] remoteproc remoteproc2: Direct firmware load for am64-main-r5f0_1-fw failed with error -2
    [    7.214524] m_can_platform 20711000.can: m_can device registered (irq=38, version=32)
    [    7.220729] remoteproc remoteproc2: powering up 78200000.r5f
    [    7.241656] remoteproc remoteproc2: Direct firmware load for am64-main-r5f0_1-fw failed with error -2
    [    7.253587] remoteproc remoteproc2: request_firmware failed: -2
    [    7.317109] platform 78400000.r5f: configured R5F for remoteproc mode
    [    7.404891] platform 78400000.r5f: assigned reserved memory node r5f-dma-memory@a2000000
    [    7.471110] remoteproc remoteproc3: 78400000.r5f is available
    [    7.479206] remoteproc remoteproc3: Direct firmware load for am64-main-r5f1_0-fw failed with error -2
    [    7.489851] remoteproc remoteproc3: powering up 78400000.r5f
    [    7.501911] remoteproc remoteproc3: Direct firmware load for am64-main-r5f1_0-fw failed with error -2
    [    7.512569] remoteproc remoteproc3: request_firmware failed: -2
    [    7.518729] platform 78600000.r5f: configured R5F for remoteproc mode
    [    7.525729] platform 78600000.r5f: assigned reserved memory node r5f-dma-memory@a3000000
    [    7.567042] remoteproc remoteproc4: 78600000.r5f is available
    [    7.573205] remoteproc remoteproc4: Direct firmware load for am64-main-r5f1_1-fw failed with error -2
    [    7.582659] remoteproc remoteproc4: powering up 78600000.r5f
    [    7.591951] remoteproc remoteproc4: Direct firmware load for am64-main-r5f1_1-fw failed with error -2
    [    7.601461] remoteproc remoteproc4: request_firmware failed: -2
    [    9.172888] usbcore: registered new interface driver usbfs
    [    9.188915] usbcore: registered new interface driver hub
    [    9.199376] usbcore: registered new device driver usb
    [  OK  ] Found device /dev/disk/by-uuid/2FC2-ED40.
    [  OK  ] Started udev Wait for Complete Device Initialization.
             Mounting /boot...
    [  OK  ] Started Hardware RNG Entropy Gatherer Daemon.
    [  OK  ] Mounted /boot.
    [  OK  ] Reached target Local File Systems.
             Starting Rebuild Dynamic Linker Cache...
             Starting Create Volatile Files and Directories...
    [  OK  ] Started Create Volatile Files and Directories.
             Starting Rebuild Journal Catalog...
    [FAILED] Failed to start Network Time Synchronization.
    See 'systemctl status systemd-timesyncd.service' for details.
    [  OK  ] Reached target System Time Set.
    [  OK  ] Reached target System Time Synchronized.
             Starting Update UTMP about System Boot/Shutdown...
    [  OK  ] Stopped Network Time Synchronization.
    [FAILED] Failed to start Network Time Synchronization.
    See 'systemctl status systemd-timesyncd.service' for details.
    [  OK  ] Started Rebuild Journal Catalog.
    [  OK  ] Stopped Network Time Synchronization.
    [FAILED] Failed to start Network Time Synchronization.
    See 'systemctl status systemd-timesyncd.service' for details.
    [  OK  ] Stopped Network Time Synchronization.
    [FAILED] Failed to start Network Time Synchronization.
    See 'systemctl status systemd-timesyncd.service' for details.
    [  OK  ] Started Update UTMP about System Boot/Shutdown.
    [  OK  ] Stopped Network Time Synchronization.
    [FAILED] Failed to start Network Time Synchronization.
    See 'systemctl status systemd-timesyncd.service' for details.
    [  OK  ] Stopped Network Time Synchronization.
    [FAILED] Failed to start Network Time Synchronization.
    See 'systemctl status systemd-timesyncd.service' for details.
    [  OK  ] Started Rebuild Dynamic Linker Cache.
             Starting Run pending postinsts...
             Starting Update is Completed...
    [  OK  ] Started Update is Completed.
    [  OK  ] Started Run pending postinsts.
    [  OK  ] Reached target System Initialization.
    [  OK  ] Started Daily Cleanup of Temporary Directories.
    [  OK  ] Reached target Timers.
    [  OK  ] Listening on Avahi mDNS/DNS-SD Stack Activation Socket.
    [  OK  ] Listening on D-Bus System Message Bus Socket.
    [  OK  ] Listening on dropbear.socket.
    [  OK  ] Reached target Sockets.
    [  OK  ] Reached target Basic System.
    [  OK  ] Started D-Bus System Message Bus.
             Starting Ethernet Bridge Filtering Tables...
             Starting Print notice about GPLv3 packages...
             Starting IPv6 Packet Filtering Framework...
             Starting IPv4 Packet Filtering Framework...
             Starting System Logger Daemon "default" instance...
    [FAILED] Failed to start Login Service.
    See 'systemctl status systemd-logind.service' for details.
    [  OK  ] Started TEE Supplicant.
             Starting telnetd.service...
    [  OK  ] Started Ethernet Bridge Filtering Tables.
    [  OK  ] Started IPv6 Packet Filtering Framework.
    [  OK  ] Started IPv4 Packet Filtering Framework.
    [  OK  ] Started telnetd.service.
    [  OK  ] Reached target Network (Pre).
             Starting syslog.service...
    [  OK  ] Stopped Login Service.
    [FAILED] Failed to start Login Service.
    See 'systemctl status systemd-logind.service' for details.
             Starting Network Service...
    [  OK  ] Stopped Login Service.
    [FAILED] Failed to start Login Service.
    See 'systemctl status systemd-logind.service' for details.
    [  OK  ] Stopped Login Service.
    [FAILED] Failed to start Login Service.
    See 'systemctl status systemd-logind.service' for details.
    [  OK  ] Stopped Login Service.
    [FAILED] Failed to start Login Service.
    See 'systemctl status systemd-logind.service' for details.
    [  OK  ] Stopped Login Service.
    [FAILED] Failed to start Login Service.
    See 'systemctl status systemd-logind.service' for details.
    [  OK  ] Started System Logger Daemon "default" instance.
    [  OK  ] Started syslog.service.
    [  OK  ] Started Network Service.
             Starting Wait for Network to be Configured...
    [FAILED] Failed to start Network Name Resolution.
    See 'systemctl status systemd-resolved.service' for details.
    [  OK  ] Reached target Network.
    [  OK  ] Reached target Host and Network Name Lookups.
    [   13.503525] am65-cpsw-nuss 8000000.ethernet eth1: PHY [0.1:03] driver [TI DP83869] (irq=POLL)
             Starting Avahi mDNS/DNS-SD Stack...
    [   13.553650] am65-cpsw-nuss 8000000.ethernet eth1: configuring for phy/rgmii-rxid link mode
    [  OK  ] Started NFS status monitor for NFSv2/3 locking..
             Starting Permit User Sessions...
    [  OK  ] Started Vsftpd ftp daemon.
    [   13.743157] am65-cpsw-nuss 8000000.ethernet eth0: PHY [8000f00.mdio:00] driver [TI DP83867] (irq=POLL)
    [  OK  ] Started Permit User Sessions.
    [  OK  ] Started Avahi mDNS/DNS-SD Stack.
    [   13.804350] am65-cpsw-nuss 8000000.ethernet eth0: configuring for phy/rgmii-rxid link mode
    [  OK  ] Started Getty on tty1.
    [  OK  ] Started Serial Getty on ttyS1.
    [  OK  ] Started Serial Getty on ttyS2.
    [  OK  ] Reached target Login Prompts.
             Starting Synchronize System and HW clocks...
    [  OK  ] Stopped Network Name Resolution.
    [FAILED] Failed to start Network Name Resolution.
    See 'systemctl status systemd-resolved.service' for details.
    [FAILED] Failed to start Synchronize System and HW clocks.
    See 'systemctl status sync-clocks.service' for details.
    [  OK  ] Stopped Network Name Resolution.
    [FAILED] Failed to start Network Name Resolution.
    See 'systemctl status systemd-resolved.service' for details.
    [  OK  ] Stopped Network Name Resolution.
    [FAILED] Failed to start Network Name Resolution.
    See 'systemctl status systemd-resolved.service' for details.
    [  OK  ] Stopped Network Name Resolution.
    [FAILED] Failed to start Network Name Resolution.
    See 'systemctl status systemd-resolved.service' for details.
    [  OK  ] Stopped Network Name Resolution.
    [FAILED] Failed to start Network Name Resolution.
    See 'systemctl status systemd-resolved.service' for details.
    ***************************************************************
    ***************************************************************
    NOTICE: This file system contains the following GPLv3 packages:
            bash-dev
            bash
            cifs-utils
            dosfstools
            elfutils
            gawk
            gdb
            less
            libasm1
            libdw1
            libelf1
            libgdbm-compat4
            libgdbm-dev
            libgdbm6
            libreadline-dev
            libreadline8
            m4-dev
            m4
            parted
    
    If you do not wish to distribute GPLv3 components please remove
    the above packages prior to distribution.  This can be done using
    the opkg remove command.  i.e.:
        opkg remove <package>
    Where <package> is the name printed in the list above
    
    NOTE: If the package is a dependency of another package you
          will be notified of the dependent packages.  You should
          use the --force-removal-of-dependent-packages option to
          also remove the dependent packages as well
    ***************************************************************
    ***************************************************************
    [  OK  ] Started Print notice about GPLv3 packages.
    [   17.726494] am65-cpsw-nuss 8000000.ethernet eth1: Link is Up - 1Gbps/Full - flow control rx/tx
    [   17.735216] IPv6: ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready
    
     _____                    _____           _         _
    |  _  |___ ___ ___ ___   |  _  |___ ___  |_|___ ___| |_
    |     |  _| .'| . | . |  |   __|  _| . | | | -_|  _|  _|
    |__|__|_| |__,|_  |___|  |__|  |_| |___|_| |___|___|_|
                  |___|                    |___|
    
    Arago Project am64xx-evm ttyS2
    
    Arago 2021.09 am64xx-evm ttyS2
    
    am64xx-evm login: root
    root@am64xx-evm:~#
    root@am64xx-evm:~#
    root@am64xx-evm:~# ls -l /lib/firmware/
    drwxr-xr-x    2 78122629 78120051      4096 Jun 14  2023 ti-pruss
    root@am64xx-evm:~#
    

    Below are logs when I loaded EtherCAT example on R5F0 core-

    [4:23 PM] Ankita Gupta
    
    atet@am64xx-evm:/lib/firmware# echo start > /sys/class/remoteproc/remoteproc1/st
    
    [  650.398161] remoteproc remoteproc1: powering up 78000000.r5f
    
    [  650.405484] remoteproc remoteproc1: Booting fw image am64-main-r5f0_0-fw, size 962740
    
    [  650.418142]  remoteproc1#vdev0buffer: assigned reserved memory node r5f-dma-memory@a0000000
    
    [  650.427111] virtio_rpmsg_bus virtio0: rpmsg host is online
    
    [  650.435583]  remoteproc1#vdev0buffer: registered virtio0 (type 7)
    
    [  650.442534] remoteproc remoteproc1: remote processor 78000000.r5f is now up
    
    root@am64xx-evm:/lib/firmware#
    
    root@am64xx-evm:/lib/firmware#
    
    root@am64xx-evm:/lib/firmware#
    
    root@am64xx-evm:/lib/firmware#
    
    e0ot@am64xx-evm:/lib/firmware# cat /sys/kernel/debug/remoteproc/remoteproc1/trac
    
    [unknown]     0.000000s : Inside main(), calling System_init()!
    
    root@am64xx-evm:/lib/firmware# cat /sys/kernel/debug/remoteproc/remoteproc1/state
    
    root@am64xx-evm:/lib/firmware#
    
    root@am64xx-evm:/lib/firmware#
    
    root@am64xx-evm:/lib/firmware#
    
    e0ot@am64xx-evm:/lib/firmware# cat /sys/kernel/debug/remoteproc/remoteproc1/trace
    
    [unknown]     0.000000s : Inside main(), calling System_init()!
    
    root@am64xx-evm:/lib/firmware#
    
    root@am64xx-evm:/lib/firmware#
    
    root@am64xx-evm:/lib/firmware#
    
    root@am64xx-evm:/lib/firmware#
    

    Now, the k3 resource partition tool method had "sciclient_defaultBoardcfg_rm_mcusdk.c" file generated, but that wasn't used. I understand in the example earlier, compiled "sbl_emmc_linux_am64x-evm_r5fss0-0_nortos_ti-arm-clang" was being loaded on R5F0 core. Also, in order for EtherCAT to work, does A53 core need to be loaded with IPC example? How can we load a firmware on A53 core through this method?

    Thanks,

    Ankita

  • Hello Ankita,

    After skimming through the Linux devicetree, it looks fine from the Linux side.

    From a Linux SD card boot standpoint, it should not matter whether there is an Ethernet cable plugged in.

    From the Linux boot logs, error code 2 probably indicates that the remoteproc driver is looking for a firmware (or a soft link to a firmware) in filesystem folder /lib/firmware named "am64-main-r5f0_0-fw", etc. So if you want the firmware to get loaded during Linux boot, you can add a soft link pointing to the firmware you want to load by using the "ln" command documented here: https://dev.ti.com/tirex/explore/node?a=7qm9DIS__LATEST&node=A__ANKEb6LZY6VAX.9xvGwQ-g__linux_academy_am64x__7qm9DIS__LATEST

    ok, the board config file would be used as a part of the Uboot K3 image generation. General documentation here:
    https://software-dl.ti.com/processor-sdk-linux/esd/AM64X/08_06_00_42/exports/docs/linux/Foundational_Components/U-Boot/UG-General-Info.html 

    If you need more guidance on how to use your updated boardconfig information, let us know and I'll pass your thread to a team member more experienced with Uboot.

    Finally, no, the Linux A53 core does not need to have an IPC example running in order to initialize remote cores. The Linux remoteproc driver can initialize a remote core firmware as long as a resource table exists with certain information, as discussed here: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1193620/faq-am62x-am64x-how-to-allow-linux-to-load-m4f-r5f-firmware-by-adding-a-resource-table

    Regards,

    Nick

  • Hi Nick,

    Good morning to you!

    I am trying to debug as to why for EtherCAT, the System_Init() doesn't go through. Is there a way to be able to add debug logs in the generated files. In this case, the System_Init() is available from ti_drivers_config.c

    I tried looking through SysConfig tool files, but couldn't figure out.

    Thanks,

    Ankita

  • Hello Ankita,

    The debug hints I am aware of are in this previous response:
    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1221223/processor-sdk-am64x-am64x-gp-evm-boot-issue-after-changing-k3-am642-evm-dts-while-fixing-initial-issue-of-error-22-while-trying-to-load-from-r5f/4621685#4621685 

    That includes hints like how to connect CCS to the R5F to see exactly where the R5F code is currently.

    In the background, I will check with one of my team members who has more experience with EtherCAT than I do to see if they have tried EtherCAT on AM64x yet, and if so, if they have any tips.

    Regards,

    Nick

  • It seems like the team member I was checking with has only tested with loading the EtherCAT code with CCS instead of Linux.

    Regards,

    Nick

  • Thanks for checking Nick. We were able to run the EtherCAT example this week.

    Thanks again for your support, your inputs and pointers really helped us.

  • Glad to hear things are working well! Feel free to create a new thread if yall have any future questions.

    Regards,

    Nick