Hi Waldemar On 9/20/22 12:53, Waldemar Brodkorb wrote: > Hi Patrice, > Patrice CHOTARD wrote, > >> Hi Waldemar >> >> On 9/19/22 23:03, Waldemar Brodkorb wrote: >>> Hi Patrice, >>> Patrice CHOTARD wrote, >>> >>>> Waldemar, >>>> >>>> You can applied the following series on current U-Boot master >>>> branch (a0759684e015bd7252be3af508c0fcfdbb8ec5dc): >>>> >>>> https://patchwork.ozlabs.org/project/uboot/list/?series=318991 >>>> >>> >>> I applied the patches on top of u-boot master and the non-SPL >>> build still works fine. It seems only 2022.07 is broken, master is fine. >>> >>> The SPL build compiles, but I get no output via serial console after >>> flashing. I changed the openocd command to use 0x8009000 for u-boot. >>> >>> /home/wbx/openadk/host_x86_64-linux-gnu/usr/bin/openocd \ >>> -f interface/stlink.cfg -f board/stm32f7discovery.cfg \ >>> -c "init" \ >>> -c "reset init" \ >>> -c "flash probe 0" \ >>> -c "flash info 0" \ >>> -c "flash write_image erase spl/u-boot-spl.bin 0x08000000" \ >>> -c "flash write_image erase u-boot-dtb.bin 0x08009000" \ >>> -c "reset run" \ >>> -c "shutdown" >>> >>> Is this change correct or do I misread your patches? >> >> Due to the flash layout (the 4 first sectors size is 32KB) using >> "flash write_image erase" command, as you did, can't be used anymore due >> to the SPL size increase. >> >> SPL size is over 32KB (0x8000), so SPL binary occupies the first and a part >> of the second 32KB sectors. >> >> When you execute "flash write_image erase u-boot-dtb.bin 0x08009000", >> this command erase the second 32KB sector (where a part of SPL has been >> previously copied) before copying the u-boot-dtb.bin binary. >> >> So i advice you to use the method described in doc/board/st/stm32_MCU.rst >> Copy directly the generated binary u-boot-with-spl.bin into the mass-storage >> exposed by the board. >> >> Example, under Ubuntu you should see the following directory >> /media/$USER/DIS_F746NG > > When I copy u-boot-with-spl.bin to the mass-storage device I get > following output on the serial console: > U-Boot SPL 2022.10-rc5-00009-g41530b5b3e (Sep 20 2022 - 12:37:40 > +0200) > Trying to boot from XIP > fdt_root: FDT_ERR_BADMAGIC > Hard fault > pc : 08009000 lr : 0800070b xPSR : 41000000 > r12 : 2004f108 r3 : 40011000 r2 : 080c0000 > r1 : ffffffff r0 : 00000000 > Resetting CPU ... > > resetting ... > > How is it supposed to work to start the full u-boot-dtb.bin and > u-boot-with-spl.bin? When I copy both files I get no output, it > seems this is not supported, right?
u-boot-with-spl.bin is the concatenation of 2 binaries: u-boot-with-spl.bin = u-boot-spl.bin + u-boot.bin You should only copy u-boot-with-spl.bin in the board mass-storage. At the end of u-boot-spl.bin binary, some padding is added to make sure that u-boot.bin will be located at the expected offset, in our case offset 0x9000 (see CONFIG_SPL_PAD_TO 0x9000 in stm32f746-disco-spl_defconfig) So u-boot-spl.bin is first executed, located at offset 0 (0x08000000), then jump in u-boot.bin located at offset 0x9000 (0x08009000). it's weird because everything looks correct in your log, pc is set with 0x08009000 but i can't understand why u-boot.bin is not executed in your case .... > > Maybe I should stick with the normal non-SPL boot, I see no > advantage to have the SPL boot. What is the advantage of the SPL > build? At the very beginning of stm32f746-disco support, Vikas Manocha introduces SPL mode to use falcon mode (see doc/README.falcon) With this mode you can jump directly in kernel after U-Boot SPL execution : U-Boot SPL -> Kernel (previously flashed at offset 0x9000 and configured in XIP) If during boot, you maintain the "c" key pressed, the SPL flow will be: U-Boot SPL -> U-Boot (located in flash) -> Kernel (located in SD-card) Have you try with stm32f746_disco_defconfig ? in this case, you have to copy u-boot.bin binary in board mass-storage. Patrice > > best regards > Waldemar