uboot/doc/README.marvell
<<
>>
Prefs
   1Marvell U-Boot Build Instructions
   2=================================
   3
   4This document describes how to compile the U-Boot and how to change U-Boot configuration
   5
   6Build Procedure
   7----------------
   81. Install required packages:
   9
  10                # sudo apt-get install libssl-dev
  11                # sudo apt-get install device-tree-compiler
  12                # sudo apt-get install swig libpython-dev
  13
  142. Set the cross compiler:
  15
  16                # sudo apt-get install gcc-aarch64-linux-gnu
  17                # export CROSS_COMPILE=aarch64-linux-gnu-
  18
  193. Clean-up old residuals:
  20
  21                # make mrproper
  22
  234. Configure the U-Boot:
  24
  25                # make <defconfig_file>
  26
  27        - For the Armada-70x0/80x0 DB board use "mvebu_db_armada8k_defconfig"
  28        - For the Armada-80x0 MacchiatoBin use "make mvebu_mcbin-88f8040_defconfig"
  29        - For the Armada-3700 DB board use "make mvebu_db-88f3720_defconfig"
  30        - For the Armada-3700 EspressoBin use "make mvebu_espressobin-88f3720_defconfig"
  31
  325. Configure the device-tree and build the U-Boot image:
  33
  34        For the Armada-70x0/80x0 DB board compile u-boot and set the required device-tree using:
  35
  36                # make DEVICE_TREE=<name>
  37
  38        NOTE:
  39        Compilation with "mvebu_db_armada8k_defconfig" requires explicitly exporting DEVICE_TREE
  40        for the requested board.
  41        By default, u-boot is compiled with armada-8040-db device-tree.
  42        Using A80x0 device-tree on A70x0 might break the device.
  43        In order to prevent this, the required device-tree MUST be set during compilation.
  44        All device-tree files are located in ./arch/arm/dts/ folder.
  45
  46        For other DB boards (MacchiatoBin, EspressoBin and 3700 DB board) compile u-boot with
  47        just default device-tree from defconfig using:
  48
  49                # make
  50
  51        NOTE:
  52        The u-boot.bin should not be used as a stand-alone image.
  53        The ARM Trusted Firmware (ATF) build process uses this image to generate the
  54        flash image. See TF-A Build Instructions for Marvell Platforms for more details at:
  55        https://trustedfirmware-a.readthedocs.io/en/latest/plat/marvell/armada/build.html
  56
  57Configuration update
  58---------------------
  59        To update the U-Boot configuration, please refer to doc/README.kconfig
  60
  61
  62Permanent ethernet MAC address
  63-------------------------------
  64        Prior flashing new U-Boot version (as part of ATF image) it is suggested to backup
  65        permanent ethernet MAC addresses as they are stored only in U-Boot env storage (SPI or eMMC).
  66        Some boards like EspressoBin have MAC addresses printed on sticker. Some boards got assigned
  67        only one address other may also more than one. To print current MAC addresses run:
  68
  69                # echo $ethaddr
  70                # echo $eth1addr
  71                # echo $eth2addr
  72                # echo $eth3addr
  73                # ...
  74
  75        MAC addresses 00:51:82:11:22:00, 00:51:82:11:22:01, 00:51:82:11:22:02, 00:51:82:11:22:03
  76        and F0:AD:4E:03:64:7F are default hardcoded values found in Marvell's and Armbian U-Boot
  77        forks and therefore *not* unique. Usage of static hardcoded MAC addresses should be avoided.
  78        When original address is lost (e.g. erased by Armbian boot scripts for EspressoBin) it is
  79        suggested to generate new random one.
  80
  81        After flashing new U-Boot version it is suggested to reset U-Boot env variables to default
  82        and then set correct permanent ethernet MAC addresses.
  83
  84                # env default -a
  85                # setenv ethaddr XX:XX:XX:XX:XX:XX
  86                # setenv eth1addr XX:XX:XX:XX:XX:XX
  87                # setenv eth2addr YY:YY:YY:YY:YY:YY
  88                # setenv eth3addr ZZ:ZZ:ZZ:ZZ:ZZ:ZZ
  89                # ...
  90                # saveenv
  91
  92        Where value for ethaddr is required permanent ethernet MAC address and values for ethNaddr
  93        are optional per-port MAC addresses. When optional ethNaddr variables are not defined then
  94        they are inherited from required ethaddr variable. eth1addr contains MAC address for the
  95        wan port, other for particular lan ports.
  96
  97        Recent Linux kernel versions use correct permanent ethernet MAC address from U-Boot env as
  98        U-Boot will inject it into kernel's device-tree.
  99