This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Linux/AM3352: SPL program flow

Part Number: AM3352


Tool/software: Linux

we have beaglebone black based custom board with 256MB RAM and 4GB eMMC.

We are trying to upgrade bootloader from u-boot-2013 to u-boot-2017.

I was trying to understand SPL boot sequence beaglebone-black, before adding new board for u-boot.

so here is the flow I found

  • reset vector start executing from start.S ( in arch/arm/cpu/armv7/)
  • in the same start.S file  call cpu_init_crit() is called.
  • cpu_init_crit() --> lowlevel_init() from arch/arm/cpu/armv7/lowlevel_init.S
  • Now my doubt is lowlevel_init() --> calls s_init which is available in  arch/arm/mach-omap2/omap3/board.c and arch/arm/mach-omap2/am33xx/board.c
    • My assumption is s_init is called from arch/arm/mach-omap2/omap3/board.c file.
  • after s_init completion control returns to lowlevel_init.S and then --> start.S
  • after that start.S calls _main from arch/arm/lib/crt0.S
  • crt0.S calls --> board_init_f from arch/arm/mach-omap2/omap3/board.c
    • Is this correct ? or board_init_f() from arch/arm/mach-omap2/am33xx/board.c is called ?

Is there a good way to trace out this boot sequence of SPL and U-boot for beaglebone black or am335x_evm board  ? ( I assume JTAG would help but wanted to see if something else would help)

Thank you,

Regards,

Ankur