Igal Liberman | e02e632 | 2017-06-13 10:35:44 +0300 | [diff] [blame] | 1 | Marvell U-Boot Build Instructions |
| 2 | ================================= |
| 3 | |
| 4 | This document describes how to compile the U-Boot and how to change U-Boot configuration |
| 5 | |
| 6 | Build Procedure |
| 7 | ---------------- |
| 8 | 1. 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 | |
| 14 | 2. Set the cross compiler: |
| 15 | |
Pali Rohár | a26c150 | 2020-08-27 15:01:28 +0200 | [diff] [blame] | 16 | # sudo apt-get install gcc-aarch64-linux-gnu |
| 17 | # export CROSS_COMPILE=aarch64-linux-gnu- |
Igal Liberman | e02e632 | 2017-06-13 10:35:44 +0300 | [diff] [blame] | 18 | |
| 19 | 3. Clean-up old residuals: |
| 20 | |
| 21 | # make mrproper |
| 22 | |
| 23 | 4. 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 EsspressoBin use "make mvebu_espressobin-88f3720_defconfig" |
| 31 | |
| 32 | 5. Configure the device-tree and build the U-Boot image: |
| 33 | |
Pali Rohár | a26c150 | 2020-08-27 15:01:28 +0200 | [diff] [blame] | 34 | For the Armada-70x0/80x0 DB board compile u-boot and set the required device-tree using: |
Igal Liberman | e02e632 | 2017-06-13 10:35:44 +0300 | [diff] [blame] | 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 | |
Pali Rohár | a26c150 | 2020-08-27 15:01:28 +0200 | [diff] [blame] | 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 | |
Igal Liberman | e02e632 | 2017-06-13 10:35:44 +0300 | [diff] [blame] | 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 |
Pali Rohár | a26c150 | 2020-08-27 15:01:28 +0200 | [diff] [blame] | 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 |
Igal Liberman | e02e632 | 2017-06-13 10:35:44 +0300 | [diff] [blame] | 56 | |
| 57 | Configuration update |
| 58 | --------------------- |
| 59 | To update the U-Boot configuration, please refer to doc/README.kconfig |
| 60 | |
Pali Rohár | a26c150 | 2020-08-27 15:01:28 +0200 | [diff] [blame] | 61 | |
| 62 | Permanent 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 address as it is stored only in U-Boot env storage (SPI or eMMC). |
| 66 | Some boards like EspressoBin have MAC address printed on sticker. To print current MAC |
| 67 | address run: |
| 68 | |
| 69 | # echo $ethaddr |
| 70 | |
| 71 | 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 |
| 72 | and F0:AD:4E:03:64:7F are default hardcoded values found in Marvell's and Armbian U-Boot |
| 73 | forks and therefore *not* unique. Usage of static hardcoded MAC addresses should be avoided. |
| 74 | When original address is lost (e.g. erased by Armbian boot scripts for EspressoBin) it is |
| 75 | suggested to generate new random one. |
| 76 | |
| 77 | After flashing new U-Boot version it is suggested to reset U-Boot env variables to default |
| 78 | and then set correct permanent ethernet MAC address. |
| 79 | |
| 80 | # env default -a |
| 81 | # setenv ethaddr XX:XX:XX:XX:XX:XX |
| 82 | # saveenv |
| 83 | |
| 84 | Where XX:XX:XX:XX:XX:XX is permanent ethernet MAC address. |
| 85 | |
| 86 | Recent Linux kernel versions use correct permanent ethernet MAC address from U-Boot env as |
| 87 | U-Boot will inject it into kernel's device-tree. |