Dear lists,
First of all, let me say thanks to Stefan for his patch and help on
porting. Without his patch, I couldn't figure out what shall I do and
what to do with CBFS on ARM. Following is the first thought on how to
implement it, justing using qemu-arm (versatilepb) as an example.
After power on, At 0x0, start execution at reset from
src/cpu/arm/arm926ejs/start.S. It will simply jump to the actual start
code. Following, it will set CPU to SVC32 mode and do some basic setup
then go toboard-specific lowlevel_init function to init the ram. After
that, ram is ready to use. Because it is easier initing ram than X86,
no romstage needed. After set the sp pointer, we move to CBFS and find
the ramstage then move it to ram and run it.
We do some init in ramstage and then move to payload.
src/mainboard/emulation/qemu-arm will be the dir for this board. In
this dir, Kconfig will set some configs for this board, including CPU
and its variant type, rambase address of this board and so on.
lowlevel.S will be the place where ram and console init code placed.
src/arch/arm will be the key dir that holds arm-specific lib, headers
and Makefile just like X86's.
src/cpu/arm/arm926ejs is for all cpu that uses arm926ejs core. CPU
variant will be a subdir under this dir and holding CPU
variant-specific lib and headers.
Thanks,
Hamo