Hi Thomas, On 05/08/2013 11:10 PM, Thomas Petazzoni wrote: > Hello, > > Here is a patch set that adds basic support for the Marvell Armada 370 > and Armada XP SOCs. For now, the support is quite minimal, since only > the serial port is supported. However, a significant part of the work > has been the development of the tools that allow to extract/create > bootable images and to push a bootable image through the UART to the > hardware platform. > > I expect to work on adding support for more devices (such as the > network interface) and possibly to add support for the older, but > popular, Marvell Kirkwood SoC family. Contributions are of course > welcome. > > Changes since v1: > > - Drop the patch fixing scripts/checkpatch.pl since it has been > merged upstream. > > - Improve kwbimage to add options that allow to override the payload > filename, the boot media, the destination address and execution > address from the command line. Suggested by Sascha Hauer. > > - Add an integration of kwbimage to the Barebox build process. Now, > when an ARCH_MVEBU platform is selected, a barebox.kwb file is > automatically generated using the board kwbimage.cfg, and a > barebox.kwbuart is generated using the board kwbimage.cfg + an > override of the boot media to be UART. It is a very nice improvement however, you should maybe mention somwhere that you expect to find a file named binary.0 at the root of the barebox sources. But it is not very important. However you didn't manage the out of tree building when KBUILD_OUTPUT is set. This is more annoying but it should be easily fixed. > > - Simplify the kwbimage.cfg to no longer contain the payload filename > (it is passed by Barebox using kwbimage -p option), the destination > and execution addresses (those are passed by Barebox using kwbimage > -d and -e options, which allows to ensure they match > CONFIG_TEXT_BASE). > > - Change the default boot media of the kwbimage.cfg to be the real > boot media used on the platform, typically SPI or NAND. Since an > image for UART is always automatically generated by overriding the > boot media, it makes sense to have the real boot media in > kwbimage.cfg. It didn't work for me when I tested the on the OpenBlocks AX3. The boot media didn't seem to have been overridden ie it still try to boot on the NOR. And if I modify the file arch/arm/boards/plathome-openblocks-ax3//kwbimage.cfg and replace spi by uart, then it works. Thanks for your work, > > - Remove incorrect whitespace change in scripts/Makefile. Noticed by > Sascha Hauer. > > In detail, the patch set contains: > > * A kwbimage tool. This tool allows to extract existing bootloader > images, and create new bootloader images. It is more or less > similar in purpose to the kwbimage tool from U-Boot, but is capable > of handling 'version 1' images used by Armada 370/XP, and not only > allows to create images, but also extract images. > > A typical usage is to first extract an existing bootloader image: > > ./scripts/kwbimage -x -i <existing-image> -o <some-directory> > > As an output, you typically get 3 files: kwbimage.cfg (a text file > that describes the configuration of the image in a format > ressembling the one used by U-Boot), binary.0 (the binary blob that > does the DDR3 training) and payload (the bootloader itself). > > Being able to extract an image is needed in order to get the DDR3 > training code, and re-use it with Barebox. > > An image is then later created with: > > ./scripts/kwbimage -c -i <path/to/kwbimage.cfg> -o <image> > > For each board, the kwbimage.cfg file is typically located in > arch/arm/boards/<board-name>/. The DDR3 training code must however > be extracted from an existing bootloader image of your board, > usually the one provided by the board manufacturer. > > * A kwboot tool to push a bootloader through UART. It is directly > taken from U-Boot source code, to which I've added some fixes: > > - Extend the timeouts, to actually make it work on Armada > 370/XP. This has originally been found by Willy Tarreau. > > - Ignore non-Xmodem characters, so that the original DDR3 training > code can be used without modifications (Willy had to change it to > make it output its messages on a different serial port, otherwise > it was confusing the Xmodem implementation) > > - Output to stdout all the non-Xmodem characters so that if > something goes wrong during the transfer, we have some > informations. It also shows the messages output by the DDR3 > training code. > > - Remove the 'patch' feature that patches an image to have the UART > type. This requires a knowledge of the header format, which is > different between version 0 (kirkwood) and version 1 (armada > 370/xp). It is not really needed anyway since kwbimage can > extract and create images. > > * The SoC-level code, which for now only consists in a minimal > clocksource driver, a function to register an UART, a fixed-rate > clock, and a function that determines the amount of RAM by looking > at the SDRAM windows registers. > > * An integration of kwbimage generation. When an ARCH_MVEBU platform > is selected, both barebox.kwb and barebox.kwbuart images are > generated automatically. > > * The board-level code for the Armada 370 Mirabox from Globalscale, > the Armada XP OpenBlocks AX3 from Plathome and the Armada XP GP > from Marvell. > > Best regards, > > Thomas > > Thomas Petazzoni (7): > 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 > > Makefile | 2 +- > arch/arm/Kconfig | 8 + > arch/arm/Makefile | 24 + > arch/arm/boards/globalscale-mirabox/Makefile | 2 + > arch/arm/boards/globalscale-mirabox/config.h | 4 + > .../globalscale-mirabox/globalscale-mirabox.c | 26 + > arch/arm/boards/globalscale-mirabox/kwbimage.cfg | 5 + > arch/arm/boards/globalscale-mirabox/lowlevel.c | 26 + > arch/arm/boards/marvell-armada-xp-gp/Makefile | 2 + > arch/arm/boards/marvell-armada-xp-gp/config.h | 4 + > arch/arm/boards/marvell-armada-xp-gp/kwbimage.cfg | 3 + > arch/arm/boards/marvell-armada-xp-gp/lowlevel.c | 25 + > .../marvell-armada-xp-gp/marvell-armada-xp-gp.c | 25 + > arch/arm/boards/plathome-openblocks-ax3/Makefile | 2 + > arch/arm/boards/plathome-openblocks-ax3/config.h | 4 + > .../boards/plathome-openblocks-ax3/kwbimage.cfg | 3 + > arch/arm/boards/plathome-openblocks-ax3/lowlevel.c | 25 + > .../plathome-openblocks-ax3.c | 25 + > arch/arm/configs/globalscale_mirabox_defconfig | 8 + > arch/arm/configs/marvell_armada_xp_gp_defconfig | 10 + > arch/arm/configs/plathome_openblocks_ax3_defconfig | 9 + > arch/arm/mach-mvebu/Kconfig | 54 + > arch/arm/mach-mvebu/Makefile | 1 + > arch/arm/mach-mvebu/core.c | 142 ++ > arch/arm/mach-mvebu/include/mach/clkdev.h | 7 + > arch/arm/mach-mvebu/include/mach/debug_ll.h | 40 + > arch/arm/mach-mvebu/include/mach/mvebu.h | 22 + > drivers/clocksource/Kconfig | 4 + > drivers/clocksource/Makefile | 1 + > drivers/clocksource/mvebu.c | 90 ++ > scripts/.gitignore | 2 + > scripts/Makefile | 1 + > scripts/kwbimage.c | 1443 ++++++++++++++++++++ > scripts/kwboot.c | 717 ++++++++++ > 34 files changed, 2765 insertions(+), 1 deletion(-) > create mode 100644 arch/arm/boards/globalscale-mirabox/Makefile > create mode 100644 arch/arm/boards/globalscale-mirabox/config.h > create mode 100644 arch/arm/boards/globalscale-mirabox/globalscale-mirabox.c > create mode 100644 arch/arm/boards/globalscale-mirabox/kwbimage.cfg > create mode 100644 arch/arm/boards/globalscale-mirabox/lowlevel.c > create mode 100644 arch/arm/boards/marvell-armada-xp-gp/Makefile > create mode 100644 arch/arm/boards/marvell-armada-xp-gp/config.h > create mode 100644 arch/arm/boards/marvell-armada-xp-gp/kwbimage.cfg > create mode 100644 arch/arm/boards/marvell-armada-xp-gp/lowlevel.c > create mode 100644 arch/arm/boards/marvell-armada-xp-gp/marvell-armada-xp-gp.c > create mode 100644 arch/arm/boards/plathome-openblocks-ax3/Makefile > create mode 100644 arch/arm/boards/plathome-openblocks-ax3/config.h > create mode 100644 arch/arm/boards/plathome-openblocks-ax3/kwbimage.cfg > create mode 100644 arch/arm/boards/plathome-openblocks-ax3/lowlevel.c > create mode 100644 arch/arm/boards/plathome-openblocks-ax3/plathome-openblocks-ax3.c > create mode 100644 arch/arm/configs/globalscale_mirabox_defconfig > create mode 100644 arch/arm/configs/marvell_armada_xp_gp_defconfig > create mode 100644 arch/arm/configs/plathome_openblocks_ax3_defconfig > create mode 100644 arch/arm/mach-mvebu/Kconfig > create mode 100644 arch/arm/mach-mvebu/Makefile > create mode 100644 arch/arm/mach-mvebu/core.c > create mode 100644 arch/arm/mach-mvebu/include/mach/clkdev.h > create mode 100644 arch/arm/mach-mvebu/include/mach/debug_ll.h > create mode 100644 arch/arm/mach-mvebu/include/mach/mvebu.h > create mode 100644 drivers/clocksource/mvebu.c > create mode 100644 scripts/kwbimage.c > create mode 100644 scripts/kwboot.c > -- Gregory Clement, Free Electrons Kernel, drivers, real-time and embedded Linux development, consulting, training and support. http://free-electrons.com _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox