Marvell U-Boot Build Instructions
=================================

This document describes how to compile the U-Boot and how to change U-Boot configuration

Build Procedure
----------------
1. Install required packages:

		# sudo apt-get install libssl-dev
		# sudo apt-get install device-tree-compiler
		# sudo apt-get install swig libpython-dev

2. Set the cross compiler:

		# sudo apt-get install gcc-aarch64-linux-gnu
		# export CROSS_COMPILE=aarch64-linux-gnu-

3. Clean-up old residuals:

		# make mrproper

4. Configure the U-Boot:

		# make <defconfig_file>

	- For the Armada-70x0/80x0 DB board use "mvebu_db_armada8k_defconfig"
	- For the Armada-80x0 MacchiatoBin use "make mvebu_mcbin-88f8040_defconfig"
	- For the Armada-3700 DB board use "make mvebu_db-88f3720_defconfig"
	- For the Armada-3700 EspressoBin use "make mvebu_espressobin-88f3720_defconfig"

5. Configure the device-tree and build the U-Boot image:

	For the Armada-70x0/80x0 DB board compile u-boot and set the required device-tree using:

		# make DEVICE_TREE=<name>

	NOTE:
	Compilation with "mvebu_db_armada8k_defconfig" requires explicitly exporting DEVICE_TREE
	for the requested board.
	By default, u-boot is compiled with armada-8040-db device-tree.
        Using A80x0 device-tree on A70x0 might break the device.
        In order to prevent this, the required device-tree MUST be set during compilation.
        All device-tree files are located in ./arch/arm/dts/ folder.

	For the EspressoBin board with populated eMMC device use
		# make DEVICE_TREE=armada-3720-espressobin-emmc

	For other DB boards (MacchiatoBin, EspressoBin without soldered eMMC and 3700 DB board)
	compile u-boot with just default device-tree from defconfig using:

		# make

	NOTE:
	The u-boot.bin should not be used as a stand-alone image.
	The ARM Trusted Firmware (ATF) build process uses this image to generate the
	flash image. See TF-A Build Instructions for Marvell Platforms for more details at:
	https://trustedfirmware-a.readthedocs.io/en/latest/plat/marvell/armada/build.html

Configuration update
---------------------
	To update the U-Boot configuration, please refer to doc/README.kconfig


Permanent ethernet MAC address
-------------------------------
	Prior flashing new U-Boot version (as part of ATF image) it is suggested to backup
	permanent ethernet MAC addresses as they are stored only in U-Boot env storage (SPI or eMMC).
	Some boards like EspressoBin have MAC addresses printed on sticker. Some boards got assigned
	only one address other may also more than one. To print current MAC addresses run:

		# echo $ethaddr
		# echo $eth1addr
		# echo $eth2addr
		# echo $eth3addr
		# ...

	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
	and F0:AD:4E:03:64:7F are default hardcoded values found in Marvell's and Armbian U-Boot
	forks and therefore *not* unique. Usage of static hardcoded MAC addresses should be avoided.
	When original address is lost (e.g. erased by Armbian boot scripts for EspressoBin) it is
	suggested to generate new random one.

	After flashing new U-Boot version it is suggested to reset U-Boot env variables to default
	and then set correct permanent ethernet MAC addresses.

		# env default -a
		# setenv ethaddr XX:XX:XX:XX:XX:XX
		# setenv eth1addr XX:XX:XX:XX:XX:XX
		# setenv eth2addr YY:YY:YY:YY:YY:YY
		# setenv eth3addr ZZ:ZZ:ZZ:ZZ:ZZ:ZZ
		# ...
		# saveenv

	Where value for ethaddr is required permanent ethernet MAC address and values for ethNaddr
	are optional per-port MAC addresses. When optional ethNaddr variables are not defined then
	they are inherited from required ethaddr variable. eth1addr contains MAC address for the
	wan port, other for particular lan ports.

	Recent Linux kernel versions use correct permanent ethernet MAC address from U-Boot env as
	U-Boot will inject it into kernel's device-tree.
