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 other DB boards (MacchiatoBin, EspressoBin 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.
