Barebox is a bootloader that strives to be a modern alternative to U-Boot. It currently supports ARM, Blackfin, MIPS, NIOS2, OpenRISC, PowerPC and x86 as CPU architectures, and while it doesn’t have as much hardware support as U-Boot yet, it does have a number of very significant advantages over U-Boot: a proper device model very similar to the one used in the Linux kernel, which makes the code very clean and nice, and a configuration system that uses kconfig, like the Linux kernel, which is a lot better than the per-board header files used by U-Boot with lots of cryptic macros.
Bootlin had already contributed to Barebox in the past, as our engineer Maxime Ripard added the support for the Crystalfontz i.MX28 boards.
More recently, we contributed basic support for the Marvell Kirkwood, Marvell Armada 370 and Marvell Armada XP ARM processors. This work was released as part of the 2013.07.0 release. For now, the support is fairly minimal, as it only allows to boot a Barebox bootloader that has serial port support. The most important part of the work was to write a kwbimage tool (see kwbimage.c), which allows to generate bootable images for Marvell processors. Our work contained minimal support for the Armada XP-based OpenBlocks AX3 board, the Armada XP-based GP development board, the Armada 370-based Mirabox from Globalscale and the Kirkwood-based Guruplug from Globalscale. Our work was quickly extended by Sebastian Hesselbarth, who added basic support for the Marvell Dove processor, and the Cubox platform from SolidRun, which uses the Dove processor.
Of course, such support is far from being complete, we are hoping in the future to add support for network, NAND and SD, in order to make Barebox really useful and usable on Marvell platforms.
The details of our contributions are:
- Thomas Petazzoni (17):
- scripts: new kwbimage manipulation tool for Marvell SoC boot images
- scripts: add kwboot tool
- arm: initial support for Marvell Armada 370/XP SoCs
- arm: integrate kwbimage in the image generation
- arm: add basic support for Armada XP OpenBlocks AX3 platform
- arm: add basic support for the Armada 370 Mirabox platform
- arm: add basic support for the Armada XP GP platform
- scripts/kwbimage: add a new function image_count_options()
- scripts/kwbimage: add a few sanity checks
- scripts/kwbimage: make the v0 image creation more flexible
- scripts/kwbimage: simplify the v1 image creation
- scripts/kwbimage: make image_boot_mode_id() return -1 on failure
- scripts/kwbimage: add support for NAND ECC and page size header fields
- arm: mvebu: add Feroceon CPU type
- arm: mvebu: initial support for Marvell Kirkwood SoCs
- arm: mvebu: add basic support for Globalscale Guruplug board
- arm: mvebu: remove useless lines in kwbimage.cfg for CuBox