AM335X Bootp of u-boot-spl.bin followed by tftp of u-boot.img. Is it possible?

I am working with a board with the AM3352 that only has ethernet and a serial port (UART0). I am able to use the bootstrap of the AM3352 to network boot the u-boot-spl.bin file. I can't get the second stage u-boot.img to network load via TFTP. My spl image says there are no etjermet devices found.
1) My first question, is TFTP booting u-boot.img possible with the AM3352?
2) If it is, any thoughts on how I get u-boot-spl.bin to use ethernet for loading the second image?
Thanks
With some debugging enabled (I deleted all the memory allocation print statements):
Trying to boot from eth device env_driver_lookup: No environment driver for location 2 Using default environment Initial value for argc=3 Final value for argc=3 No ethernet found. No Ethernet devices found SPL: failed to boot from all boot devices

Here is more information... I dumped the DTB to decompile to see what was in the device tree. I am working on a new board based upon the AM3352 that has only ethernet and a serial port. The goal is to use the device model exclusively for this. I am working with u-boot 2020.07rc4 presently.
I am having a lot of trouble getting second stage booting over TFTP from the u-boot-spl.bin image.
If I serial boot and after loading the second image to DRAM, tftp is working fine, so the hardware is okay.
Any insight would be greatly appreciated.
Thank Dump of device tree from u-boot-spl.bin
Note: magic header number is 0x0dd0 0xedfe
Use hexdump and grep to search for it.
rich@poseiden:~/u-boot/spl$ tail -c 4556 u-boot-spl.bin | fdtdump -
**** fdtdump is a low-level debugging tool, not meant for general use. **** If you want to decompile a dtb, you probably want **** dtc -I dtb -O dts <filename>
/dts-v1/; // magic: 0xd00dfeed // totalsize: 0x675 (1653) // off_dt_struct: 0x38 // off_dt_strings: 0x51c // off_mem_rsvmap: 0x28 // version: 17 // last_comp_version: 2 // boot_cpuid_phys: 0x0 // size_dt_strings: 0x159 // size_dt_struct: 0x4e4
/ { compatible = "ti,am33xx"; #address-cells = <0x00000001>; #size-cells = <0x00000001>; model = "Flight Circuits EPN11291"; chosen { stdout-path = "/ocp/serial@44e09000"; tick-timer = "/ocp/timer@48040000"; }; aliases { serial0 = "/ocp/serial@44e09000"; }; ocp { compatible = "simple-bus"; #address-cells = <0x00000001>; #size-cells = <0x00000001>; ranges; ti,hwmods = "l3_main"; l4_wkup@44c00000 { scm@210000 { pinmux@800 { compatible = "pinctrl-single"; reg = <0x00000800 0x00000238>; #address-cells = <0x00000001>; #size-cells = <0x00000000>; #pinctrl-cells = <0x00000001>; pinctrl-single,register-width = <0x00000020>; pinctrl-single,function-mask = <0x0000007f>; }; }; }; serial@44e09000 { compatible = "ti,am3352-uart", "ti,omap3-uart"; ti,hwmods = "uart1"; clock-frequency = <0x02dc6c00>; reg = <0x44e09000 0x00002000>; status = "okay"; dmas = <0x00000025 0x0000001a 0x00000000 0x00000025 0x0000001b 0x00000000>; dma-names = "tx", "rx"; }; mmc@481d8000 { compatible = "ti,omap4-hsmmc"; ti,hwmods = "mmc2"; ti,needs-special-reset; dmas = <0x00000025 0x00000002 0x00000000 0x00000025 0x00000003 0x00000000>; dma-names = "tx", "rx"; reg = <0x481d8000 0x00001000>; status = "okay"; bus-width = <0x00000008>; ti,non-removable; max-frequency = <0x05b8d800>; }; usb@47400000 { dma-controller@47402000 { compatible = "ti,am3359-cppi41"; reg = <0x47400000 0x00001000 0x47402000 0x00001000 0x47403000 0x00001000 0x47404000 0x00004000>; reg-names = "glue", "controller", "scheduler", "queuemgr"; interrupt-names = "glue"; #dma-cells = <0x00000002>; #dma-channels = <0x0000001e>; #dma-requests = <0x00000100>; status = "okay"; phandle = <0x00000032>; }; }; }; };
Added u-boot, dm-spl to all drivers in the DTS Still crashing
rich@poseiden:~/u-boot/spl$ tail -c 5388 u-boot-spl.bin | fdtdump -
**** fdtdump is a low-level debugging tool, not meant for general use. **** If you want to decompile a dtb, you probably want **** dtc -I dtb -O dts <filename>
/dts-v1/; // magic: 0xd00dfeed // totalsize: 0x9bd (2493) // off_dt_struct: 0x38 // off_dt_strings: 0x7b8 // off_mem_rsvmap: 0x28 // version: 17 // last_comp_version: 2 // boot_cpuid_phys: 0x0 // size_dt_strings: 0x205 // size_dt_struct: 0x780
/ { compatible = "ti,am33xx"; #address-cells = <0x00000001>; #size-cells = <0x00000001>; model = "Flight Circuits EPN11291"; chosen { stdout-path = "/ocp/serial@44e09000"; tick-timer = "/ocp/timer@48040000"; }; aliases { serial0 = "/ocp/serial@44e09000"; ethernet0 = "/ocp/ethernet@4a100000/slave@4a100200"; }; ocp { compatible = "simple-bus"; #address-cells = <0x00000001>; #size-cells = <0x00000001>; ranges; ti,hwmods = "l3_main"; l4_wkup@44c00000 { scm@210000 { pinmux@800 { compatible = "pinctrl-single"; reg = <0x00000800 0x00000238>; #address-cells = <0x00000001>; #size-cells = <0x00000000>; #pinctrl-cells = <0x00000001>; pinctrl-single,register-width = <0x00000020>; pinctrl-single,function-mask = <0x0000007f>; }; }; }; serial@44e09000 { compatible = "ti,am3352-uart", "ti,omap3-uart"; ti,hwmods = "uart1"; clock-frequency = <0x02dc6c00>; reg = <0x44e09000 0x00002000>; status = "okay"; dmas = <0x00000025 0x0000001a 0x00000000 0x00000025 0x0000001b 0x00000000>; dma-names = "tx", "rx"; }; mmc@481d8000 { compatible = "ti,omap4-hsmmc"; ti,hwmods = "mmc2"; ti,needs-special-reset; dmas = <0x00000025 0x00000002 0x00000000 0x00000025 0x00000003 0x00000000>; dma-names = "tx", "rx"; reg = <0x481d8000 0x00001000>; status = "okay"; bus-width = <0x00000008>; ti,non-removable; max-frequency = <0x05b8d800>; }; usb@47400000 { dma-controller@47402000 { compatible = "ti,am3359-cppi41"; reg = <0x47400000 0x00001000 0x47402000 0x00001000 0x47403000 0x00001000 0x47404000 0x00004000>; reg-names = "glue", "controller", "scheduler", "queuemgr"; interrupt-names = "glue"; #dma-cells = <0x00000002>; #dma-channels = <0x0000001e>; #dma-requests = <0x00000100>; status = "okay"; phandle = <0x00000032>; }; }; ethernet@4a100000 { compatible = "ti,am335x-cpsw", "ti,cpsw"; ti,hwmods = "cpgmac0"; cpdma_channels = <0x00000008>; ale_entries = <0x00000400>; bd_ram_size = <0x00002000>; mac_control = <0x00000020>; slaves = <0x00000001>; active_slave = <0x00000000>; cpts_clock_mult = <0x80000000>; cpts_clock_shift = <0x0000001d>; reg = <0x4a100000 0x00000800 0x4a101200 0x00000100>; #address-cells = <0x00000001>; #size-cells = <0x00000001>; ranges; syscon = <0x00000004>; status = "okay"; pinctrl-1 = <0x0000003a>; mdio@4a101000 { compatible = "ti,cpsw-mdio", "ti,davinci_mdio"; #address-cells = <0x00000001>; #size-cells = <0x00000000>; ti,hwmods = "davinci_mdio"; bus_freq = <0x000f4240>; reg = <0x4a101000 0x00000100>; status = "okay"; pinctrl-1 = <0x0000003c>; }; slave@4a100200 { mac-address = [00 00 00 00 00 00]; phy-handle = <0x0000003d>; phy-mode = "rgmii"; }; }; }; };
After booting with this image
The assertion doesn't happen during a serial boot.
fdtdec_get_addr_size_auto_parent: na=1, ns=1, fdtdec_get_addr_size_fixed: reg: addr=00000000x ofnode_read_u32_index: cpdma_channels: x (8) ofnode_read_u32_index: slaves: x (1) size=x, ptr=18, limit=cf4: 81f00cdc ofnode_read_u32_index: ale_entries: x (1024) ofnode_read_u32_index: bd_ram_size: x (8192) ofnode_read_u32_index: mac_control: x (32) gpio_get_list_count: Node 'ethernet@4a100000', property 'mode-gpios', GPIO count failed: -2 ofnode_read_u32_index: active_slave: x (0) fdtdec_get_addr_size_fixed: reg: addr=00000000x, size=x ofnode_read_prop: phy-mode: rgmii drivers/core/ofnode.c:39: ofnode_read_u32_index: Assertion `ofnode_valid(node)' failed. resetting ...
On Mon, Jul 27, 2020 at 8:44 PM Richard Lourette rlourette@gmail.com wrote:
I am working with a board with the AM3352 that only has ethernet and a serial port (UART0). I am able to use the bootstrap of the AM3352 to network boot the u-boot-spl.bin file. I can't get the second stage u-boot.img to network load via TFTP. My spl image says there are no etjermet devices found.
My first question, is TFTP booting u-boot.img possible with the AM3352?
If it is, any thoughts on how I get u-boot-spl.bin to use ethernet for
loading the second image?
Thanks
With some debugging enabled (I deleted all the memory allocation print statements):
Trying to boot from eth device env_driver_lookup: No environment driver for location 2 Using default environment Initial value for argc=3 Final value for argc=3 No ethernet found. No Ethernet devices found SPL: failed to boot from all boot devices
participants (1)
-
Richard Lourette