Merge tag 'u-boot-stm32-20200616' of https://gitlab.denx.de/u-boot/custodians/u-boot-stm
[platform/kernel/u-boot.git] / doc / README.mediatek
1 # SPDX-License-Identifier: GPL-2.0+
2 #
3 # Copyright (C) 2018 MediaTek Inc.
4 # Ryder Lee <ryder.lee@kernel.org>
5
6
7 This document describes how to compile the U-Boot and how to change U-Boot
8 configuration about the MediaTek SoCs.
9
10
11 Build Procedure
12 ===============
13         -Set the cross compiler:
14
15                 # export CROSS_COMPILE=/path/to/toolchain/arm-linux-gnueabi-
16
17         -Clean-up old residuals:
18
19                 # make mrproper
20
21         -Configure the U-Boot:
22
23                 # make <defconfig_file>
24                 # make
25
26                 - For the MT7623n bananapi R2 board use "mt7623n_bpir2_defconfig"
27                 - For the MT7629 reference board use "mt7629_rfb_defconfig"
28
29
30 Boot sequence
31 =============
32         -Bootrom -> MTK preloader -> U-Boot
33
34                 - MT7623n
35
36         This version of U-Boot doesn't implement SPL. So, MTK preloader binary
37         is needed to boot up:
38
39         https://github.com/BPI-SINOVOIP/BPI-R2-bsp/tree/master/mt-pack/mtk/bpi-r2/bin
40
41
42         -Bootrom -> SPL -> U-Boot
43
44                 - MT7629
45
46
47 Configuration update
48 ====================
49         To update the U-Boot configuration, please refer to doc/README.kconfig
50
51
52 MediaTek image header
53 =====================
54 Currently there are two image headers used for MediaTek chips:
55
56         - BootROM image header. This header is used by the first stage bootloader. It records
57           the desired compatible boot device, integrity information and its load address.
58
59           The on-chip BootROM will firstly verify integrity and compatibility of the bootloader.
60
61           If verification passed, the BootROM will then load the bootloader into on-chip SRAM,
62           and pass control to it.
63
64           Note that this header is actually a combination of three independent headers:
65           Device header, BRLYT header and GFH header.
66
67           Used by U-Boot SPL of MT7629 and preloader of MT7623.
68
69
70         - MediaTek legacy image header. This header was originally used by the legacy image. It
71           basically records the load address, image size and image name.
72
73           After all low level initializations passed, the preloader will locate the LK image and
74           load it into DRAM, and pass control to it.
75
76           Now this header is used by U-Boot of MT7623.
77
78
79 To generate these two headers with mkimage:
80
81         # mkimage -T mtk_image -a <load_addr> -n <option_string> -d <input_file> <image_file>
82
83         - mtk_image means using MediaTek's header generation method.
84
85
86         - load_addr is the load address of this image.
87           For first stage bootloader like U-Boot SPL or preloader, it usually points to the
88           on-chip SRAM.
89
90           For second stage bootloader like U-Boot, it usually points to the DRAM.
91
92
93         - option_string contains options to generate the header.
94
95           The option string is using the follow format:
96                 key1=value1;key2=value2;...
97
98           The following key names are valid:
99                 lk: If lk=1, LK image header is used. Otherwise BootROM image header is used.
100
101                 lkname: The name of the LK image header. The maximum length is 32.
102                         The default value is "U-Boot".
103
104                 media: Desired boot device. The valid values are:
105                 nand : Parallel NAND
106                 snand: Serial NAND
107                 nor  : Serial NOR
108                 emmc : eMMC
109                 sdmmc: SD
110
111            nandinfo: Desired NAND device type, a combination of page size, oob size and
112                      optional device capacity. Valid types are:
113                 2k+64    : for Serial NAND, 2KiB page size + 64B oob size
114                 2k+120   : for Serial NAND, 2KiB page size + 120B oob size
115                 2k+128   : for Serial NAND, 2KiB page size + 128B oob size
116                 4k+256   : for Serial NAND, 4KiB page size + 256B oob size
117                 1g:2k+64 : for Parallel NAND, 2KiB page size + 64B oob size, total 1Gbit size
118                 2g:2k+64 : for Parallel NAND, 2KiB page size + 64B oob size, total 2Gbit size
119                 4g:2k+64 : for Parallel NAND, 2KiB page size + 64B oob size, total 4Gbit size
120                 2g:2k+128: for Parallel NAND, 2KiB page size + 128B oob size, total 2Gbit size
121                 4g:2k+128: for Parallel NAND, 2KiB page size + 128B oob size, total 4Gbit size
122
123
124 MT7629 partitions on Serial NOR
125 ===============================
126
127         Start      End       Size       Description
128         00000000 - 0000ffff: 64KiB      U-Boot SPL
129         00010000 - 0005ffff: 320KiB     U-Boot
130         00060000 - 0006ffff: 64KiB      U-Boot env / MediaTek NVRAM
131         00070000 - 000affff: 256KiB     RF calibration data
132         000b0000 - xxxxxxxx: all left   Firmware image
133
134
135 BPi-R2 (MT7623N) partitions on SD
136 =================================
137         Please note that the last two partitions can vary from different Linux distributions
138         depending on the MBR partition table.
139
140         Start      End       Size       Description
141         00000000 - 000001ff: 512B       Device header (with MBR partition table)
142         00000200 - 000007ff: 1536B      BRLYT header
143         00000800 - 0004ffff: 318KiB     Preloader (with GFH header)
144         00050000 - 000fffff: 704KiB     U-Boot
145         00100000 - 063fffff: 99MiB      Reserved
146         06400000 - 163fffff: 256MiB     Partition 1 (FAT32)
147         16400000 - xxxxxxxx: all left   Partition 2 (ext4)
148
149
150 Upgrading notice on Serial NOR
151 ==============================
152 Example: MT7629
153
154         The command sf is used to operate the Serial NOR device:
155
156         - To probe current NOR flash:
157
158                 # sf probe
159
160         - To erase a region:
161
162                 # sf erase <offset> <len>
163
164         - To write data to an offset:
165
166                 # sf write <data_addr> <offset> <len>
167
168         - To boot kernel:
169
170                 # bootm 0x300b0000
171
172         The memory address range 0x30000000 - 0x3fffffff is mapped to the NOR flash.
173         The DRAM starts at 0x40000000.
174
175         Please note that the output binary u-boot-mtk.bin is a combination of SPL and U-Boot,
176         and it should be write to beginning of the flash.
177
178         Otherwise you should use standalone files:
179
180                 spl/u-boot-spl-mtk.bin for SPL,
181                 u-boot.img for U-Boot.
182
183
184 Upgrading notice on SD / eMMC
185 =============================
186 Example: MT7623
187
188         Normally only Preloader and U-Boot can be upgraded within U-Boot, and other partitions
189         should be written in PC.
190
191         - To probe current SD card / eMMC:
192
193                 # mmc dev 0 for eMMC
194                 # mmc dev 1 for SD
195
196         - To erase a region:
197
198                 # mmc erase <blk_offset> <blk_num>
199
200         - To write data to a block offset:
201
202                 # mmc write <data_addr> <blk_offset> <blk_num>
203
204         - To load kernel image from partition 1:
205
206                 # fatload mmc 0:1 <load_address> <path_to_kernel_uImage> for eMMC
207                 # fatload mmc 1:1 <load_address> <path_to_kernel_uImage> for SD
208
209         - To boot kernel:
210
211                 # bootm <load_address>
212
213         The DRAM starts at 0x80000000.
214
215         Please note that we use block offset and block count for SD card, not the byte offset.
216         The block size is always 512 bytes for SD card.
217
218
219 Documentation
220 =============
221         http://wiki.banana-pi.org/Banana_Pi_BPI-R2