]>
Commit | Line | Data |
---|---|---|
b6518b1e IL |
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 | ||
64430efe T |
16 | # sudo apt-get install gcc-aarch64-linux-gnu |
17 | # export CROSS_COMPILE=aarch64-linux-gnu- | |
b6518b1e IL |
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" | |
3dee18e2 | 30 | - For the Armada-3700 EspressoBin use "make mvebu_espressobin-88f3720_defconfig" |
b6518b1e IL |
31 | |
32 | 5. Configure the device-tree and build the U-Boot image: | |
33 | ||
64430efe | 34 | For the Armada-70x0/80x0 DB board compile u-boot and set the required device-tree using: |
b6518b1e IL |
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 | ||
c5c4b698 T |
46 | For other DB boards (MacchiatoBin, EspressoBin and 3700 DB board) compile u-boot with |
47 | just default device-tree from defconfig using: | |
64430efe T |
48 | |
49 | # make | |
50 | ||
b6518b1e IL |
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 | |
64430efe T |
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 | |
b6518b1e IL |
56 | |
57 | Configuration update | |
58 | --------------------- | |
59 | To update the U-Boot configuration, please refer to doc/README.kconfig | |
60 | ||
64430efe T |
61 | |
62 | Permanent ethernet MAC address | |
63 | ------------------------------- | |
64 | Prior flashing new U-Boot version (as part of ATF image) it is suggested to backup | |
3dee18e2 T |
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: | |
64430efe T |
68 | |
69 | # echo $ethaddr | |
3dee18e2 T |
70 | # echo $eth1addr |
71 | # echo $eth2addr | |
72 | # echo $eth3addr | |
73 | # ... | |
64430efe T |
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 | |
3dee18e2 | 82 | and then set correct permanent ethernet MAC addresses. |
64430efe T |
83 | |
84 | # env default -a | |
85 | # setenv ethaddr XX:XX:XX:XX:XX:XX | |
3dee18e2 T |
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 | # ... | |
64430efe T |
90 | # saveenv |
91 | ||
3dee18e2 T |
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. | |
64430efe T |
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. |