Hi,
As per my knowledge, MLO(SPL) does basic operation like clock configuration, initialization of external eMMC, ext RAM and copy the u-boot image from eMMC to RAM(DDR3) and jumps to RAM locate where it has copied the u-boot.
But the u-boot startup code seems to mislead me.
Here is the code of u-boot start.S:
#ifndef CONFIG_SKIP_RELOCATE_UBOOT
relocate: /* relocate U-Boot to RAM */
adr r0, _start /* r0 <- current position of code */
ldr r1, _TEXT_BASE /* test if we run from flash or RAM */
cmp r0, r1 /* don't reloc during debug */
beq stack_setup
ldr r2, _armboot_start
ldr r3, _bss_start
sub r2, r3, r2 /* r2 <- size of armboot */
add r2, r0, r2 /* r2 <- source end address */
copy_loop:
ldmia r0!, {r3-r10} /* copy from source address [r0] */
stmia r1!, {r3-r10} /* copy to target address [r1] */
cmp r0, r2 /* until source end addreee [r2] */
ble copy_loop
#endif /* CONFIG_SKIP_RELOCATE_UBOOT */
why is u-boot's start.S copying itself to ext RAM(DDR3)?
Regards,
Bharath