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

Richard Lourette rlourette at gmail.com
Tue Jul 28 22:39:41 CEST 2020


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 at 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 at 44e09000";
        tick-timer = "/ocp/timer at 48040000";
    };
    aliases {
        serial0 = "/ocp/serial at 44e09000";
    };
    ocp {
        compatible = "simple-bus";
        #address-cells = <0x00000001>;
        #size-cells = <0x00000001>;
        ranges;
        ti,hwmods = "l3_main";
        l4_wkup at 44c00000 {
            scm at 210000 {
                pinmux at 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 at 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 at 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 at 47400000 {
            dma-controller at 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 at 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 at 44e09000";
        tick-timer = "/ocp/timer at 48040000";
    };
    aliases {
        serial0 = "/ocp/serial at 44e09000";
        ethernet0 = "/ocp/ethernet at 4a100000/slave at 4a100200";
    };
    ocp {
        compatible = "simple-bus";
        #address-cells = <0x00000001>;
        #size-cells = <0x00000001>;
        ranges;
        ti,hwmods = "l3_main";
        l4_wkup at 44c00000 {
            scm at 210000 {
                pinmux at 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 at 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 at 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 at 47400000 {
            dma-controller at 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 at 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 at 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 at 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 at 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 at 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.
>
> 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
>


More information about the U-Boot mailing list