HI,
Barebox flow basecly the linux kernel architecture
We use as linux a file system (devfs) to manage the device such as NOR, NAND, SPI Flash, Memory, phy, SD etc...
As have a pseudo POSIX API to implement command application such as ls, rm, mount, boot etc...
You can see barebox as "Small Linux like" bootlader
To extend it's fonctionality at runtime we use modules (same as in the kernel).
We do not support yet ABI Application
With start from anywhere and they relocate our self at the right addres in DDR after have init the soc and the board. Which include the DDR.
After we use the initcall to init: 1: the core Usualy clock and pio
2: console uart
3: core device using the device / driver model of the kernel
4: Filesystem register filesytem
5: device using the device / driver model of the kernel as Frambuffer, and other
Then we mount a ramfs and devfs and execute a script /env/bin/init
all the boot sequence is manage by script based on Hush from busybox
we have a default scripting implementation to boot but you are free to manage it how you want
we an boot from any media and from tftp, nfs with uImage or zImage or Image
You can manage your boot loader configuration and boot from via a Menu which can be manage in C or in shell
Over uart and soon over Framebuffer
Best Regards, J.
boot-architecture@lists.linaro.org