How to boot u-boot from embedded ELF file in Microblaze core

Álvaro G. M. alvaro at linenoise.info
Fri Nov 14 11:30:51 CET 2025


Hi,

I've built u-boot proper for microblaze with:

CONFIG_MICROBLAZE=y
CONFIG_TEXT_BASE=0x80100000
CONFIG_SYS_MALLOC_LEN=0xc0000
CONFIG_SYS_MALLOC_F_LEN=0x400
CONFIG_NR_DRAM_BANKS=1
CONFIG_ENV_SIZE=0x20000
CONFIG_DEFAULT_DEVICE_TREE="system"
CONFIG_SYS_LOAD_ADDR=0x0
CONFIG_DEBUG_UART_BASE=0x40600000
CONFIG_DEBUG_UART_CLOCK=83250000
CONFIG_TARGET_MICROBLAZE_GENERIC=y
CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR=1
CONFIG_XILINX_MICROBLAZE0_USE_PCMP_INSTR=1
CONFIG_XILINX_MICROBLAZE0_USE_BARREL=1
CONFIG_XILINX_MICROBLAZE0_USE_DIV=1
CONFIG_XILINX_MICROBLAZE0_USE_HW_MUL=2
CONFIG_XILINX_MICROBLAZE0_HW_VER="11.0"
CONFIG_XILINX_MICROBLAZE0_FPGA_FAMILY="artix7"
CONFIG_DEBUG_UART=y
CONFIG_SYS_LITTLE_ENDIAN=y
CONFIG_CC_OPTIMIZE_FOR_DEBUG=y


I can load this via xsdb and u-boot works and is capable of booting Linux
kernel. However, there are a couple of things I don't understand.

First off, if I set CONFIG_TEXT_BASE=0x80000000 (the exact beginning of RAM), it
won't boot, not even early debug message will appear. Why is that?

And the second thing, my endgame is to embed u-boot.elf into Microblaze itself,
so it acts as FSBL. I reduced the size to the maximum and I got a quite small
binary, even smaller than my current bootloader (the one from Xilinx that loads
an SREC image from flash), so there shouldn't be any issue from that part. To do
this, I set CONFIG_TEXT_BASE=0x0, but again, no early boot debug message
appears.

I've tried different values for CONFIG_TEXT_BASE in this case, but none of them
will work. Also, in either case, I'm not sure why, but I can't debug step by
step via xsdb, I won't see what ASM or C code matches with current PC address.
However, SPL will let me run it step by step via xsdb.

I'd appreciate any help regarding this.

Best regards, thank you

-- 
Álvaro G. M.


More information about the U-Boot mailing list