uboot/doc/README.bcm7xxx
<<
>>
Prefs
   1Summary
   2=======
   3
   4This document describes how to use U-Boot on the Broadcom 7445 SoC, as
   5a third stage bootloader loaded by Broadcom's BOLT bootloader.
   6
   7BOLT loads U-Boot as a generic ELF binary.  Some U-Boot features such
   8as networking are not yet available but other important features are,
   9including:
  10
  11   - ext4 file system traversal
  12
  13   - support for loading FIT images
  14
  15   - advanced scripting
  16
  17   - support for FIT-provided DTBs instead of relying on the
  18     BOLT-provided DTB
  19
  20A customized version of this port has been used in production.  The
  21same approach may work on other BCM7xxx boards, with some
  22configuration adjustments and memory layout experimentation.
  23
  24Build
  25=====
  26
  27make bcm7445_defconfig
  28make
  29${CROSS_COMPILE}strip u-boot
  30
  31Run
  32===
  33
  34Flash the u-boot binary into board storage, then invoke it from BOLT.
  35For example:
  36
  37BOLT> boot -bsu -elf flash0.u-boot1
  38
  39This port assumes that I-cache and D-cache are already enabled when
  40U-Boot is entered.
  41
  42Flattened Image Tree Support
  43============================
  44
  45What follows is an example FIT image source file.  Build it with:
  46
  47mkimage -f image.its image.itb
  48
  49Booting the resulting image.itb was tested on BOLT v1.20, with the
  50following kernels:
  51
  52https://github.com/Broadcom/stblinux-3.14
  53https://github.com/Broadcom/stblinux-4.1
  54https://github.com/Broadcom/stblinux-4.9
  55
  56and with a generic ARMv7 root file system.
  57
  58image.its:
  59/dts-v1/;
  60/ {
  61        description = "BCM7445 FIT";
  62        images {
  63                kernel@1 {
  64                        description = "Linux kernel";
  65                        /*
  66                         * This kernel image output format can be
  67                         * generated with:
  68                         *
  69                         * make vmlinux
  70                         * ${CROSS_COMPILE}objcopy -O binary -S vmlinux vmlinux.bin
  71                         * gzip -9 vmlinux.bin
  72                         *
  73                         * For stblinux-3.14, the specific Broadcom
  74                         * board type should be configured in the
  75                         * kernel, for example CONFIG_BCM7445D0=y.
  76                         */
  77                        data = /incbin/("<vmlinux.bin.gz>");
  78                        type = "kernel";
  79                        arch = "arm";
  80                        os = "linux";
  81                        compression = "gzip";
  82                        load = <0x8000>;
  83                        entry = <0x8000>;
  84                        hash@1 {
  85                                algo = "sha256";
  86                        };
  87                };
  88                ramdisk@1 {
  89                        description = "Initramfs root file system";
  90                        data = /incbin/("<initramfs.cpio.gz>");
  91                        type = "ramdisk";
  92                        arch = "arm";
  93                        os = "linux";
  94                        compression = "gzip";
  95                        /*
  96                         * Set the environment variable initrd_high to
  97                         * 0xffffffff, and set "load" and "entry" here
  98                         * to 0x0 to keep initramfs in-place and to
  99                         * accommodate stblinux bmem/CMA reservations.
 100                         */
 101                        load = <0x0>;
 102                        entry = <0x0>;
 103                        hash@1 {
 104                                algo = "sha256";
 105                        };
 106                };
 107                fdt@1 {
 108                        description = "Device tree dumped from BOLT";
 109                        /*
 110                         * This DTB should be similar to the
 111                         * BOLT-generated device tree, after BOLT has
 112                         * done its runtime modifications to it.  For
 113                         * example, it can be dumped from within
 114                         * U-Boot (at ${fdtcontroladdr}), after BOLT
 115                         * has loaded U-Boot.  The result can be added
 116                         * to the Linux source tree as a .dts file.
 117                         *
 118                         * To support modifications to the device tree
 119                         * in-place in U-Boot, add to Linux's
 120                         * arch/arm/boot/dts/Makefile:
 121                         *
 122                         * DTC_FLAGS ?= -p 4096
 123                         *
 124                         * This will leave some padding in the DTB and
 125                         * thus reserve room for node additions.
 126                         *
 127                         * Also, set the environment variable fdt_high
 128                         * to 0xffffffff to keep the DTB in-place and
 129                         * to accommodate stblinux bmem/CMA
 130                         * reservations.
 131                         */
 132                        data = /incbin/("<bolt-<version>.dtb");
 133                        type = "flat_dt";
 134                        arch = "arm";
 135                        compression = "none";
 136                        hash@1 {
 137                                algo = "sha256";
 138                        };
 139                };
 140        };
 141        configurations {
 142                default = "conf@bcm7445";
 143                conf@bcm7445 {
 144                        description = "BCM7445 configuration";
 145                        kernel = "kernel@1";
 146                        ramdisk = "ramdisk@1";
 147                        fdt = "fdt@1";
 148                };
 149        };
 150};
 151