fs/fat/fat_write.c: Fix GCC 4.6 warnings
[platform/kernel/u-boot.git] / doc / README.m28
1 DENX M28EVK
2 ===========
3
4 This document describes the DENX M28/M28EVK U-Boot port. This document mostly
5 covers topics related to making the module/board bootable.
6
7 Terminology
8 -----------
9
10 The dollar symbol ($) introduces a snipped of shell code. This shall be typed
11 into the unix command prompt in U-Boot source code root directory.
12
13 The (=>) introduces a snipped of code that should by typed into U-Boot command
14 prompt.
15
16 Contents
17 --------
18
19 0) Files of the M28/M28EVK port
20 1) Prerequisites
21 2) Compiling U-Boot for M28
22 3) Installation of U-Boot for M28EVK to SD card
23 4) Installation of U-Boot for M28 to NAND flash
24
25 0) Files of the M28/M28EVK port
26 -------------------------------
27
28 arch/arm/cpu/arm926ejs/mx28/    - The CPU support code for the Freescale i.MX28
29 arch/arm/include/asm/arch-mx28/ - Header files for the Freescale i.MX28
30 board/denx/m28evk/              - M28EVK board specific files
31 include/configs/m28evk.h        - M28EVK configuration file
32
33 1) Prerequisites
34 ----------------
35
36 To make the M28 module or the M28 module or M28EVK board bootable, some tools
37 are necessary. The first one is the "elftosb" tool distributed by Freescale
38 Semiconductor. The other tool is the "mxsboot" tool found in U-Boot source tree.
39
40 Firstly, obtain the elftosb archive from the following location:
41
42         http://foss.doredevelopment.dk/mirrors/imx/elftosb-10.12.01.tar.gz
43
44 We use a $VER variable here to denote the current version. At the time of
45 writing of this document, that is "10.12.01". To obtain the file from command
46 line, use:
47
48         $ VER="10.12.01"
49         $ wget http://foss.doredevelopment.dk/mirrors/imx/elftosb-${VER}.tar.gz
50
51 Extract the file:
52
53         $ tar xzf elftosb-${VER}.tar.gz
54
55 Compile the file. We need to manually tell the linker to use also libm:
56
57         $ cd elftosb-${VER}/
58         $ make LIBS="-lstdc++ -lm" elftosb
59
60 Optionally, remove debugging symbols from elftosb:
61
62         $ strip bld/linux/elftosb
63
64 Finally, install the "elftosb" binary. The "install" target is missing, so just
65 copy the binary by hand:
66
67         $ sudo cp bld/linux/elftosb /usr/local/bin/
68
69 Make sure the "elftosb" binary can be found in your $PATH, in this case this
70 means "/usr/local/bin/" has to be in your $PATH.
71
72 2) Compiling U-Boot for M28
73 ---------------------------
74
75 Compiling the U-Boot for M28 is straightforward and done as compiling U-Boot
76 for any other ARM device. For cross-compiler setup, please refer to ELDK5.0
77 documentation. First, clean up the source code:
78
79         $ make mrproper
80
81 Next, configure U-Boot for M28EVK:
82
83         $ make m28evk_config
84
85 Lastly, compile U-Boot and prepare a "BootStream". The "BootStream" is a special
86 type of file, which the i.MX28 CPU can boot. This is handled by the following
87 command:
88
89         $ make u-boot.sb
90
91 HINT: To speed-up the build process, you can add -j<N>, where N is number of
92       compiler instances that'll run in parallel.
93
94 The code produces "u-boot.sb" file. This file needs to be augmented with a
95 proper header to allow successful boot from SD or NAND. Adding the header is
96 discussed in the following chapters.
97
98 3) Installation of U-Boot for M28EVK to SD card
99 -----------------------------------------------
100
101 To boot an M28 from SD, set the boot mode DIP switches according to i.MX28
102 manual chapter 12.2.1 (Table 12-2), PORT=SSP0, SD/MMC master on SSP0, 3.3V.
103
104 An SD card the i.MX28 CPU can use to boot U-Boot must contain a DOS partition
105 table, which in turn carries a partition of special type and which contains a
106 special header. The rest of partitions in the DOS partition table can be used
107 by the user.
108
109 To prepare such partition, use your favourite partitioning tool. The partition
110 must have the following parameters:
111
112         * Start sector .......... sector 2048
113         * Partition size ........ at least 1024 kb
114         * Partition type ........ 0x53 (sometimes "OnTrack DM6 Aux3")
115
116 For example in Linux fdisk, the sequence for a clear card follows. Be sure to
117 run fdisk with the option "-u=sectors" to set units to sectors:
118
119         * o ..................... create a clear partition table
120         * n ..................... create new partition
121                 * p ............. primary partition
122                 * 1 ............. first partition
123                 * 2048 .......... first sector is 2048
124                 * +1M ........... make the partition 1Mb big
125         * t 1 ................... change first partition ID
126                 * 53 ............ change the ID to 0x53 (OnTrack DM6 Aux3)
127         * <create other partitions>
128         * w ..................... write partition table to disk
129
130 The partition layout is ready, next the special partition must be filled with
131 proper contents. The contents is generated by running the following command (see
132 chapter 2)):
133
134         $ ./tools/mxsboot sd u-boot.sb u-boot.sd
135
136 The resulting file, "u-boot.sd", shall then be written to the partition. In this
137 case, we assume the first partition of the SD card is /dev/mmcblk0p1:
138
139         $ dd if=u-boot.sd of=/dev/mmcblk0p1
140
141 Last step is to insert the card into M28EVK and boot.
142
143 NOTE: If the user needs to adjust the start sector, the "mxsboot" tool contains
144       a "-p" switch for that purpose. The "-p" switch takes the sector number as
145       an argument.
146
147 4) Installation of U-Boot for M28 to NAND flash
148 -----------------------------------------------
149
150 To boot an M28 from NAND, set the boot mode DIP switches according to i.MX28
151 manual chapter 12.2.1 (Table 12-2), PORT=GPMI, NAND 1.8 V.
152
153 There are two possibilities when preparing an image writable to NAND flash.
154
155         I) The NAND wasn't written at all yet or the BCB is broken
156         ----------------------------------------------------------
157            In this case, both BCB (FCB and DBBT) and firmware needs to be
158            written to NAND. To generate NAND image containing all these,
159            there is a tool called "mxsboot" in the "tools/" directory. The tool
160            is invoked on "u-boot.sb" file from chapter 2):
161
162                  $ ./tools/mxsboot nand u-boot.sb u-boot.nand
163
164            NOTE: The above invokation works for NAND flash with geometry of
165                  2048b per page, 64b OOB data, 128kb erase size. If your chip
166                  has a different geometry, please use:
167
168                  -w <size>      change page size (default 2048 b)
169                  -o <size>      change oob size (default 64 b)
170                  -e <size>      change erase size (default 131072 b)
171
172                  The geometry information can be obtained from running U-Boot
173                  on M28 by issuing the "nand info" command.
174
175            The resulting file, "u-boot.nand" can be written directly to NAND
176            from the U-Boot prompt. To simplify the process, the U-Boot default
177            environment contains script "update_nand_full" to update the system.
178
179            This script expects a working TFTP server containing the file
180            "u-boot.nand" in it's root directory. This can be changed by
181            adjusting the "update_nand_full_filename" varible.
182
183            To update the system, run the following in U-Boot prompt:
184
185                  => run update_nand_full
186
187            In case you would only need to update the bootloader in future,
188            see II) below.
189
190         II) The NAND was already written with a good BCB
191         ------------------------------------------------
192            This part applies after the part I) above was done at least once.
193
194            If part I) above was done correctly already, there is no need to
195            write the FCB and DBBT parts of NAND again. It's possible to upgrade
196            only the bootloader image.
197
198            To simplify the process of firmware update, the U-Boot default
199            environment contains script "update_nand_firmware" to update only
200            the firmware, without rewriting FCB and DBBT.
201
202            This script expects a working TFTP server containing the file
203            "u-boot.sb" in it's root directory. This can be changed by
204            adjusting the "update_nand_firmware_filename" varible.
205
206            To update the system, run the following in U-Boot prompt:
207
208                  => run update_nand_firmware
209
210         III) Special settings for the update scripts
211         --------------------------------------------
212            There is a slight possibility of the user wanting to adjust the
213            STRIDE and COUNT options of the NAND boot. For description of these,
214            see i.MX28 manual section 12.12.1.2 and 12.12.1.3.
215
216            The update scripts take this possibility into account. In case the
217            user changes STRIDE by blowing fuses, the user also has to change
218            "update_nand_stride" variable. In case the user changes COUNT by
219            blowing fuses, the user also has to change "update_nand_count"
220            variable for the update scripts to work correctly.
221
222            In case the user needs to boot a firmware image bigger than 1Mb, the
223            user has to adjust the "update_nand_firmware_maxsz" variable for the
224            update scripts to work properly.