[U-Boot] ARMv7 Execution Flow

James Pollard james at pollard-net.co.uk
Fri Jun 3 20:55:35 CEST 2016


Hi,

I'm a new U-Boot user. I'm trying to follow the flow of execution for the
ARMv7 architecture, and have found myself running into confusion.

At the end of arch/arm/cpu/armv7/start.S, lowlevel_init is called. This is
defined (for the ARMv7 architecture in arch/arm/cpu/armv7/low_level_init.S
(not sure if there's a reason for the discrepancy in the use of
underscores?), and at the end of this file, s_init is called.

As far as I can tell, s_init is only defined for some of the ARMv7 CPUs:
the bcm281xx folder doesn't contain any files that define this function. In
the case of the am33xx CPU it's defined in board.c, but this function seems
to return without calling board_init_f.

My questions are:

   1.  In the case of the bcm281xx, what happens? s_init doesn't seem to be
   defined for this CPU.
   2.  In the case of the am33xx, where is board_init_f called? As far as I
   can tell, s_init should return to lowlevel_init without having
   called board_init_f , which then returns back to start.S, terminating
   the execution prematurely.

I presume my analysis of the assembly must be highly incorrect?

Sorry if this is the wrong place for such a question.

Yours,

James Pollard


More information about the U-Boot mailing list