~pmdj/ubuntu/trusty/qemu/2.9+applesmc+fadtv3

« back to all changes in this revision

Viewing changes to roms/u-boot/README

  • Committer: Phil Dennis-Jordan
  • Date: 2017-07-21 08:03:43 UTC
  • mfrom: (1.1.1)
  • Revision ID: phil@philjordan.eu-20170721080343-2yr2vdj7713czahv
New upstream release 2.9.0.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#
 
2
# (C) Copyright 2000 - 2013
 
3
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
 
4
#
 
5
# SPDX-License-Identifier:      GPL-2.0+
 
6
#
 
7
 
 
8
Summary:
 
9
========
 
10
 
 
11
This directory contains the source code for U-Boot, a boot loader for
 
12
Embedded boards based on PowerPC, ARM, MIPS and several other
 
13
processors, which can be installed in a boot ROM and used to
 
14
initialize and test the hardware or to download and run application
 
15
code.
 
16
 
 
17
The development of U-Boot is closely related to Linux: some parts of
 
18
the source code originate in the Linux source tree, we have some
 
19
header files in common, and special provision has been made to
 
20
support booting of Linux images.
 
21
 
 
22
Some attention has been paid to make this software easily
 
23
configurable and extendable. For instance, all monitor commands are
 
24
implemented with the same call interface, so that it's very easy to
 
25
add new commands. Also, instead of permanently adding rarely used
 
26
code (for instance hardware test utilities) to the monitor, you can
 
27
load and run it dynamically.
 
28
 
 
29
 
 
30
Status:
 
31
=======
 
32
 
 
33
In general, all boards for which a configuration option exists in the
 
34
Makefile have been tested to some extent and can be considered
 
35
"working". In fact, many of them are used in production systems.
 
36
 
 
37
In case of problems see the CHANGELOG and CREDITS files to find out
 
38
who contributed the specific port. The boards.cfg file lists board
 
39
maintainers.
 
40
 
 
41
Note: There is no CHANGELOG file in the actual U-Boot source tree;
 
42
it can be created dynamically from the Git log using:
 
43
 
 
44
        make CHANGELOG
 
45
 
 
46
 
 
47
Where to get help:
 
48
==================
 
49
 
 
50
In case you have questions about, problems with or contributions for
 
51
U-Boot you should send a message to the U-Boot mailing list at
 
52
<u-boot@lists.denx.de>. There is also an archive of previous traffic
 
53
on the mailing list - please search the archive before asking FAQ's.
 
54
Please see http://lists.denx.de/pipermail/u-boot and
 
55
http://dir.gmane.org/gmane.comp.boot-loaders.u-boot
 
56
 
 
57
 
 
58
Where to get source code:
 
59
=========================
 
60
 
 
61
The U-Boot source code is maintained in the git repository at
 
62
git://www.denx.de/git/u-boot.git ; you can browse it online at
 
63
http://www.denx.de/cgi-bin/gitweb.cgi?p=u-boot.git;a=summary
 
64
 
 
65
The "snapshot" links on this page allow you to download tarballs of
 
66
any version you might be interested in. Official releases are also
 
67
available for FTP download from the ftp://ftp.denx.de/pub/u-boot/
 
68
directory.
 
69
 
 
70
Pre-built (and tested) images are available from
 
71
ftp://ftp.denx.de/pub/u-boot/images/
 
72
 
 
73
 
 
74
Where we come from:
 
75
===================
 
76
 
 
77
- start from 8xxrom sources
 
78
- create PPCBoot project (http://sourceforge.net/projects/ppcboot)
 
79
- clean up code
 
80
- make it easier to add custom boards
 
81
- make it possible to add other [PowerPC] CPUs
 
82
- extend functions, especially:
 
83
  * Provide extended interface to Linux boot loader
 
84
  * S-Record download
 
85
  * network boot
 
86
  * PCMCIA / CompactFlash / ATA disk / SCSI ... boot
 
87
- create ARMBoot project (http://sourceforge.net/projects/armboot)
 
88
- add other CPU families (starting with ARM)
 
89
- create U-Boot project (http://sourceforge.net/projects/u-boot)
 
90
- current project page: see http://www.denx.de/wiki/U-Boot
 
91
 
 
92
 
 
93
Names and Spelling:
 
94
===================
 
95
 
 
96
The "official" name of this project is "Das U-Boot". The spelling
 
97
"U-Boot" shall be used in all written text (documentation, comments
 
98
in source files etc.). Example:
 
99
 
 
100
        This is the README file for the U-Boot project.
 
101
 
 
102
File names etc. shall be based on the string "u-boot". Examples:
 
103
 
 
104
        include/asm-ppc/u-boot.h
 
105
 
 
106
        #include <asm/u-boot.h>
 
107
 
 
108
Variable names, preprocessor constants etc. shall be either based on
 
109
the string "u_boot" or on "U_BOOT". Example:
 
110
 
 
111
        U_BOOT_VERSION          u_boot_logo
 
112
        IH_OS_U_BOOT            u_boot_hush_start
 
113
 
 
114
 
 
115
Versioning:
 
116
===========
 
117
 
 
118
Starting with the release in October 2008, the names of the releases
 
119
were changed from numerical release numbers without deeper meaning
 
120
into a time stamp based numbering. Regular releases are identified by
 
121
names consisting of the calendar year and month of the release date.
 
122
Additional fields (if present) indicate release candidates or bug fix
 
123
releases in "stable" maintenance trees.
 
124
 
 
125
Examples:
 
126
        U-Boot v2009.11     - Release November 2009
 
127
        U-Boot v2009.11.1   - Release 1 in version November 2009 stable tree
 
128
        U-Boot v2010.09-rc1 - Release candiate 1 for September 2010 release
 
129
 
 
130
 
 
131
Directory Hierarchy:
 
132
====================
 
133
 
 
134
/arch                   Architecture specific files
 
135
  /arc                  Files generic to ARC architecture
 
136
    /cpu                CPU specific files
 
137
      /arc700           Files specific to ARC 700 CPUs
 
138
    /lib                Architecture specific library files
 
139
  /arm                  Files generic to ARM architecture
 
140
    /cpu                CPU specific files
 
141
      /arm720t          Files specific to ARM 720 CPUs
 
142
      /arm920t          Files specific to ARM 920 CPUs
 
143
        /at91           Files specific to Atmel AT91RM9200 CPU
 
144
        /imx            Files specific to Freescale MC9328 i.MX CPUs
 
145
        /s3c24x0        Files specific to Samsung S3C24X0 CPUs
 
146
      /arm926ejs        Files specific to ARM 926 CPUs
 
147
      /arm1136          Files specific to ARM 1136 CPUs
 
148
      /pxa              Files specific to Intel XScale PXA CPUs
 
149
      /sa1100           Files specific to Intel StrongARM SA1100 CPUs
 
150
    /lib                Architecture specific library files
 
151
  /avr32                Files generic to AVR32 architecture
 
152
    /cpu                CPU specific files
 
153
    /lib                Architecture specific library files
 
154
  /blackfin             Files generic to Analog Devices Blackfin architecture
 
155
    /cpu                CPU specific files
 
156
    /lib                Architecture specific library files
 
157
  /m68k                 Files generic to m68k architecture
 
158
    /cpu                CPU specific files
 
159
      /mcf52x2          Files specific to Freescale ColdFire MCF52x2 CPUs
 
160
      /mcf5227x         Files specific to Freescale ColdFire MCF5227x CPUs
 
161
      /mcf532x          Files specific to Freescale ColdFire MCF5329 CPUs
 
162
      /mcf5445x         Files specific to Freescale ColdFire MCF5445x CPUs
 
163
      /mcf547x_8x       Files specific to Freescale ColdFire MCF547x_8x CPUs
 
164
    /lib                Architecture specific library files
 
165
  /microblaze           Files generic to microblaze architecture
 
166
    /cpu                CPU specific files
 
167
    /lib                Architecture specific library files
 
168
  /mips                 Files generic to MIPS architecture
 
169
    /cpu                CPU specific files
 
170
      /mips32           Files specific to MIPS32 CPUs
 
171
      /mips64           Files specific to MIPS64 CPUs
 
172
    /lib                Architecture specific library files
 
173
  /nds32                Files generic to NDS32 architecture
 
174
    /cpu                CPU specific files
 
175
      /n1213            Files specific to Andes Technology N1213 CPUs
 
176
    /lib                Architecture specific library files
 
177
  /nios2                Files generic to Altera NIOS2 architecture
 
178
    /cpu                CPU specific files
 
179
    /lib                Architecture specific library files
 
180
  /openrisc             Files generic to OpenRISC architecture
 
181
    /cpu                CPU specific files
 
182
    /lib                Architecture specific library files
 
183
  /powerpc              Files generic to PowerPC architecture
 
184
    /cpu                CPU specific files
 
185
      /74xx_7xx         Files specific to Freescale MPC74xx and 7xx CPUs
 
186
      /mpc5xx           Files specific to Freescale MPC5xx CPUs
 
187
      /mpc5xxx          Files specific to Freescale MPC5xxx CPUs
 
188
      /mpc8xx           Files specific to Freescale MPC8xx CPUs
 
189
      /mpc824x          Files specific to Freescale MPC824x CPUs
 
190
      /mpc8260          Files specific to Freescale MPC8260 CPUs
 
191
      /mpc85xx          Files specific to Freescale MPC85xx CPUs
 
192
      /ppc4xx           Files specific to AMCC PowerPC 4xx CPUs
 
193
    /lib                Architecture specific library files
 
194
  /sh                   Files generic to SH architecture
 
195
    /cpu                CPU specific files
 
196
      /sh2              Files specific to sh2 CPUs
 
197
      /sh3              Files specific to sh3 CPUs
 
198
      /sh4              Files specific to sh4 CPUs
 
199
    /lib                Architecture specific library files
 
200
  /sparc                Files generic to SPARC architecture
 
201
    /cpu                CPU specific files
 
202
      /leon2            Files specific to Gaisler LEON2 SPARC CPU
 
203
      /leon3            Files specific to Gaisler LEON3 SPARC CPU
 
204
    /lib                Architecture specific library files
 
205
  /x86                  Files generic to x86 architecture
 
206
    /cpu                CPU specific files
 
207
    /lib                Architecture specific library files
 
208
/api                    Machine/arch independent API for external apps
 
209
/board                  Board dependent files
 
210
/common                 Misc architecture independent functions
 
211
/disk                   Code for disk drive partition handling
 
212
/doc                    Documentation (don't expect too much)
 
213
/drivers                Commonly used device drivers
 
214
/dts                    Contains Makefile for building internal U-Boot fdt.
 
215
/examples               Example code for standalone applications, etc.
 
216
/fs                     Filesystem code (cramfs, ext2, jffs2, etc.)
 
217
/include                Header Files
 
218
/lib                    Files generic to all architectures
 
219
  /libfdt               Library files to support flattened device trees
 
220
  /lzma                 Library files to support LZMA decompression
 
221
  /lzo                  Library files to support LZO decompression
 
222
/net                    Networking code
 
223
/post                   Power On Self Test
 
224
/spl                    Secondary Program Loader framework
 
225
/tools                  Tools to build S-Record or U-Boot images, etc.
 
226
 
 
227
Software Configuration:
 
228
=======================
 
229
 
 
230
Configuration is usually done using C preprocessor defines; the
 
231
rationale behind that is to avoid dead code whenever possible.
 
232
 
 
233
There are two classes of configuration variables:
 
234
 
 
235
* Configuration _OPTIONS_:
 
236
  These are selectable by the user and have names beginning with
 
237
  "CONFIG_".
 
238
 
 
239
* Configuration _SETTINGS_:
 
240
  These depend on the hardware etc. and should not be meddled with if
 
241
  you don't know what you're doing; they have names beginning with
 
242
  "CONFIG_SYS_".
 
243
 
 
244
Later we will add a configuration tool - probably similar to or even
 
245
identical to what's used for the Linux kernel. Right now, we have to
 
246
do the configuration by hand, which means creating some symbolic
 
247
links and editing some configuration files. We use the TQM8xxL boards
 
248
as an example here.
 
249
 
 
250
 
 
251
Selection of Processor Architecture and Board Type:
 
252
---------------------------------------------------
 
253
 
 
254
For all supported boards there are ready-to-use default
 
255
configurations available; just type "make <board_name>_config".
 
256
 
 
257
Example: For a TQM823L module type:
 
258
 
 
259
        cd u-boot
 
260
        make TQM823L_config
 
261
 
 
262
For the Cogent platform, you need to specify the CPU type as well;
 
263
e.g. "make cogent_mpc8xx_config". And also configure the cogent
 
264
directory according to the instructions in cogent/README.
 
265
 
 
266
 
 
267
Sandbox Environment:
 
268
--------------------
 
269
 
 
270
U-Boot can be built natively to run on a Linux host using the 'sandbox'
 
271
board. This allows feature development which is not board- or architecture-
 
272
specific to be undertaken on a native platform. The sandbox is also used to
 
273
run some of U-Boot's tests.
 
274
 
 
275
See board/sandbox/sandbox/README.sandbox for more details.
 
276
 
 
277
 
 
278
Configuration Options:
 
279
----------------------
 
280
 
 
281
Configuration depends on the combination of board and CPU type; all
 
282
such information is kept in a configuration file
 
283
"include/configs/<board_name>.h".
 
284
 
 
285
Example: For a TQM823L module, all configuration settings are in
 
286
"include/configs/TQM823L.h".
 
287
 
 
288
 
 
289
Many of the options are named exactly as the corresponding Linux
 
290
kernel configuration options. The intention is to make it easier to
 
291
build a config tool - later.
 
292
 
 
293
 
 
294
The following options need to be configured:
 
295
 
 
296
- CPU Type:     Define exactly one, e.g. CONFIG_MPC85XX.
 
297
 
 
298
- Board Type:   Define exactly one, e.g. CONFIG_MPC8540ADS.
 
299
 
 
300
- CPU Daughterboard Type: (if CONFIG_ATSTK1000 is defined)
 
301
                Define exactly one, e.g. CONFIG_ATSTK1002
 
302
 
 
303
- CPU Module Type: (if CONFIG_COGENT is defined)
 
304
                Define exactly one of
 
305
                CONFIG_CMA286_60_OLD
 
306
--- FIXME --- not tested yet:
 
307
                CONFIG_CMA286_60, CONFIG_CMA286_21, CONFIG_CMA286_60P,
 
308
                CONFIG_CMA287_23, CONFIG_CMA287_50
 
309
 
 
310
- Motherboard Type: (if CONFIG_COGENT is defined)
 
311
                Define exactly one of
 
312
                CONFIG_CMA101, CONFIG_CMA102
 
313
 
 
314
- Motherboard I/O Modules: (if CONFIG_COGENT is defined)
 
315
                Define one or more of
 
316
                CONFIG_CMA302
 
317
 
 
318
- Motherboard Options: (if CONFIG_CMA101 or CONFIG_CMA102 are defined)
 
319
                Define one or more of
 
320
                CONFIG_LCD_HEARTBEAT    - update a character position on
 
321
                                          the LCD display every second with
 
322
                                          a "rotator" |\-/|\-/
 
323
 
 
324
- Board flavour: (if CONFIG_MPC8260ADS is defined)
 
325
                CONFIG_ADSTYPE
 
326
                Possible values are:
 
327
                        CONFIG_SYS_8260ADS      - original MPC8260ADS
 
328
                        CONFIG_SYS_8266ADS      - MPC8266ADS
 
329
                        CONFIG_SYS_PQ2FADS      - PQ2FADS-ZU or PQ2FADS-VR
 
330
                        CONFIG_SYS_8272ADS      - MPC8272ADS
 
331
 
 
332
- Marvell Family Member
 
333
                CONFIG_SYS_MVFS         - define it if you want to enable
 
334
                                          multiple fs option at one time
 
335
                                          for marvell soc family
 
336
 
 
337
- MPC824X Family Member (if CONFIG_MPC824X is defined)
 
338
                Define exactly one of
 
339
                CONFIG_MPC8240, CONFIG_MPC8245
 
340
 
 
341
- 8xx CPU Options: (if using an MPC8xx CPU)
 
342
                CONFIG_8xx_GCLK_FREQ    - deprecated: CPU clock if
 
343
                                          get_gclk_freq() cannot work
 
344
                                          e.g. if there is no 32KHz
 
345
                                          reference PIT/RTC clock
 
346
                CONFIG_8xx_OSCLK        - PLL input clock (either EXTCLK
 
347
                                          or XTAL/EXTAL)
 
348
 
 
349
- 859/866/885 CPU options: (if using a MPC859 or MPC866 or MPC885 CPU):
 
350
                CONFIG_SYS_8xx_CPUCLK_MIN
 
351
                CONFIG_SYS_8xx_CPUCLK_MAX
 
352
                CONFIG_8xx_CPUCLK_DEFAULT
 
353
                        See doc/README.MPC866
 
354
 
 
355
                CONFIG_SYS_MEASURE_CPUCLK
 
356
 
 
357
                Define this to measure the actual CPU clock instead
 
358
                of relying on the correctness of the configured
 
359
                values. Mostly useful for board bringup to make sure
 
360
                the PLL is locked at the intended frequency. Note
 
361
                that this requires a (stable) reference clock (32 kHz
 
362
                RTC clock or CONFIG_SYS_8XX_XIN)
 
363
 
 
364
                CONFIG_SYS_DELAYED_ICACHE
 
365
 
 
366
                Define this option if you want to enable the
 
367
                ICache only when Code runs from RAM.
 
368
 
 
369
- 85xx CPU Options:
 
370
                CONFIG_SYS_PPC64
 
371
 
 
372
                Specifies that the core is a 64-bit PowerPC implementation (implements
 
373
                the "64" category of the Power ISA). This is necessary for ePAPR
 
374
                compliance, among other possible reasons.
 
375
 
 
376
                CONFIG_SYS_FSL_TBCLK_DIV
 
377
 
 
378
                Defines the core time base clock divider ratio compared to the
 
379
                system clock.  On most PQ3 devices this is 8, on newer QorIQ
 
380
                devices it can be 16 or 32.  The ratio varies from SoC to Soc.
 
381
 
 
382
                CONFIG_SYS_FSL_PCIE_COMPAT
 
383
 
 
384
                Defines the string to utilize when trying to match PCIe device
 
385
                tree nodes for the given platform.
 
386
 
 
387
                CONFIG_SYS_PPC_E500_DEBUG_TLB
 
388
 
 
389
                Enables a temporary TLB entry to be used during boot to work
 
390
                around limitations in e500v1 and e500v2 external debugger
 
391
                support. This reduces the portions of the boot code where
 
392
                breakpoints and single stepping do not work.  The value of this
 
393
                symbol should be set to the TLB1 entry to be used for this
 
394
                purpose.
 
395
 
 
396
                CONFIG_SYS_FSL_ERRATUM_A004510
 
397
 
 
398
                Enables a workaround for erratum A004510.  If set,
 
399
                then CONFIG_SYS_FSL_ERRATUM_A004510_SVR_REV and
 
400
                CONFIG_SYS_FSL_CORENET_SNOOPVEC_COREONLY must be set.
 
401
 
 
402
                CONFIG_SYS_FSL_ERRATUM_A004510_SVR_REV
 
403
                CONFIG_SYS_FSL_ERRATUM_A004510_SVR_REV2 (optional)
 
404
 
 
405
                Defines one or two SoC revisions (low 8 bits of SVR)
 
406
                for which the A004510 workaround should be applied.
 
407
 
 
408
                The rest of SVR is either not relevant to the decision
 
409
                of whether the erratum is present (e.g. p2040 versus
 
410
                p2041) or is implied by the build target, which controls
 
411
                whether CONFIG_SYS_FSL_ERRATUM_A004510 is set.
 
412
 
 
413
                See Freescale App Note 4493 for more information about
 
414
                this erratum.
 
415
 
 
416
                CONFIG_A003399_NOR_WORKAROUND
 
417
                Enables a workaround for IFC erratum A003399. It is only
 
418
                requred during NOR boot.
 
419
 
 
420
                CONFIG_SYS_FSL_CORENET_SNOOPVEC_COREONLY
 
421
 
 
422
                This is the value to write into CCSR offset 0x18600
 
423
                according to the A004510 workaround.
 
424
 
 
425
                CONFIG_SYS_FSL_DSP_DDR_ADDR
 
426
                This value denotes start offset of DDR memory which is
 
427
                connected exclusively to the DSP cores.
 
428
 
 
429
                CONFIG_SYS_FSL_DSP_M2_RAM_ADDR
 
430
                This value denotes start offset of M2 memory
 
431
                which is directly connected to the DSP core.
 
432
 
 
433
                CONFIG_SYS_FSL_DSP_M3_RAM_ADDR
 
434
                This value denotes start offset of M3 memory which is directly
 
435
                connected to the DSP core.
 
436
 
 
437
                CONFIG_SYS_FSL_DSP_CCSRBAR_DEFAULT
 
438
                This value denotes start offset of DSP CCSR space.
 
439
 
 
440
                CONFIG_SYS_FSL_SINGLE_SOURCE_CLK
 
441
                Single Source Clock is clocking mode present in some of FSL SoC's.
 
442
                In this mode, a single differential clock is used to supply
 
443
                clocks to the sysclock, ddrclock and usbclock.
 
444
 
 
445
                CONFIG_SYS_CPC_REINIT_F
 
446
                This CONFIG is defined when the CPC is configured as SRAM at the
 
447
                time of U-boot entry and is required to be re-initialized.
 
448
 
 
449
                CONFIG_DEEP_SLEEP
 
450
                Inidcates this SoC supports deep sleep feature. If deep sleep is
 
451
                supported, core will start to execute uboot when wakes up.
 
452
 
 
453
- Generic CPU options:
 
454
                CONFIG_SYS_GENERIC_GLOBAL_DATA
 
455
                Defines global data is initialized in generic board board_init_f().
 
456
                If this macro is defined, global data is created and cleared in
 
457
                generic board board_init_f(). Without this macro, architecture/board
 
458
                should initialize global data before calling board_init_f().
 
459
 
 
460
                CONFIG_SYS_BIG_ENDIAN, CONFIG_SYS_LITTLE_ENDIAN
 
461
 
 
462
                Defines the endianess of the CPU. Implementation of those
 
463
                values is arch specific.
 
464
 
 
465
                CONFIG_SYS_FSL_DDR
 
466
                Freescale DDR driver in use. This type of DDR controller is
 
467
                found in mpc83xx, mpc85xx, mpc86xx as well as some ARM core
 
468
                SoCs.
 
469
 
 
470
                CONFIG_SYS_FSL_DDR_ADDR
 
471
                Freescale DDR memory-mapped register base.
 
472
 
 
473
                CONFIG_SYS_FSL_DDR_EMU
 
474
                Specify emulator support for DDR. Some DDR features such as
 
475
                deskew training are not available.
 
476
 
 
477
                CONFIG_SYS_FSL_DDRC_GEN1
 
478
                Freescale DDR1 controller.
 
479
 
 
480
                CONFIG_SYS_FSL_DDRC_GEN2
 
481
                Freescale DDR2 controller.
 
482
 
 
483
                CONFIG_SYS_FSL_DDRC_GEN3
 
484
                Freescale DDR3 controller.
 
485
 
 
486
                CONFIG_SYS_FSL_DDRC_GEN4
 
487
                Freescale DDR4 controller.
 
488
 
 
489
                CONFIG_SYS_FSL_DDRC_ARM_GEN3
 
490
                Freescale DDR3 controller for ARM-based SoCs.
 
491
 
 
492
                CONFIG_SYS_FSL_DDR1
 
493
                Board config to use DDR1. It can be enabled for SoCs with
 
494
                Freescale DDR1 or DDR2 controllers, depending on the board
 
495
                implemetation.
 
496
 
 
497
                CONFIG_SYS_FSL_DDR2
 
498
                Board config to use DDR2. It can be eanbeld for SoCs with
 
499
                Freescale DDR2 or DDR3 controllers, depending on the board
 
500
                implementation.
 
501
 
 
502
                CONFIG_SYS_FSL_DDR3
 
503
                Board config to use DDR3. It can be enabled for SoCs with
 
504
                Freescale DDR3 or DDR3L controllers.
 
505
 
 
506
                CONFIG_SYS_FSL_DDR3L
 
507
                Board config to use DDR3L. It can be enabled for SoCs with
 
508
                DDR3L controllers.
 
509
 
 
510
                CONFIG_SYS_FSL_DDR4
 
511
                Board config to use DDR4. It can be enabled for SoCs with
 
512
                DDR4 controllers.
 
513
 
 
514
                CONFIG_SYS_FSL_IFC_BE
 
515
                Defines the IFC controller register space as Big Endian
 
516
 
 
517
                CONFIG_SYS_FSL_IFC_LE
 
518
                Defines the IFC controller register space as Little Endian
 
519
 
 
520
                CONFIG_SYS_FSL_PBL_PBI
 
521
                It enables addition of RCW (Power on reset configuration) in built image.
 
522
                Please refer doc/README.pblimage for more details
 
523
 
 
524
                CONFIG_SYS_FSL_PBL_RCW
 
525
                It adds PBI(pre-boot instructions) commands in u-boot build image.
 
526
                PBI commands can be used to configure SoC before it starts the execution.
 
527
                Please refer doc/README.pblimage for more details
 
528
 
 
529
                CONFIG_SPL_FSL_PBL
 
530
                It adds a target to create boot binary having SPL binary in PBI format
 
531
                concatenated with u-boot binary.
 
532
 
 
533
                CONFIG_SYS_FSL_DDR_BE
 
534
                Defines the DDR controller register space as Big Endian
 
535
 
 
536
                CONFIG_SYS_FSL_DDR_LE
 
537
                Defines the DDR controller register space as Little Endian
 
538
 
 
539
                CONFIG_SYS_FSL_DDR_SDRAM_BASE_PHY
 
540
                Physical address from the view of DDR controllers. It is the
 
541
                same as CONFIG_SYS_DDR_SDRAM_BASE for  all Power SoCs. But
 
542
                it could be different for ARM SoCs.
 
543
 
 
544
                CONFIG_SYS_FSL_DDR_INTLV_256B
 
545
                DDR controller interleaving on 256-byte. This is a special
 
546
                interleaving mode, handled by Dickens for Freescale layerscape
 
547
                SoCs with ARM core.
 
548
 
 
549
- Intel Monahans options:
 
550
                CONFIG_SYS_MONAHANS_RUN_MODE_OSC_RATIO
 
551
 
 
552
                Defines the Monahans run mode to oscillator
 
553
                ratio. Valid values are 8, 16, 24, 31. The core
 
554
                frequency is this value multiplied by 13 MHz.
 
555
 
 
556
                CONFIG_SYS_MONAHANS_TURBO_RUN_MODE_RATIO
 
557
 
 
558
                Defines the Monahans turbo mode to oscillator
 
559
                ratio. Valid values are 1 (default if undefined) and
 
560
                2. The core frequency as calculated above is multiplied
 
561
                by this value.
 
562
 
 
563
- MIPS CPU options:
 
564
                CONFIG_SYS_INIT_SP_OFFSET
 
565
 
 
566
                Offset relative to CONFIG_SYS_SDRAM_BASE for initial stack
 
567
                pointer. This is needed for the temporary stack before
 
568
                relocation.
 
569
 
 
570
                CONFIG_SYS_MIPS_CACHE_MODE
 
571
 
 
572
                Cache operation mode for the MIPS CPU.
 
573
                See also arch/mips/include/asm/mipsregs.h.
 
574
                Possible values are:
 
575
                        CONF_CM_CACHABLE_NO_WA
 
576
                        CONF_CM_CACHABLE_WA
 
577
                        CONF_CM_UNCACHED
 
578
                        CONF_CM_CACHABLE_NONCOHERENT
 
579
                        CONF_CM_CACHABLE_CE
 
580
                        CONF_CM_CACHABLE_COW
 
581
                        CONF_CM_CACHABLE_CUW
 
582
                        CONF_CM_CACHABLE_ACCELERATED
 
583
 
 
584
                CONFIG_SYS_XWAY_EBU_BOOTCFG
 
585
 
 
586
                Special option for Lantiq XWAY SoCs for booting from NOR flash.
 
587
                See also arch/mips/cpu/mips32/start.S.
 
588
 
 
589
                CONFIG_XWAY_SWAP_BYTES
 
590
 
 
591
                Enable compilation of tools/xway-swap-bytes needed for Lantiq
 
592
                XWAY SoCs for booting from NOR flash. The U-Boot image needs to
 
593
                be swapped if a flash programmer is used.
 
594
 
 
595
- ARM options:
 
596
                CONFIG_SYS_EXCEPTION_VECTORS_HIGH
 
597
 
 
598
                Select high exception vectors of the ARM core, e.g., do not
 
599
                clear the V bit of the c1 register of CP15.
 
600
 
 
601
                CONFIG_SYS_THUMB_BUILD
 
602
 
 
603
                Use this flag to build U-Boot using the Thumb instruction
 
604
                set for ARM architectures. Thumb instruction set provides
 
605
                better code density. For ARM architectures that support
 
606
                Thumb2 this flag will result in Thumb2 code generated by
 
607
                GCC.
 
608
 
 
609
                CONFIG_ARM_ERRATA_716044
 
610
                CONFIG_ARM_ERRATA_742230
 
611
                CONFIG_ARM_ERRATA_743622
 
612
                CONFIG_ARM_ERRATA_751472
 
613
                CONFIG_ARM_ERRATA_794072
 
614
                CONFIG_ARM_ERRATA_761320
 
615
 
 
616
                If set, the workarounds for these ARM errata are applied early
 
617
                during U-Boot startup. Note that these options force the
 
618
                workarounds to be applied; no CPU-type/version detection
 
619
                exists, unlike the similar options in the Linux kernel. Do not
 
620
                set these options unless they apply!
 
621
 
 
622
- CPU timer options:
 
623
                CONFIG_SYS_HZ
 
624
 
 
625
                The frequency of the timer returned by get_timer().
 
626
                get_timer() must operate in milliseconds and this CONFIG
 
627
                option must be set to 1000.
 
628
 
 
629
- Linux Kernel Interface:
 
630
                CONFIG_CLOCKS_IN_MHZ
 
631
 
 
632
                U-Boot stores all clock information in Hz
 
633
                internally. For binary compatibility with older Linux
 
634
                kernels (which expect the clocks passed in the
 
635
                bd_info data to be in MHz) the environment variable
 
636
                "clocks_in_mhz" can be defined so that U-Boot
 
637
                converts clock data to MHZ before passing it to the
 
638
                Linux kernel.
 
639
                When CONFIG_CLOCKS_IN_MHZ is defined, a definition of
 
640
                "clocks_in_mhz=1" is automatically included in the
 
641
                default environment.
 
642
 
 
643
                CONFIG_MEMSIZE_IN_BYTES         [relevant for MIPS only]
 
644
 
 
645
                When transferring memsize parameter to linux, some versions
 
646
                expect it to be in bytes, others in MB.
 
647
                Define CONFIG_MEMSIZE_IN_BYTES to make it in bytes.
 
648
 
 
649
                CONFIG_OF_LIBFDT
 
650
 
 
651
                New kernel versions are expecting firmware settings to be
 
652
                passed using flattened device trees (based on open firmware
 
653
                concepts).
 
654
 
 
655
                CONFIG_OF_LIBFDT
 
656
                 * New libfdt-based support
 
657
                 * Adds the "fdt" command
 
658
                 * The bootm command automatically updates the fdt
 
659
 
 
660
                OF_CPU - The proper name of the cpus node (only required for
 
661
                        MPC512X and MPC5xxx based boards).
 
662
                OF_SOC - The proper name of the soc node (only required for
 
663
                        MPC512X and MPC5xxx based boards).
 
664
                OF_TBCLK - The timebase frequency.
 
665
                OF_STDOUT_PATH - The path to the console device
 
666
 
 
667
                boards with QUICC Engines require OF_QE to set UCC MAC
 
668
                addresses
 
669
 
 
670
                CONFIG_OF_BOARD_SETUP
 
671
 
 
672
                Board code has addition modification that it wants to make
 
673
                to the flat device tree before handing it off to the kernel
 
674
 
 
675
                CONFIG_OF_BOOT_CPU
 
676
 
 
677
                This define fills in the correct boot CPU in the boot
 
678
                param header, the default value is zero if undefined.
 
679
 
 
680
                CONFIG_OF_IDE_FIXUP
 
681
 
 
682
                U-Boot can detect if an IDE device is present or not.
 
683
                If not, and this new config option is activated, U-Boot
 
684
                removes the ATA node from the DTS before booting Linux,
 
685
                so the Linux IDE driver does not probe the device and
 
686
                crash. This is needed for buggy hardware (uc101) where
 
687
                no pull down resistor is connected to the signal IDE5V_DD7.
 
688
 
 
689
                CONFIG_MACH_TYPE        [relevant for ARM only][mandatory]
 
690
 
 
691
                This setting is mandatory for all boards that have only one
 
692
                machine type and must be used to specify the machine type
 
693
                number as it appears in the ARM machine registry
 
694
                (see http://www.arm.linux.org.uk/developer/machines/).
 
695
                Only boards that have multiple machine types supported
 
696
                in a single configuration file and the machine type is
 
697
                runtime discoverable, do not have to use this setting.
 
698
 
 
699
- vxWorks boot parameters:
 
700
 
 
701
                bootvx constructs a valid bootline using the following
 
702
                environments variables: bootfile, ipaddr, serverip, hostname.
 
703
                It loads the vxWorks image pointed bootfile.
 
704
 
 
705
                CONFIG_SYS_VXWORKS_BOOT_DEVICE - The vxworks device name
 
706
                CONFIG_SYS_VXWORKS_MAC_PTR - Ethernet 6 byte MA -address
 
707
                CONFIG_SYS_VXWORKS_SERVERNAME - Name of the server
 
708
                CONFIG_SYS_VXWORKS_BOOT_ADDR - Address of boot parameters
 
709
 
 
710
                CONFIG_SYS_VXWORKS_ADD_PARAMS
 
711
 
 
712
                Add it at the end of the bootline. E.g "u=username pw=secret"
 
713
 
 
714
                Note: If a "bootargs" environment is defined, it will overwride
 
715
                the defaults discussed just above.
 
716
 
 
717
- Cache Configuration:
 
718
                CONFIG_SYS_ICACHE_OFF - Do not enable instruction cache in U-Boot
 
719
                CONFIG_SYS_DCACHE_OFF - Do not enable data cache in U-Boot
 
720
                CONFIG_SYS_L2CACHE_OFF- Do not enable L2 cache in U-Boot
 
721
 
 
722
- Cache Configuration for ARM:
 
723
                CONFIG_SYS_L2_PL310 - Enable support for ARM PL310 L2 cache
 
724
                                      controller
 
725
                CONFIG_SYS_PL310_BASE - Physical base address of PL310
 
726
                                        controller register space
 
727
 
 
728
- Serial Ports:
 
729
                CONFIG_PL010_SERIAL
 
730
 
 
731
                Define this if you want support for Amba PrimeCell PL010 UARTs.
 
732
 
 
733
                CONFIG_PL011_SERIAL
 
734
 
 
735
                Define this if you want support for Amba PrimeCell PL011 UARTs.
 
736
 
 
737
                CONFIG_PL011_CLOCK
 
738
 
 
739
                If you have Amba PrimeCell PL011 UARTs, set this variable to
 
740
                the clock speed of the UARTs.
 
741
 
 
742
                CONFIG_PL01x_PORTS
 
743
 
 
744
                If you have Amba PrimeCell PL010 or PL011 UARTs on your board,
 
745
                define this to a list of base addresses for each (supported)
 
746
                port. See e.g. include/configs/versatile.h
 
747
 
 
748
                CONFIG_PL011_SERIAL_RLCR
 
749
 
 
750
                Some vendor versions of PL011 serial ports (e.g. ST-Ericsson U8500)
 
751
                have separate receive and transmit line control registers.  Set
 
752
                this variable to initialize the extra register.
 
753
 
 
754
                CONFIG_PL011_SERIAL_FLUSH_ON_INIT
 
755
 
 
756
                On some platforms (e.g. U8500) U-Boot is loaded by a second stage
 
757
                boot loader that has already initialized the UART.  Define this
 
758
                variable to flush the UART at init time.
 
759
 
 
760
                CONFIG_SERIAL_HW_FLOW_CONTROL
 
761
 
 
762
                Define this variable to enable hw flow control in serial driver.
 
763
                Current user of this option is drivers/serial/nsl16550.c driver
 
764
 
 
765
- Console Interface:
 
766
                Depending on board, define exactly one serial port
 
767
                (like CONFIG_8xx_CONS_SMC1, CONFIG_8xx_CONS_SMC2,
 
768
                CONFIG_8xx_CONS_SCC1, ...), or switch off the serial
 
769
                console by defining CONFIG_8xx_CONS_NONE
 
770
 
 
771
                Note: if CONFIG_8xx_CONS_NONE is defined, the serial
 
772
                port routines must be defined elsewhere
 
773
                (i.e. serial_init(), serial_getc(), ...)
 
774
 
 
775
                CONFIG_CFB_CONSOLE
 
776
                Enables console device for a color framebuffer. Needs following
 
777
                defines (cf. smiLynxEM, i8042)
 
778
                        VIDEO_FB_LITTLE_ENDIAN  graphic memory organisation
 
779
                                                (default big endian)
 
780
                        VIDEO_HW_RECTFILL       graphic chip supports
 
781
                                                rectangle fill
 
782
                                                (cf. smiLynxEM)
 
783
                        VIDEO_HW_BITBLT         graphic chip supports
 
784
                                                bit-blit (cf. smiLynxEM)
 
785
                        VIDEO_VISIBLE_COLS      visible pixel columns
 
786
                                                (cols=pitch)
 
787
                        VIDEO_VISIBLE_ROWS      visible pixel rows
 
788
                        VIDEO_PIXEL_SIZE        bytes per pixel
 
789
                        VIDEO_DATA_FORMAT       graphic data format
 
790
                                                (0-5, cf. cfb_console.c)
 
791
                        VIDEO_FB_ADRS           framebuffer address
 
792
                        VIDEO_KBD_INIT_FCT      keyboard int fct
 
793
                                                (i.e. i8042_kbd_init())
 
794
                        VIDEO_TSTC_FCT          test char fct
 
795
                                                (i.e. i8042_tstc)
 
796
                        VIDEO_GETC_FCT          get char fct
 
797
                                                (i.e. i8042_getc)
 
798
                        CONFIG_CONSOLE_CURSOR   cursor drawing on/off
 
799
                                                (requires blink timer
 
800
                                                cf. i8042.c)
 
801
                        CONFIG_SYS_CONSOLE_BLINK_COUNT blink interval (cf. i8042.c)
 
802
                        CONFIG_CONSOLE_TIME     display time/date info in
 
803
                                                upper right corner
 
804
                                                (requires CONFIG_CMD_DATE)
 
805
                        CONFIG_VIDEO_LOGO       display Linux logo in
 
806
                                                upper left corner
 
807
                        CONFIG_VIDEO_BMP_LOGO   use bmp_logo.h instead of
 
808
                                                linux_logo.h for logo.
 
809
                                                Requires CONFIG_VIDEO_LOGO
 
810
                        CONFIG_CONSOLE_EXTRA_INFO
 
811
                                                additional board info beside
 
812
                                                the logo
 
813
 
 
814
                When CONFIG_CFB_CONSOLE_ANSI is defined, console will support
 
815
                a limited number of ANSI escape sequences (cursor control,
 
816
                erase functions and limited graphics rendition control).
 
817
 
 
818
                When CONFIG_CFB_CONSOLE is defined, video console is
 
819
                default i/o. Serial console can be forced with
 
820
                environment 'console=serial'.
 
821
 
 
822
                When CONFIG_SILENT_CONSOLE is defined, all console
 
823
                messages (by U-Boot and Linux!) can be silenced with
 
824
                the "silent" environment variable. See
 
825
                doc/README.silent for more information.
 
826
 
 
827
                CONFIG_SYS_CONSOLE_BG_COL: define the backgroundcolor, default
 
828
                        is 0x00.
 
829
                CONFIG_SYS_CONSOLE_FG_COL: define the foregroundcolor, default
 
830
                        is 0xa0.
 
831
 
 
832
- Console Baudrate:
 
833
                CONFIG_BAUDRATE - in bps
 
834
                Select one of the baudrates listed in
 
835
                CONFIG_SYS_BAUDRATE_TABLE, see below.
 
836
                CONFIG_SYS_BRGCLK_PRESCALE, baudrate prescale
 
837
 
 
838
- Console Rx buffer length
 
839
                With CONFIG_SYS_SMC_RXBUFLEN it is possible to define
 
840
                the maximum receive buffer length for the SMC.
 
841
                This option is actual only for 82xx and 8xx possible.
 
842
                If using CONFIG_SYS_SMC_RXBUFLEN also CONFIG_SYS_MAXIDLE
 
843
                must be defined, to setup the maximum idle timeout for
 
844
                the SMC.
 
845
 
 
846
- Pre-Console Buffer:
 
847
                Prior to the console being initialised (i.e. serial UART
 
848
                initialised etc) all console output is silently discarded.
 
849
                Defining CONFIG_PRE_CONSOLE_BUFFER will cause U-Boot to
 
850
                buffer any console messages prior to the console being
 
851
                initialised to a buffer of size CONFIG_PRE_CON_BUF_SZ
 
852
                bytes located at CONFIG_PRE_CON_BUF_ADDR. The buffer is
 
853
                a circular buffer, so if more than CONFIG_PRE_CON_BUF_SZ
 
854
                bytes are output before the console is initialised, the
 
855
                earlier bytes are discarded.
 
856
 
 
857
                'Sane' compilers will generate smaller code if
 
858
                CONFIG_PRE_CON_BUF_SZ is a power of 2
 
859
 
 
860
- Safe printf() functions
 
861
                Define CONFIG_SYS_VSNPRINTF to compile in safe versions of
 
862
                the printf() functions. These are defined in
 
863
                include/vsprintf.h and include snprintf(), vsnprintf() and
 
864
                so on. Code size increase is approximately 300-500 bytes.
 
865
                If this option is not given then these functions will
 
866
                silently discard their buffer size argument - this means
 
867
                you are not getting any overflow checking in this case.
 
868
 
 
869
- Boot Delay:   CONFIG_BOOTDELAY - in seconds
 
870
                Delay before automatically booting the default image;
 
871
                set to -1 to disable autoboot.
 
872
                set to -2 to autoboot with no delay and not check for abort
 
873
                (even when CONFIG_ZERO_BOOTDELAY_CHECK is defined).
 
874
 
 
875
                See doc/README.autoboot for these options that
 
876
                work with CONFIG_BOOTDELAY. None are required.
 
877
                CONFIG_BOOT_RETRY_TIME
 
878
                CONFIG_BOOT_RETRY_MIN
 
879
                CONFIG_AUTOBOOT_KEYED
 
880
                CONFIG_AUTOBOOT_PROMPT
 
881
                CONFIG_AUTOBOOT_DELAY_STR
 
882
                CONFIG_AUTOBOOT_STOP_STR
 
883
                CONFIG_AUTOBOOT_DELAY_STR2
 
884
                CONFIG_AUTOBOOT_STOP_STR2
 
885
                CONFIG_ZERO_BOOTDELAY_CHECK
 
886
                CONFIG_RESET_TO_RETRY
 
887
 
 
888
- Autoboot Command:
 
889
                CONFIG_BOOTCOMMAND
 
890
                Only needed when CONFIG_BOOTDELAY is enabled;
 
891
                define a command string that is automatically executed
 
892
                when no character is read on the console interface
 
893
                within "Boot Delay" after reset.
 
894
 
 
895
                CONFIG_BOOTARGS
 
896
                This can be used to pass arguments to the bootm
 
897
                command. The value of CONFIG_BOOTARGS goes into the
 
898
                environment value "bootargs".
 
899
 
 
900
                CONFIG_RAMBOOT and CONFIG_NFSBOOT
 
901
                The value of these goes into the environment as
 
902
                "ramboot" and "nfsboot" respectively, and can be used
 
903
                as a convenience, when switching between booting from
 
904
                RAM and NFS.
 
905
 
 
906
- Bootcount:
 
907
                CONFIG_BOOTCOUNT_LIMIT
 
908
                Implements a mechanism for detecting a repeating reboot
 
909
                cycle, see:
 
910
                http://www.denx.de/wiki/view/DULG/UBootBootCountLimit
 
911
 
 
912
                CONFIG_BOOTCOUNT_ENV
 
913
                If no softreset save registers are found on the hardware
 
914
                "bootcount" is stored in the environment. To prevent a
 
915
                saveenv on all reboots, the environment variable
 
916
                "upgrade_available" is used. If "upgrade_available" is
 
917
                0, "bootcount" is always 0, if "upgrade_available" is
 
918
                1 "bootcount" is incremented in the environment.
 
919
                So the Userspace Applikation must set the "upgrade_available"
 
920
                and "bootcount" variable to 0, if a boot was successfully.
 
921
 
 
922
- Pre-Boot Commands:
 
923
                CONFIG_PREBOOT
 
924
 
 
925
                When this option is #defined, the existence of the
 
926
                environment variable "preboot" will be checked
 
927
                immediately before starting the CONFIG_BOOTDELAY
 
928
                countdown and/or running the auto-boot command resp.
 
929
                entering interactive mode.
 
930
 
 
931
                This feature is especially useful when "preboot" is
 
932
                automatically generated or modified. For an example
 
933
                see the LWMON board specific code: here "preboot" is
 
934
                modified when the user holds down a certain
 
935
                combination of keys on the (special) keyboard when
 
936
                booting the systems
 
937
 
 
938
- Serial Download Echo Mode:
 
939
                CONFIG_LOADS_ECHO
 
940
                If defined to 1, all characters received during a
 
941
                serial download (using the "loads" command) are
 
942
                echoed back. This might be needed by some terminal
 
943
                emulations (like "cu"), but may as well just take
 
944
                time on others. This setting #define's the initial
 
945
                value of the "loads_echo" environment variable.
 
946
 
 
947
- Kgdb Serial Baudrate: (if CONFIG_CMD_KGDB is defined)
 
948
                CONFIG_KGDB_BAUDRATE
 
949
                Select one of the baudrates listed in
 
950
                CONFIG_SYS_BAUDRATE_TABLE, see below.
 
951
 
 
952
- Monitor Functions:
 
953
                Monitor commands can be included or excluded
 
954
                from the build by using the #include files
 
955
                <config_cmd_all.h> and #undef'ing unwanted
 
956
                commands, or using <config_cmd_default.h>
 
957
                and augmenting with additional #define's
 
958
                for wanted commands.
 
959
 
 
960
                The default command configuration includes all commands
 
961
                except those marked below with a "*".
 
962
 
 
963
                CONFIG_CMD_AES            AES 128 CBC encrypt/decrypt
 
964
                CONFIG_CMD_ASKENV       * ask for env variable
 
965
                CONFIG_CMD_BDI            bdinfo
 
966
                CONFIG_CMD_BEDBUG       * Include BedBug Debugger
 
967
                CONFIG_CMD_BMP          * BMP support
 
968
                CONFIG_CMD_BSP          * Board specific commands
 
969
                CONFIG_CMD_BOOTD          bootd
 
970
                CONFIG_CMD_CACHE        * icache, dcache
 
971
                CONFIG_CMD_CLK          * clock command support
 
972
                CONFIG_CMD_CONSOLE        coninfo
 
973
                CONFIG_CMD_CRC32        * crc32
 
974
                CONFIG_CMD_DATE         * support for RTC, date/time...
 
975
                CONFIG_CMD_DHCP         * DHCP support
 
976
                CONFIG_CMD_DIAG         * Diagnostics
 
977
                CONFIG_CMD_DS4510       * ds4510 I2C gpio commands
 
978
                CONFIG_CMD_DS4510_INFO  * ds4510 I2C info command
 
979
                CONFIG_CMD_DS4510_MEM   * ds4510 I2C eeprom/sram commansd
 
980
                CONFIG_CMD_DS4510_RST   * ds4510 I2C rst command
 
981
                CONFIG_CMD_DTT          * Digital Therm and Thermostat
 
982
                CONFIG_CMD_ECHO           echo arguments
 
983
                CONFIG_CMD_EDITENV        edit env variable
 
984
                CONFIG_CMD_EEPROM       * EEPROM read/write support
 
985
                CONFIG_CMD_ELF          * bootelf, bootvx
 
986
                CONFIG_CMD_ENV_CALLBACK * display details about env callbacks
 
987
                CONFIG_CMD_ENV_FLAGS    * display details about env flags
 
988
                CONFIG_CMD_ENV_EXISTS   * check existence of env variable
 
989
                CONFIG_CMD_EXPORTENV    * export the environment
 
990
                CONFIG_CMD_EXT2         * ext2 command support
 
991
                CONFIG_CMD_EXT4         * ext4 command support
 
992
                CONFIG_CMD_FS_GENERIC   * filesystem commands (e.g. load, ls)
 
993
                                          that work for multiple fs types
 
994
                CONFIG_CMD_SAVEENV        saveenv
 
995
                CONFIG_CMD_FDC          * Floppy Disk Support
 
996
                CONFIG_CMD_FAT          * FAT command support
 
997
                CONFIG_CMD_FLASH          flinfo, erase, protect
 
998
                CONFIG_CMD_FPGA           FPGA device initialization support
 
999
                CONFIG_CMD_FUSE         * Device fuse support
 
1000
                CONFIG_CMD_GETTIME      * Get time since boot
 
1001
                CONFIG_CMD_GO           * the 'go' command (exec code)
 
1002
                CONFIG_CMD_GREPENV      * search environment
 
1003
                CONFIG_CMD_HASH         * calculate hash / digest
 
1004
                CONFIG_CMD_HWFLOW       * RTS/CTS hw flow control
 
1005
                CONFIG_CMD_I2C          * I2C serial bus support
 
1006
                CONFIG_CMD_IDE          * IDE harddisk support
 
1007
                CONFIG_CMD_IMI            iminfo
 
1008
                CONFIG_CMD_IMLS           List all images found in NOR flash
 
1009
                CONFIG_CMD_IMLS_NAND    * List all images found in NAND flash
 
1010
                CONFIG_CMD_IMMAP        * IMMR dump support
 
1011
                CONFIG_CMD_IMPORTENV    * import an environment
 
1012
                CONFIG_CMD_INI          * import data from an ini file into the env
 
1013
                CONFIG_CMD_IRQ          * irqinfo
 
1014
                CONFIG_CMD_ITEST          Integer/string test of 2 values
 
1015
                CONFIG_CMD_JFFS2        * JFFS2 Support
 
1016
                CONFIG_CMD_KGDB         * kgdb
 
1017
                CONFIG_CMD_LDRINFO      * ldrinfo (display Blackfin loader)
 
1018
                CONFIG_CMD_LINK_LOCAL   * link-local IP address auto-configuration
 
1019
                                          (169.254.*.*)
 
1020
                CONFIG_CMD_LOADB          loadb
 
1021
                CONFIG_CMD_LOADS          loads
 
1022
                CONFIG_CMD_MD5SUM       * print md5 message digest
 
1023
                                          (requires CONFIG_CMD_MEMORY and CONFIG_MD5)
 
1024
                CONFIG_CMD_MEMINFO      * Display detailed memory information
 
1025
                CONFIG_CMD_MEMORY         md, mm, nm, mw, cp, cmp, crc, base,
 
1026
                                          loop, loopw
 
1027
                CONFIG_CMD_MEMTEST      * mtest
 
1028
                CONFIG_CMD_MISC           Misc functions like sleep etc
 
1029
                CONFIG_CMD_MMC          * MMC memory mapped support
 
1030
                CONFIG_CMD_MII          * MII utility commands
 
1031
                CONFIG_CMD_MTDPARTS     * MTD partition support
 
1032
                CONFIG_CMD_NAND         * NAND support
 
1033
                CONFIG_CMD_NET            bootp, tftpboot, rarpboot
 
1034
                CONFIG_CMD_NFS            NFS support
 
1035
                CONFIG_CMD_PCA953X      * PCA953x I2C gpio commands
 
1036
                CONFIG_CMD_PCA953X_INFO * PCA953x I2C gpio info command
 
1037
                CONFIG_CMD_PCI          * pciinfo
 
1038
                CONFIG_CMD_PCMCIA               * PCMCIA support
 
1039
                CONFIG_CMD_PING         * send ICMP ECHO_REQUEST to network
 
1040
                                          host
 
1041
                CONFIG_CMD_PORTIO       * Port I/O
 
1042
                CONFIG_CMD_READ         * Read raw data from partition
 
1043
                CONFIG_CMD_REGINFO      * Register dump
 
1044
                CONFIG_CMD_RUN            run command in env variable
 
1045
                CONFIG_CMD_SANDBOX      * sb command to access sandbox features
 
1046
                CONFIG_CMD_SAVES        * save S record dump
 
1047
                CONFIG_CMD_SCSI         * SCSI Support
 
1048
                CONFIG_CMD_SDRAM        * print SDRAM configuration information
 
1049
                                          (requires CONFIG_CMD_I2C)
 
1050
                CONFIG_CMD_SETGETDCR      Support for DCR Register access
 
1051
                                          (4xx only)
 
1052
                CONFIG_CMD_SF           * Read/write/erase SPI NOR flash
 
1053
                CONFIG_CMD_SHA1SUM      * print sha1 memory digest
 
1054
                                          (requires CONFIG_CMD_MEMORY)
 
1055
                CONFIG_CMD_SOFTSWITCH   * Soft switch setting command for BF60x
 
1056
                CONFIG_CMD_SOURCE         "source" command Support
 
1057
                CONFIG_CMD_SPI          * SPI serial bus support
 
1058
                CONFIG_CMD_TFTPSRV      * TFTP transfer in server mode
 
1059
                CONFIG_CMD_TFTPPUT      * TFTP put command (upload)
 
1060
                CONFIG_CMD_TIME         * run command and report execution time (ARM specific)
 
1061
                CONFIG_CMD_TIMER        * access to the system tick timer
 
1062
                CONFIG_CMD_USB          * USB support
 
1063
                CONFIG_CMD_CDP          * Cisco Discover Protocol support
 
1064
                CONFIG_CMD_MFSL         * Microblaze FSL support
 
1065
                CONFIG_CMD_XIMG           Load part of Multi Image
 
1066
                CONFIG_CMD_UUID         * Generate random UUID or GUID string
 
1067
 
 
1068
                EXAMPLE: If you want all functions except of network
 
1069
                support you can write:
 
1070
 
 
1071
                #include "config_cmd_all.h"
 
1072
                #undef CONFIG_CMD_NET
 
1073
 
 
1074
        Other Commands:
 
1075
                fdt (flattened device tree) command: CONFIG_OF_LIBFDT
 
1076
 
 
1077
        Note:   Don't enable the "icache" and "dcache" commands
 
1078
                (configuration option CONFIG_CMD_CACHE) unless you know
 
1079
                what you (and your U-Boot users) are doing. Data
 
1080
                cache cannot be enabled on systems like the 8xx or
 
1081
                8260 (where accesses to the IMMR region must be
 
1082
                uncached), and it cannot be disabled on all other
 
1083
                systems where we (mis-) use the data cache to hold an
 
1084
                initial stack and some data.
 
1085
 
 
1086
 
 
1087
                XXX - this list needs to get updated!
 
1088
 
 
1089
- Regular expression support:
 
1090
                CONFIG_REGEX
 
1091
                If this variable is defined, U-Boot is linked against
 
1092
                the SLRE (Super Light Regular Expression) library,
 
1093
                which adds regex support to some commands, as for
 
1094
                example "env grep" and "setexpr".
 
1095
 
 
1096
- Device tree:
 
1097
                CONFIG_OF_CONTROL
 
1098
                If this variable is defined, U-Boot will use a device tree
 
1099
                to configure its devices, instead of relying on statically
 
1100
                compiled #defines in the board file. This option is
 
1101
                experimental and only available on a few boards. The device
 
1102
                tree is available in the global data as gd->fdt_blob.
 
1103
 
 
1104
                U-Boot needs to get its device tree from somewhere. This can
 
1105
                be done using one of the two options below:
 
1106
 
 
1107
                CONFIG_OF_EMBED
 
1108
                If this variable is defined, U-Boot will embed a device tree
 
1109
                binary in its image. This device tree file should be in the
 
1110
                board directory and called <soc>-<board>.dts. The binary file
 
1111
                is then picked up in board_init_f() and made available through
 
1112
                the global data structure as gd->blob.
 
1113
 
 
1114
                CONFIG_OF_SEPARATE
 
1115
                If this variable is defined, U-Boot will build a device tree
 
1116
                binary. It will be called u-boot.dtb. Architecture-specific
 
1117
                code will locate it at run-time. Generally this works by:
 
1118
 
 
1119
                        cat u-boot.bin u-boot.dtb >image.bin
 
1120
 
 
1121
                and in fact, U-Boot does this for you, creating a file called
 
1122
                u-boot-dtb.bin which is useful in the common case. You can
 
1123
                still use the individual files if you need something more
 
1124
                exotic.
 
1125
 
 
1126
- Watchdog:
 
1127
                CONFIG_WATCHDOG
 
1128
                If this variable is defined, it enables watchdog
 
1129
                support for the SoC. There must be support in the SoC
 
1130
                specific code for a watchdog. For the 8xx and 8260
 
1131
                CPUs, the SIU Watchdog feature is enabled in the SYPCR
 
1132
                register.  When supported for a specific SoC is
 
1133
                available, then no further board specific code should
 
1134
                be needed to use it.
 
1135
 
 
1136
                CONFIG_HW_WATCHDOG
 
1137
                When using a watchdog circuitry external to the used
 
1138
                SoC, then define this variable and provide board
 
1139
                specific code for the "hw_watchdog_reset" function.
 
1140
 
 
1141
- U-Boot Version:
 
1142
                CONFIG_VERSION_VARIABLE
 
1143
                If this variable is defined, an environment variable
 
1144
                named "ver" is created by U-Boot showing the U-Boot
 
1145
                version as printed by the "version" command.
 
1146
                Any change to this variable will be reverted at the
 
1147
                next reset.
 
1148
 
 
1149
- Real-Time Clock:
 
1150
 
 
1151
                When CONFIG_CMD_DATE is selected, the type of the RTC
 
1152
                has to be selected, too. Define exactly one of the
 
1153
                following options:
 
1154
 
 
1155
                CONFIG_RTC_MPC8xx       - use internal RTC of MPC8xx
 
1156
                CONFIG_RTC_PCF8563      - use Philips PCF8563 RTC
 
1157
                CONFIG_RTC_MC13XXX      - use MC13783 or MC13892 RTC
 
1158
                CONFIG_RTC_MC146818     - use MC146818 RTC
 
1159
                CONFIG_RTC_DS1307       - use Maxim, Inc. DS1307 RTC
 
1160
                CONFIG_RTC_DS1337       - use Maxim, Inc. DS1337 RTC
 
1161
                CONFIG_RTC_DS1338       - use Maxim, Inc. DS1338 RTC
 
1162
                CONFIG_RTC_DS164x       - use Dallas DS164x RTC
 
1163
                CONFIG_RTC_ISL1208      - use Intersil ISL1208 RTC
 
1164
                CONFIG_RTC_MAX6900      - use Maxim, Inc. MAX6900 RTC
 
1165
                CONFIG_SYS_RTC_DS1337_NOOSC     - Turn off the OSC output for DS1337
 
1166
                CONFIG_SYS_RV3029_TCR   - enable trickle charger on
 
1167
                                          RV3029 RTC.
 
1168
 
 
1169
                Note that if the RTC uses I2C, then the I2C interface
 
1170
                must also be configured. See I2C Support, below.
 
1171
 
 
1172
- GPIO Support:
 
1173
                CONFIG_PCA953X          - use NXP's PCA953X series I2C GPIO
 
1174
 
 
1175
                The CONFIG_SYS_I2C_PCA953X_WIDTH option specifies a list of
 
1176
                chip-ngpio pairs that tell the PCA953X driver the number of
 
1177
                pins supported by a particular chip.
 
1178
 
 
1179
                Note that if the GPIO device uses I2C, then the I2C interface
 
1180
                must also be configured. See I2C Support, below.
 
1181
 
 
1182
- Timestamp Support:
 
1183
 
 
1184
                When CONFIG_TIMESTAMP is selected, the timestamp
 
1185
                (date and time) of an image is printed by image
 
1186
                commands like bootm or iminfo. This option is
 
1187
                automatically enabled when you select CONFIG_CMD_DATE .
 
1188
 
 
1189
- Partition Labels (disklabels) Supported:
 
1190
                Zero or more of the following:
 
1191
                CONFIG_MAC_PARTITION   Apple's MacOS partition table.
 
1192
                CONFIG_DOS_PARTITION   MS Dos partition table, traditional on the
 
1193
                                       Intel architecture, USB sticks, etc.
 
1194
                CONFIG_ISO_PARTITION   ISO partition table, used on CDROM etc.
 
1195
                CONFIG_EFI_PARTITION   GPT partition table, common when EFI is the
 
1196
                                       bootloader.  Note 2TB partition limit; see
 
1197
                                       disk/part_efi.c
 
1198
                CONFIG_MTD_PARTITIONS  Memory Technology Device partition table.
 
1199
 
 
1200
                If IDE or SCSI support is enabled (CONFIG_CMD_IDE or
 
1201
                CONFIG_CMD_SCSI) you must configure support for at
 
1202
                least one non-MTD partition type as well.
 
1203
 
 
1204
- IDE Reset method:
 
1205
                CONFIG_IDE_RESET_ROUTINE - this is defined in several
 
1206
                board configurations files but used nowhere!
 
1207
 
 
1208
                CONFIG_IDE_RESET - is this is defined, IDE Reset will
 
1209
                be performed by calling the function
 
1210
                        ide_set_reset(int reset)
 
1211
                which has to be defined in a board specific file
 
1212
 
 
1213
- ATAPI Support:
 
1214
                CONFIG_ATAPI
 
1215
 
 
1216
                Set this to enable ATAPI support.
 
1217
 
 
1218
- LBA48 Support
 
1219
                CONFIG_LBA48
 
1220
 
 
1221
                Set this to enable support for disks larger than 137GB
 
1222
                Also look at CONFIG_SYS_64BIT_LBA.
 
1223
                Whithout these , LBA48 support uses 32bit variables and will 'only'
 
1224
                support disks up to 2.1TB.
 
1225
 
 
1226
                CONFIG_SYS_64BIT_LBA:
 
1227
                        When enabled, makes the IDE subsystem use 64bit sector addresses.
 
1228
                        Default is 32bit.
 
1229
 
 
1230
- SCSI Support:
 
1231
                At the moment only there is only support for the
 
1232
                SYM53C8XX SCSI controller; define
 
1233
                CONFIG_SCSI_SYM53C8XX to enable it.
 
1234
 
 
1235
                CONFIG_SYS_SCSI_MAX_LUN [8], CONFIG_SYS_SCSI_MAX_SCSI_ID [7] and
 
1236
                CONFIG_SYS_SCSI_MAX_DEVICE [CONFIG_SYS_SCSI_MAX_SCSI_ID *
 
1237
                CONFIG_SYS_SCSI_MAX_LUN] can be adjusted to define the
 
1238
                maximum numbers of LUNs, SCSI ID's and target
 
1239
                devices.
 
1240
                CONFIG_SYS_SCSI_SYM53C8XX_CCF to fix clock timing (80Mhz)
 
1241
 
 
1242
                The environment variable 'scsidevs' is set to the number of
 
1243
                SCSI devices found during the last scan.
 
1244
 
 
1245
- NETWORK Support (PCI):
 
1246
                CONFIG_E1000
 
1247
                Support for Intel 8254x/8257x gigabit chips.
 
1248
 
 
1249
                CONFIG_E1000_SPI
 
1250
                Utility code for direct access to the SPI bus on Intel 8257x.
 
1251
                This does not do anything useful unless you set at least one
 
1252
                of CONFIG_CMD_E1000 or CONFIG_E1000_SPI_GENERIC.
 
1253
 
 
1254
                CONFIG_E1000_SPI_GENERIC
 
1255
                Allow generic access to the SPI bus on the Intel 8257x, for
 
1256
                example with the "sspi" command.
 
1257
 
 
1258
                CONFIG_CMD_E1000
 
1259
                Management command for E1000 devices.  When used on devices
 
1260
                with SPI support you can reprogram the EEPROM from U-Boot.
 
1261
 
 
1262
                CONFIG_E1000_FALLBACK_MAC
 
1263
                default MAC for empty EEPROM after production.
 
1264
 
 
1265
                CONFIG_EEPRO100
 
1266
                Support for Intel 82557/82559/82559ER chips.
 
1267
                Optional CONFIG_EEPRO100_SROM_WRITE enables EEPROM
 
1268
                write routine for first time initialisation.
 
1269
 
 
1270
                CONFIG_TULIP
 
1271
                Support for Digital 2114x chips.
 
1272
                Optional CONFIG_TULIP_SELECT_MEDIA for board specific
 
1273
                modem chip initialisation (KS8761/QS6611).
 
1274
 
 
1275
                CONFIG_NATSEMI
 
1276
                Support for National dp83815 chips.
 
1277
 
 
1278
                CONFIG_NS8382X
 
1279
                Support for National dp8382[01] gigabit chips.
 
1280
 
 
1281
- NETWORK Support (other):
 
1282
 
 
1283
                CONFIG_DRIVER_AT91EMAC
 
1284
                Support for AT91RM9200 EMAC.
 
1285
 
 
1286
                        CONFIG_RMII
 
1287
                        Define this to use reduced MII inteface
 
1288
 
 
1289
                        CONFIG_DRIVER_AT91EMAC_QUIET
 
1290
                        If this defined, the driver is quiet.
 
1291
                        The driver doen't show link status messages.
 
1292
 
 
1293
                CONFIG_CALXEDA_XGMAC
 
1294
                Support for the Calxeda XGMAC device
 
1295
 
 
1296
                CONFIG_LAN91C96
 
1297
                Support for SMSC's LAN91C96 chips.
 
1298
 
 
1299
                        CONFIG_LAN91C96_BASE
 
1300
                        Define this to hold the physical address
 
1301
                        of the LAN91C96's I/O space
 
1302
 
 
1303
                        CONFIG_LAN91C96_USE_32_BIT
 
1304
                        Define this to enable 32 bit addressing
 
1305
 
 
1306
                CONFIG_SMC91111
 
1307
                Support for SMSC's LAN91C111 chip
 
1308
 
 
1309
                        CONFIG_SMC91111_BASE
 
1310
                        Define this to hold the physical address
 
1311
                        of the device (I/O space)
 
1312
 
 
1313
                        CONFIG_SMC_USE_32_BIT
 
1314
                        Define this if data bus is 32 bits
 
1315
 
 
1316
                        CONFIG_SMC_USE_IOFUNCS
 
1317
                        Define this to use i/o functions instead of macros
 
1318
                        (some hardware wont work with macros)
 
1319
 
 
1320
                CONFIG_DRIVER_TI_EMAC
 
1321
                Support for davinci emac
 
1322
 
 
1323
                        CONFIG_SYS_DAVINCI_EMAC_PHY_COUNT
 
1324
                        Define this if you have more then 3 PHYs.
 
1325
 
 
1326
                CONFIG_FTGMAC100
 
1327
                Support for Faraday's FTGMAC100 Gigabit SoC Ethernet
 
1328
 
 
1329
                        CONFIG_FTGMAC100_EGIGA
 
1330
                        Define this to use GE link update with gigabit PHY.
 
1331
                        Define this if FTGMAC100 is connected to gigabit PHY.
 
1332
                        If your system has 10/100 PHY only, it might not occur
 
1333
                        wrong behavior. Because PHY usually return timeout or
 
1334
                        useless data when polling gigabit status and gigabit
 
1335
                        control registers. This behavior won't affect the
 
1336
                        correctnessof 10/100 link speed update.
 
1337
 
 
1338
                CONFIG_SMC911X
 
1339
                Support for SMSC's LAN911x and LAN921x chips
 
1340
 
 
1341
                        CONFIG_SMC911X_BASE
 
1342
                        Define this to hold the physical address
 
1343
                        of the device (I/O space)
 
1344
 
 
1345
                        CONFIG_SMC911X_32_BIT
 
1346
                        Define this if data bus is 32 bits
 
1347
 
 
1348
                        CONFIG_SMC911X_16_BIT
 
1349
                        Define this if data bus is 16 bits. If your processor
 
1350
                        automatically converts one 32 bit word to two 16 bit
 
1351
                        words you may also try CONFIG_SMC911X_32_BIT.
 
1352
 
 
1353
                CONFIG_SH_ETHER
 
1354
                Support for Renesas on-chip Ethernet controller
 
1355
 
 
1356
                        CONFIG_SH_ETHER_USE_PORT
 
1357
                        Define the number of ports to be used
 
1358
 
 
1359
                        CONFIG_SH_ETHER_PHY_ADDR
 
1360
                        Define the ETH PHY's address
 
1361
 
 
1362
                        CONFIG_SH_ETHER_CACHE_WRITEBACK
 
1363
                        If this option is set, the driver enables cache flush.
 
1364
 
 
1365
- TPM Support:
 
1366
                CONFIG_TPM
 
1367
                Support TPM devices.
 
1368
 
 
1369
                CONFIG_TPM_TIS_I2C
 
1370
                Support for i2c bus TPM devices. Only one device
 
1371
                per system is supported at this time.
 
1372
 
 
1373
                        CONFIG_TPM_TIS_I2C_BUS_NUMBER
 
1374
                        Define the the i2c bus number for the TPM device
 
1375
 
 
1376
                        CONFIG_TPM_TIS_I2C_SLAVE_ADDRESS
 
1377
                        Define the TPM's address on the i2c bus
 
1378
 
 
1379
                        CONFIG_TPM_TIS_I2C_BURST_LIMITATION
 
1380
                        Define the burst count bytes upper limit
 
1381
 
 
1382
                CONFIG_TPM_ATMEL_TWI
 
1383
                Support for Atmel TWI TPM device. Requires I2C support.
 
1384
 
 
1385
                CONFIG_TPM_TIS_LPC
 
1386
                Support for generic parallel port TPM devices. Only one device
 
1387
                per system is supported at this time.
 
1388
 
 
1389
                        CONFIG_TPM_TIS_BASE_ADDRESS
 
1390
                        Base address where the generic TPM device is mapped
 
1391
                        to. Contemporary x86 systems usually map it at
 
1392
                        0xfed40000.
 
1393
 
 
1394
                CONFIG_CMD_TPM
 
1395
                Add tpm monitor functions.
 
1396
                Requires CONFIG_TPM. If CONFIG_TPM_AUTH_SESSIONS is set, also
 
1397
                provides monitor access to authorized functions.
 
1398
 
 
1399
                CONFIG_TPM
 
1400
                Define this to enable the TPM support library which provides
 
1401
                functional interfaces to some TPM commands.
 
1402
                Requires support for a TPM device.
 
1403
 
 
1404
                CONFIG_TPM_AUTH_SESSIONS
 
1405
                Define this to enable authorized functions in the TPM library.
 
1406
                Requires CONFIG_TPM and CONFIG_SHA1.
 
1407
 
 
1408
- USB Support:
 
1409
                At the moment only the UHCI host controller is
 
1410
                supported (PIP405, MIP405, MPC5200); define
 
1411
                CONFIG_USB_UHCI to enable it.
 
1412
                define CONFIG_USB_KEYBOARD to enable the USB Keyboard
 
1413
                and define CONFIG_USB_STORAGE to enable the USB
 
1414
                storage devices.
 
1415
                Note:
 
1416
                Supported are USB Keyboards and USB Floppy drives
 
1417
                (TEAC FD-05PUB).
 
1418
                MPC5200 USB requires additional defines:
 
1419
                        CONFIG_USB_CLOCK
 
1420
                                for 528 MHz Clock: 0x0001bbbb
 
1421
                        CONFIG_PSC3_USB
 
1422
                                for USB on PSC3
 
1423
                        CONFIG_USB_CONFIG
 
1424
                                for differential drivers: 0x00001000
 
1425
                                for single ended drivers: 0x00005000
 
1426
                                for differential drivers on PSC3: 0x00000100
 
1427
                                for single ended drivers on PSC3: 0x00004100
 
1428
                        CONFIG_SYS_USB_EVENT_POLL
 
1429
                                May be defined to allow interrupt polling
 
1430
                                instead of using asynchronous interrupts
 
1431
 
 
1432
                CONFIG_USB_EHCI_TXFIFO_THRESH enables setting of the
 
1433
                txfilltuning field in the EHCI controller on reset.
 
1434
 
 
1435
                CONFIG_USB_HUB_MIN_POWER_ON_DELAY defines the minimum
 
1436
                interval for usb hub power-on delay.(minimum 100msec)
 
1437
 
 
1438
- USB Device:
 
1439
                Define the below if you wish to use the USB console.
 
1440
                Once firmware is rebuilt from a serial console issue the
 
1441
                command "setenv stdin usbtty; setenv stdout usbtty" and
 
1442
                attach your USB cable. The Unix command "dmesg" should print
 
1443
                it has found a new device. The environment variable usbtty
 
1444
                can be set to gserial or cdc_acm to enable your device to
 
1445
                appear to a USB host as a Linux gserial device or a
 
1446
                Common Device Class Abstract Control Model serial device.
 
1447
                If you select usbtty = gserial you should be able to enumerate
 
1448
                a Linux host by
 
1449
                # modprobe usbserial vendor=0xVendorID product=0xProductID
 
1450
                else if using cdc_acm, simply setting the environment
 
1451
                variable usbtty to be cdc_acm should suffice. The following
 
1452
                might be defined in YourBoardName.h
 
1453
 
 
1454
                        CONFIG_USB_DEVICE
 
1455
                        Define this to build a UDC device
 
1456
 
 
1457
                        CONFIG_USB_TTY
 
1458
                        Define this to have a tty type of device available to
 
1459
                        talk to the UDC device
 
1460
 
 
1461
                        CONFIG_USBD_HS
 
1462
                        Define this to enable the high speed support for usb
 
1463
                        device and usbtty. If this feature is enabled, a routine
 
1464
                        int is_usbd_high_speed(void)
 
1465
                        also needs to be defined by the driver to dynamically poll
 
1466
                        whether the enumeration has succeded at high speed or full
 
1467
                        speed.
 
1468
 
 
1469
                        CONFIG_SYS_CONSOLE_IS_IN_ENV
 
1470
                        Define this if you want stdin, stdout &/or stderr to
 
1471
                        be set to usbtty.
 
1472
 
 
1473
                        mpc8xx:
 
1474
                                CONFIG_SYS_USB_EXTC_CLK 0xBLAH
 
1475
                                Derive USB clock from external clock "blah"
 
1476
                                - CONFIG_SYS_USB_EXTC_CLK 0x02
 
1477
 
 
1478
                                CONFIG_SYS_USB_BRG_CLK 0xBLAH
 
1479
                                Derive USB clock from brgclk
 
1480
                                - CONFIG_SYS_USB_BRG_CLK 0x04
 
1481
 
 
1482
                If you have a USB-IF assigned VendorID then you may wish to
 
1483
                define your own vendor specific values either in BoardName.h
 
1484
                or directly in usbd_vendor_info.h. If you don't define
 
1485
                CONFIG_USBD_MANUFACTURER, CONFIG_USBD_PRODUCT_NAME,
 
1486
                CONFIG_USBD_VENDORID and CONFIG_USBD_PRODUCTID, then U-Boot
 
1487
                should pretend to be a Linux device to it's target host.
 
1488
 
 
1489
                        CONFIG_USBD_MANUFACTURER
 
1490
                        Define this string as the name of your company for
 
1491
                        - CONFIG_USBD_MANUFACTURER "my company"
 
1492
 
 
1493
                        CONFIG_USBD_PRODUCT_NAME
 
1494
                        Define this string as the name of your product
 
1495
                        - CONFIG_USBD_PRODUCT_NAME "acme usb device"
 
1496
 
 
1497
                        CONFIG_USBD_VENDORID
 
1498
                        Define this as your assigned Vendor ID from the USB
 
1499
                        Implementors Forum. This *must* be a genuine Vendor ID
 
1500
                        to avoid polluting the USB namespace.
 
1501
                        - CONFIG_USBD_VENDORID 0xFFFF
 
1502
 
 
1503
                        CONFIG_USBD_PRODUCTID
 
1504
                        Define this as the unique Product ID
 
1505
                        for your device
 
1506
                        - CONFIG_USBD_PRODUCTID 0xFFFF
 
1507
 
 
1508
- ULPI Layer Support:
 
1509
                The ULPI (UTMI Low Pin (count) Interface) PHYs are supported via
 
1510
                the generic ULPI layer. The generic layer accesses the ULPI PHY
 
1511
                via the platform viewport, so you need both the genric layer and
 
1512
                the viewport enabled. Currently only Chipidea/ARC based
 
1513
                viewport is supported.
 
1514
                To enable the ULPI layer support, define CONFIG_USB_ULPI and
 
1515
                CONFIG_USB_ULPI_VIEWPORT in your board configuration file.
 
1516
                If your ULPI phy needs a different reference clock than the
 
1517
                standard 24 MHz then you have to define CONFIG_ULPI_REF_CLK to
 
1518
                the appropriate value in Hz.
 
1519
 
 
1520
- MMC Support:
 
1521
                The MMC controller on the Intel PXA is supported. To
 
1522
                enable this define CONFIG_MMC. The MMC can be
 
1523
                accessed from the boot prompt by mapping the device
 
1524
                to physical memory similar to flash. Command line is
 
1525
                enabled with CONFIG_CMD_MMC. The MMC driver also works with
 
1526
                the FAT fs. This is enabled with CONFIG_CMD_FAT.
 
1527
 
 
1528
                CONFIG_SH_MMCIF
 
1529
                Support for Renesas on-chip MMCIF controller
 
1530
 
 
1531
                        CONFIG_SH_MMCIF_ADDR
 
1532
                        Define the base address of MMCIF registers
 
1533
 
 
1534
                        CONFIG_SH_MMCIF_CLK
 
1535
                        Define the clock frequency for MMCIF
 
1536
 
 
1537
- USB Device Firmware Update (DFU) class support:
 
1538
                CONFIG_DFU_FUNCTION
 
1539
                This enables the USB portion of the DFU USB class
 
1540
 
 
1541
                CONFIG_CMD_DFU
 
1542
                This enables the command "dfu" which is used to have
 
1543
                U-Boot create a DFU class device via USB.  This command
 
1544
                requires that the "dfu_alt_info" environment variable be
 
1545
                set and define the alt settings to expose to the host.
 
1546
 
 
1547
                CONFIG_DFU_MMC
 
1548
                This enables support for exposing (e)MMC devices via DFU.
 
1549
 
 
1550
                CONFIG_DFU_NAND
 
1551
                This enables support for exposing NAND devices via DFU.
 
1552
 
 
1553
                CONFIG_DFU_RAM
 
1554
                This enables support for exposing RAM via DFU.
 
1555
                Note: DFU spec refer to non-volatile memory usage, but
 
1556
                allow usages beyond the scope of spec - here RAM usage,
 
1557
                one that would help mostly the developer.
 
1558
 
 
1559
                CONFIG_SYS_DFU_DATA_BUF_SIZE
 
1560
                Dfu transfer uses a buffer before writing data to the
 
1561
                raw storage device. Make the size (in bytes) of this buffer
 
1562
                configurable. The size of this buffer is also configurable
 
1563
                through the "dfu_bufsiz" environment variable.
 
1564
 
 
1565
                CONFIG_SYS_DFU_MAX_FILE_SIZE
 
1566
                When updating files rather than the raw storage device,
 
1567
                we use a static buffer to copy the file into and then write
 
1568
                the buffer once we've been given the whole file.  Define
 
1569
                this to the maximum filesize (in bytes) for the buffer.
 
1570
                Default is 4 MiB if undefined.
 
1571
 
 
1572
                DFU_DEFAULT_POLL_TIMEOUT
 
1573
                Poll timeout [ms], is the timeout a device can send to the
 
1574
                host. The host must wait for this timeout before sending
 
1575
                a subsequent DFU_GET_STATUS request to the device.
 
1576
 
 
1577
                DFU_MANIFEST_POLL_TIMEOUT
 
1578
                Poll timeout [ms], which the device sends to the host when
 
1579
                entering dfuMANIFEST state. Host waits this timeout, before
 
1580
                sending again an USB request to the device.
 
1581
 
 
1582
- Journaling Flash filesystem support:
 
1583
                CONFIG_JFFS2_NAND, CONFIG_JFFS2_NAND_OFF, CONFIG_JFFS2_NAND_SIZE,
 
1584
                CONFIG_JFFS2_NAND_DEV
 
1585
                Define these for a default partition on a NAND device
 
1586
 
 
1587
                CONFIG_SYS_JFFS2_FIRST_SECTOR,
 
1588
                CONFIG_SYS_JFFS2_FIRST_BANK, CONFIG_SYS_JFFS2_NUM_BANKS
 
1589
                Define these for a default partition on a NOR device
 
1590
 
 
1591
                CONFIG_SYS_JFFS_CUSTOM_PART
 
1592
                Define this to create an own partition. You have to provide a
 
1593
                function struct part_info* jffs2_part_info(int part_num)
 
1594
 
 
1595
                If you define only one JFFS2 partition you may also want to
 
1596
                #define CONFIG_SYS_JFFS_SINGLE_PART     1
 
1597
                to disable the command chpart. This is the default when you
 
1598
                have not defined a custom partition
 
1599
 
 
1600
- FAT(File Allocation Table) filesystem write function support:
 
1601
                CONFIG_FAT_WRITE
 
1602
 
 
1603
                Define this to enable support for saving memory data as a
 
1604
                file in FAT formatted partition.
 
1605
 
 
1606
                This will also enable the command "fatwrite" enabling the
 
1607
                user to write files to FAT.
 
1608
 
 
1609
CBFS (Coreboot Filesystem) support
 
1610
                CONFIG_CMD_CBFS
 
1611
 
 
1612
                Define this to enable support for reading from a Coreboot
 
1613
                filesystem. Available commands are cbfsinit, cbfsinfo, cbfsls
 
1614
                and cbfsload.
 
1615
 
 
1616
- Keyboard Support:
 
1617
                CONFIG_ISA_KEYBOARD
 
1618
 
 
1619
                Define this to enable standard (PC-Style) keyboard
 
1620
                support
 
1621
 
 
1622
                CONFIG_I8042_KBD
 
1623
                Standard PC keyboard driver with US (is default) and
 
1624
                GERMAN key layout (switch via environment 'keymap=de') support.
 
1625
                Export function i8042_kbd_init, i8042_tstc and i8042_getc
 
1626
                for cfb_console. Supports cursor blinking.
 
1627
 
 
1628
                CONFIG_CROS_EC_KEYB
 
1629
                Enables a Chrome OS keyboard using the CROS_EC interface.
 
1630
                This uses CROS_EC to communicate with a second microcontroller
 
1631
                which provides key scans on request.
 
1632
 
 
1633
- Video support:
 
1634
                CONFIG_VIDEO
 
1635
 
 
1636
                Define this to enable video support (for output to
 
1637
                video).
 
1638
 
 
1639
                CONFIG_VIDEO_CT69000
 
1640
 
 
1641
                Enable Chips & Technologies 69000 Video chip
 
1642
 
 
1643
                CONFIG_VIDEO_SMI_LYNXEM
 
1644
                Enable Silicon Motion SMI 712/710/810 Video chip. The
 
1645
                video output is selected via environment 'videoout'
 
1646
                (1 = LCD and 2 = CRT). If videoout is undefined, CRT is
 
1647
                assumed.
 
1648
 
 
1649
                For the CT69000 and SMI_LYNXEM drivers, videomode is
 
1650
                selected via environment 'videomode'. Two different ways
 
1651
                are possible:
 
1652
                - "videomode=num"   'num' is a standard LiLo mode numbers.
 
1653
                Following standard modes are supported  (* is default):
 
1654
 
 
1655
                      Colors    640x480 800x600 1024x768 1152x864 1280x1024
 
1656
                -------------+---------------------------------------------
 
1657
                      8 bits |  0x301*  0x303    0x305    0x161     0x307
 
1658
                     15 bits |  0x310   0x313    0x316    0x162     0x319
 
1659
                     16 bits |  0x311   0x314    0x317    0x163     0x31A
 
1660
                     24 bits |  0x312   0x315    0x318      ?       0x31B
 
1661
                -------------+---------------------------------------------
 
1662
                (i.e. setenv videomode 317; saveenv; reset;)
 
1663
 
 
1664
                - "videomode=bootargs" all the video parameters are parsed
 
1665
                from the bootargs. (See drivers/video/videomodes.c)
 
1666
 
 
1667
 
 
1668
                CONFIG_VIDEO_SED13806
 
1669
                Enable Epson SED13806 driver. This driver supports 8bpp
 
1670
                and 16bpp modes defined by CONFIG_VIDEO_SED13806_8BPP
 
1671
                or CONFIG_VIDEO_SED13806_16BPP
 
1672
 
 
1673
                CONFIG_FSL_DIU_FB
 
1674
                Enable the Freescale DIU video driver.  Reference boards for
 
1675
                SOCs that have a DIU should define this macro to enable DIU
 
1676
                support, and should also define these other macros:
 
1677
 
 
1678
                        CONFIG_SYS_DIU_ADDR
 
1679
                        CONFIG_VIDEO
 
1680
                        CONFIG_CMD_BMP
 
1681
                        CONFIG_CFB_CONSOLE
 
1682
                        CONFIG_VIDEO_SW_CURSOR
 
1683
                        CONFIG_VGA_AS_SINGLE_DEVICE
 
1684
                        CONFIG_VIDEO_LOGO
 
1685
                        CONFIG_VIDEO_BMP_LOGO
 
1686
 
 
1687
                The DIU driver will look for the 'video-mode' environment
 
1688
                variable, and if defined, enable the DIU as a console during
 
1689
                boot.  See the documentation file README.video for a
 
1690
                description of this variable.
 
1691
 
 
1692
                CONFIG_VIDEO_VGA
 
1693
 
 
1694
                Enable the VGA video / BIOS for x86. The alternative if you
 
1695
                are using coreboot is to use the coreboot frame buffer
 
1696
                driver.
 
1697
 
 
1698
 
 
1699
- Keyboard Support:
 
1700
                CONFIG_KEYBOARD
 
1701
 
 
1702
                Define this to enable a custom keyboard support.
 
1703
                This simply calls drv_keyboard_init() which must be
 
1704
                defined in your board-specific files.
 
1705
                The only board using this so far is RBC823.
 
1706
 
 
1707
- LCD Support:  CONFIG_LCD
 
1708
 
 
1709
                Define this to enable LCD support (for output to LCD
 
1710
                display); also select one of the supported displays
 
1711
                by defining one of these:
 
1712
 
 
1713
                CONFIG_ATMEL_LCD:
 
1714
 
 
1715
                        HITACHI TX09D70VM1CCA, 3.5", 240x320.
 
1716
 
 
1717
                CONFIG_NEC_NL6448AC33:
 
1718
 
 
1719
                        NEC NL6448AC33-18. Active, color, single scan.
 
1720
 
 
1721
                CONFIG_NEC_NL6448BC20
 
1722
 
 
1723
                        NEC NL6448BC20-08. 6.5", 640x480.
 
1724
                        Active, color, single scan.
 
1725
 
 
1726
                CONFIG_NEC_NL6448BC33_54
 
1727
 
 
1728
                        NEC NL6448BC33-54. 10.4", 640x480.
 
1729
                        Active, color, single scan.
 
1730
 
 
1731
                CONFIG_SHARP_16x9
 
1732
 
 
1733
                        Sharp 320x240. Active, color, single scan.
 
1734
                        It isn't 16x9, and I am not sure what it is.
 
1735
 
 
1736
                CONFIG_SHARP_LQ64D341
 
1737
 
 
1738
                        Sharp LQ64D341 display, 640x480.
 
1739
                        Active, color, single scan.
 
1740
 
 
1741
                CONFIG_HLD1045
 
1742
 
 
1743
                        HLD1045 display, 640x480.
 
1744
                        Active, color, single scan.
 
1745
 
 
1746
                CONFIG_OPTREX_BW
 
1747
 
 
1748
                        Optrex   CBL50840-2 NF-FW 99 22 M5
 
1749
                        or
 
1750
                        Hitachi  LMG6912RPFC-00T
 
1751
                        or
 
1752
                        Hitachi  SP14Q002
 
1753
 
 
1754
                        320x240. Black & white.
 
1755
 
 
1756
                Normally display is black on white background; define
 
1757
                CONFIG_SYS_WHITE_ON_BLACK to get it inverted.
 
1758
 
 
1759
                CONFIG_LCD_ALIGNMENT
 
1760
 
 
1761
                Normally the LCD is page-aligned (tyically 4KB). If this is
 
1762
                defined then the LCD will be aligned to this value instead.
 
1763
                For ARM it is sometimes useful to use MMU_SECTION_SIZE
 
1764
                here, since it is cheaper to change data cache settings on
 
1765
                a per-section basis.
 
1766
 
 
1767
                CONFIG_CONSOLE_SCROLL_LINES
 
1768
 
 
1769
                When the console need to be scrolled, this is the number of
 
1770
                lines to scroll by. It defaults to 1. Increasing this makes
 
1771
                the console jump but can help speed up operation when scrolling
 
1772
                is slow.
 
1773
 
 
1774
                CONFIG_LCD_BMP_RLE8
 
1775
 
 
1776
                Support drawing of RLE8-compressed bitmaps on the LCD.
 
1777
 
 
1778
                CONFIG_I2C_EDID
 
1779
 
 
1780
                Enables an 'i2c edid' command which can read EDID
 
1781
                information over I2C from an attached LCD display.
 
1782
 
 
1783
- Splash Screen Support: CONFIG_SPLASH_SCREEN
 
1784
 
 
1785
                If this option is set, the environment is checked for
 
1786
                a variable "splashimage". If found, the usual display
 
1787
                of logo, copyright and system information on the LCD
 
1788
                is suppressed and the BMP image at the address
 
1789
                specified in "splashimage" is loaded instead. The
 
1790
                console is redirected to the "nulldev", too. This
 
1791
                allows for a "silent" boot where a splash screen is
 
1792
                loaded very quickly after power-on.
 
1793
 
 
1794
                CONFIG_SPLASHIMAGE_GUARD
 
1795
 
 
1796
                If this option is set, then U-Boot will prevent the environment
 
1797
                variable "splashimage" from being set to a problematic address
 
1798
                (see README.displaying-bmps).
 
1799
                This option is useful for targets where, due to alignment
 
1800
                restrictions, an improperly aligned BMP image will cause a data
 
1801
                abort. If you think you will not have problems with unaligned
 
1802
                accesses (for example because your toolchain prevents them)
 
1803
                there is no need to set this option.
 
1804
 
 
1805
                CONFIG_SPLASH_SCREEN_ALIGN
 
1806
 
 
1807
                If this option is set the splash image can be freely positioned
 
1808
                on the screen. Environment variable "splashpos" specifies the
 
1809
                position as "x,y". If a positive number is given it is used as
 
1810
                number of pixel from left/top. If a negative number is given it
 
1811
                is used as number of pixel from right/bottom. You can also
 
1812
                specify 'm' for centering the image.
 
1813
 
 
1814
                Example:
 
1815
                setenv splashpos m,m
 
1816
                        => image at center of screen
 
1817
 
 
1818
                setenv splashpos 30,20
 
1819
                        => image at x = 30 and y = 20
 
1820
 
 
1821
                setenv splashpos -10,m
 
1822
                        => vertically centered image
 
1823
                           at x = dspWidth - bmpWidth - 9
 
1824
 
 
1825
- Gzip compressed BMP image support: CONFIG_VIDEO_BMP_GZIP
 
1826
 
 
1827
                If this option is set, additionally to standard BMP
 
1828
                images, gzipped BMP images can be displayed via the
 
1829
                splashscreen support or the bmp command.
 
1830
 
 
1831
- Run length encoded BMP image (RLE8) support: CONFIG_VIDEO_BMP_RLE8
 
1832
 
 
1833
                If this option is set, 8-bit RLE compressed BMP images
 
1834
                can be displayed via the splashscreen support or the
 
1835
                bmp command.
 
1836
 
 
1837
- Do compresssing for memory range:
 
1838
                CONFIG_CMD_ZIP
 
1839
 
 
1840
                If this option is set, it would use zlib deflate method
 
1841
                to compress the specified memory at its best effort.
 
1842
 
 
1843
- Compression support:
 
1844
                CONFIG_GZIP
 
1845
 
 
1846
                Enabled by default to support gzip compressed images.
 
1847
 
 
1848
                CONFIG_BZIP2
 
1849
 
 
1850
                If this option is set, support for bzip2 compressed
 
1851
                images is included. If not, only uncompressed and gzip
 
1852
                compressed images are supported.
 
1853
 
 
1854
                NOTE: the bzip2 algorithm requires a lot of RAM, so
 
1855
                the malloc area (as defined by CONFIG_SYS_MALLOC_LEN) should
 
1856
                be at least 4MB.
 
1857
 
 
1858
                CONFIG_LZMA
 
1859
 
 
1860
                If this option is set, support for lzma compressed
 
1861
                images is included.
 
1862
 
 
1863
                Note: The LZMA algorithm adds between 2 and 4KB of code and it
 
1864
                requires an amount of dynamic memory that is given by the
 
1865
                formula:
 
1866
 
 
1867
                        (1846 + 768 << (lc + lp)) * sizeof(uint16)
 
1868
 
 
1869
                Where lc and lp stand for, respectively, Literal context bits
 
1870
                and Literal pos bits.
 
1871
 
 
1872
                This value is upper-bounded by 14MB in the worst case. Anyway,
 
1873
                for a ~4MB large kernel image, we have lc=3 and lp=0 for a
 
1874
                total amount of (1846 + 768 << (3 + 0)) * 2 = ~41KB... that is
 
1875
                a very small buffer.
 
1876
 
 
1877
                Use the lzmainfo tool to determinate the lc and lp values and
 
1878
                then calculate the amount of needed dynamic memory (ensuring
 
1879
                the appropriate CONFIG_SYS_MALLOC_LEN value).
 
1880
 
 
1881
                CONFIG_LZO
 
1882
 
 
1883
                If this option is set, support for LZO compressed images
 
1884
                is included.
 
1885
 
 
1886
- MII/PHY support:
 
1887
                CONFIG_PHY_ADDR
 
1888
 
 
1889
                The address of PHY on MII bus.
 
1890
 
 
1891
                CONFIG_PHY_CLOCK_FREQ (ppc4xx)
 
1892
 
 
1893
                The clock frequency of the MII bus
 
1894
 
 
1895
                CONFIG_PHY_GIGE
 
1896
 
 
1897
                If this option is set, support for speed/duplex
 
1898
                detection of gigabit PHY is included.
 
1899
 
 
1900
                CONFIG_PHY_RESET_DELAY
 
1901
 
 
1902
                Some PHY like Intel LXT971A need extra delay after
 
1903
                reset before any MII register access is possible.
 
1904
                For such PHY, set this option to the usec delay
 
1905
                required. (minimum 300usec for LXT971A)
 
1906
 
 
1907
                CONFIG_PHY_CMD_DELAY (ppc4xx)
 
1908
 
 
1909
                Some PHY like Intel LXT971A need extra delay after
 
1910
                command issued before MII status register can be read
 
1911
 
 
1912
- Ethernet address:
 
1913
                CONFIG_ETHADDR
 
1914
                CONFIG_ETH1ADDR
 
1915
                CONFIG_ETH2ADDR
 
1916
                CONFIG_ETH3ADDR
 
1917
                CONFIG_ETH4ADDR
 
1918
                CONFIG_ETH5ADDR
 
1919
 
 
1920
                Define a default value for Ethernet address to use
 
1921
                for the respective Ethernet interface, in case this
 
1922
                is not determined automatically.
 
1923
 
 
1924
- IP address:
 
1925
                CONFIG_IPADDR
 
1926
 
 
1927
                Define a default value for the IP address to use for
 
1928
                the default Ethernet interface, in case this is not
 
1929
                determined through e.g. bootp.
 
1930
                (Environment variable "ipaddr")
 
1931
 
 
1932
- Server IP address:
 
1933
                CONFIG_SERVERIP
 
1934
 
 
1935
                Defines a default value for the IP address of a TFTP
 
1936
                server to contact when using the "tftboot" command.
 
1937
                (Environment variable "serverip")
 
1938
 
 
1939
                CONFIG_KEEP_SERVERADDR
 
1940
 
 
1941
                Keeps the server's MAC address, in the env 'serveraddr'
 
1942
                for passing to bootargs (like Linux's netconsole option)
 
1943
 
 
1944
- Gateway IP address:
 
1945
                CONFIG_GATEWAYIP
 
1946
 
 
1947
                Defines a default value for the IP address of the
 
1948
                default router where packets to other networks are
 
1949
                sent to.
 
1950
                (Environment variable "gatewayip")
 
1951
 
 
1952
- Subnet mask:
 
1953
                CONFIG_NETMASK
 
1954
 
 
1955
                Defines a default value for the subnet mask (or
 
1956
                routing prefix) which is used to determine if an IP
 
1957
                address belongs to the local subnet or needs to be
 
1958
                forwarded through a router.
 
1959
                (Environment variable "netmask")
 
1960
 
 
1961
- Multicast TFTP Mode:
 
1962
                CONFIG_MCAST_TFTP
 
1963
 
 
1964
                Defines whether you want to support multicast TFTP as per
 
1965
                rfc-2090; for example to work with atftp.  Lets lots of targets
 
1966
                tftp down the same boot image concurrently.  Note: the Ethernet
 
1967
                driver in use must provide a function: mcast() to join/leave a
 
1968
                multicast group.
 
1969
 
 
1970
- BOOTP Recovery Mode:
 
1971
                CONFIG_BOOTP_RANDOM_DELAY
 
1972
 
 
1973
                If you have many targets in a network that try to
 
1974
                boot using BOOTP, you may want to avoid that all
 
1975
                systems send out BOOTP requests at precisely the same
 
1976
                moment (which would happen for instance at recovery
 
1977
                from a power failure, when all systems will try to
 
1978
                boot, thus flooding the BOOTP server. Defining
 
1979
                CONFIG_BOOTP_RANDOM_DELAY causes a random delay to be
 
1980
                inserted before sending out BOOTP requests. The
 
1981
                following delays are inserted then:
 
1982
 
 
1983
                1st BOOTP request:      delay 0 ... 1 sec
 
1984
                2nd BOOTP request:      delay 0 ... 2 sec
 
1985
                3rd BOOTP request:      delay 0 ... 4 sec
 
1986
                4th and following
 
1987
                BOOTP requests:         delay 0 ... 8 sec
 
1988
 
 
1989
- DHCP Advanced Options:
 
1990
                You can fine tune the DHCP functionality by defining
 
1991
                CONFIG_BOOTP_* symbols:
 
1992
 
 
1993
                CONFIG_BOOTP_SUBNETMASK
 
1994
                CONFIG_BOOTP_GATEWAY
 
1995
                CONFIG_BOOTP_HOSTNAME
 
1996
                CONFIG_BOOTP_NISDOMAIN
 
1997
                CONFIG_BOOTP_BOOTPATH
 
1998
                CONFIG_BOOTP_BOOTFILESIZE
 
1999
                CONFIG_BOOTP_DNS
 
2000
                CONFIG_BOOTP_DNS2
 
2001
                CONFIG_BOOTP_SEND_HOSTNAME
 
2002
                CONFIG_BOOTP_NTPSERVER
 
2003
                CONFIG_BOOTP_TIMEOFFSET
 
2004
                CONFIG_BOOTP_VENDOREX
 
2005
                CONFIG_BOOTP_MAY_FAIL
 
2006
 
 
2007
                CONFIG_BOOTP_SERVERIP - TFTP server will be the serverip
 
2008
                environment variable, not the BOOTP server.
 
2009
 
 
2010
                CONFIG_BOOTP_MAY_FAIL - If the DHCP server is not found
 
2011
                after the configured retry count, the call will fail
 
2012
                instead of starting over.  This can be used to fail over
 
2013
                to Link-local IP address configuration if the DHCP server
 
2014
                is not available.
 
2015
 
 
2016
                CONFIG_BOOTP_DNS2 - If a DHCP client requests the DNS
 
2017
                serverip from a DHCP server, it is possible that more
 
2018
                than one DNS serverip is offered to the client.
 
2019
                If CONFIG_BOOTP_DNS2 is enabled, the secondary DNS
 
2020
                serverip will be stored in the additional environment
 
2021
                variable "dnsip2". The first DNS serverip is always
 
2022
                stored in the variable "dnsip", when CONFIG_BOOTP_DNS
 
2023
                is defined.
 
2024
 
 
2025
                CONFIG_BOOTP_SEND_HOSTNAME - Some DHCP servers are capable
 
2026
                to do a dynamic update of a DNS server. To do this, they
 
2027
                need the hostname of the DHCP requester.
 
2028
                If CONFIG_BOOTP_SEND_HOSTNAME is defined, the content
 
2029
                of the "hostname" environment variable is passed as
 
2030
                option 12 to the DHCP server.
 
2031
 
 
2032
                CONFIG_BOOTP_DHCP_REQUEST_DELAY
 
2033
 
 
2034
                A 32bit value in microseconds for a delay between
 
2035
                receiving a "DHCP Offer" and sending the "DHCP Request".
 
2036
                This fixes a problem with certain DHCP servers that don't
 
2037
                respond 100% of the time to a "DHCP request". E.g. On an
 
2038
                AT91RM9200 processor running at 180MHz, this delay needed
 
2039
                to be *at least* 15,000 usec before a Windows Server 2003
 
2040
                DHCP server would reply 100% of the time. I recommend at
 
2041
                least 50,000 usec to be safe. The alternative is to hope
 
2042
                that one of the retries will be successful but note that
 
2043
                the DHCP timeout and retry process takes a longer than
 
2044
                this delay.
 
2045
 
 
2046
 - Link-local IP address negotiation:
 
2047
                Negotiate with other link-local clients on the local network
 
2048
                for an address that doesn't require explicit configuration.
 
2049
                This is especially useful if a DHCP server cannot be guaranteed
 
2050
                to exist in all environments that the device must operate.
 
2051
 
 
2052
                See doc/README.link-local for more information.
 
2053
 
 
2054
 - CDP Options:
 
2055
                CONFIG_CDP_DEVICE_ID
 
2056
 
 
2057
                The device id used in CDP trigger frames.
 
2058
 
 
2059
                CONFIG_CDP_DEVICE_ID_PREFIX
 
2060
 
 
2061
                A two character string which is prefixed to the MAC address
 
2062
                of the device.
 
2063
 
 
2064
                CONFIG_CDP_PORT_ID
 
2065
 
 
2066
                A printf format string which contains the ascii name of
 
2067
                the port. Normally is set to "eth%d" which sets
 
2068
                eth0 for the first Ethernet, eth1 for the second etc.
 
2069
 
 
2070
                CONFIG_CDP_CAPABILITIES
 
2071
 
 
2072
                A 32bit integer which indicates the device capabilities;
 
2073
                0x00000010 for a normal host which does not forwards.
 
2074
 
 
2075
                CONFIG_CDP_VERSION
 
2076
 
 
2077
                An ascii string containing the version of the software.
 
2078
 
 
2079
                CONFIG_CDP_PLATFORM
 
2080
 
 
2081
                An ascii string containing the name of the platform.
 
2082
 
 
2083
                CONFIG_CDP_TRIGGER
 
2084
 
 
2085
                A 32bit integer sent on the trigger.
 
2086
 
 
2087
                CONFIG_CDP_POWER_CONSUMPTION
 
2088
 
 
2089
                A 16bit integer containing the power consumption of the
 
2090
                device in .1 of milliwatts.
 
2091
 
 
2092
                CONFIG_CDP_APPLIANCE_VLAN_TYPE
 
2093
 
 
2094
                A byte containing the id of the VLAN.
 
2095
 
 
2096
- Status LED:   CONFIG_STATUS_LED
 
2097
 
 
2098
                Several configurations allow to display the current
 
2099
                status using a LED. For instance, the LED will blink
 
2100
                fast while running U-Boot code, stop blinking as
 
2101
                soon as a reply to a BOOTP request was received, and
 
2102
                start blinking slow once the Linux kernel is running
 
2103
                (supported by a status LED driver in the Linux
 
2104
                kernel). Defining CONFIG_STATUS_LED enables this
 
2105
                feature in U-Boot.
 
2106
 
 
2107
                Additional options:
 
2108
 
 
2109
                CONFIG_GPIO_LED
 
2110
                The status LED can be connected to a GPIO pin.
 
2111
                In such cases, the gpio_led driver can be used as a
 
2112
                status LED backend implementation. Define CONFIG_GPIO_LED
 
2113
                to include the gpio_led driver in the U-Boot binary.
 
2114
 
 
2115
                CONFIG_GPIO_LED_INVERTED_TABLE
 
2116
                Some GPIO connected LEDs may have inverted polarity in which
 
2117
                case the GPIO high value corresponds to LED off state and
 
2118
                GPIO low value corresponds to LED on state.
 
2119
                In such cases CONFIG_GPIO_LED_INVERTED_TABLE may be defined
 
2120
                with a list of GPIO LEDs that have inverted polarity.
 
2121
 
 
2122
- CAN Support:  CONFIG_CAN_DRIVER
 
2123
 
 
2124
                Defining CONFIG_CAN_DRIVER enables CAN driver support
 
2125
                on those systems that support this (optional)
 
2126
                feature, like the TQM8xxL modules.
 
2127
 
 
2128
- I2C Support:  CONFIG_SYS_I2C
 
2129
 
 
2130
                This enable the NEW i2c subsystem, and will allow you to use
 
2131
                i2c commands at the u-boot command line (as long as you set
 
2132
                CONFIG_CMD_I2C in CONFIG_COMMANDS) and communicate with i2c
 
2133
                based realtime clock chips or other i2c devices. See
 
2134
                common/cmd_i2c.c for a description of the command line
 
2135
                interface.
 
2136
 
 
2137
                ported i2c driver to the new framework:
 
2138
                - drivers/i2c/soft_i2c.c:
 
2139
                  - activate first bus with CONFIG_SYS_I2C_SOFT define
 
2140
                    CONFIG_SYS_I2C_SOFT_SPEED and CONFIG_SYS_I2C_SOFT_SLAVE
 
2141
                    for defining speed and slave address
 
2142
                  - activate second bus with I2C_SOFT_DECLARATIONS2 define
 
2143
                    CONFIG_SYS_I2C_SOFT_SPEED_2 and CONFIG_SYS_I2C_SOFT_SLAVE_2
 
2144
                    for defining speed and slave address
 
2145
                  - activate third bus with I2C_SOFT_DECLARATIONS3 define
 
2146
                    CONFIG_SYS_I2C_SOFT_SPEED_3 and CONFIG_SYS_I2C_SOFT_SLAVE_3
 
2147
                    for defining speed and slave address
 
2148
                  - activate fourth bus with I2C_SOFT_DECLARATIONS4 define
 
2149
                    CONFIG_SYS_I2C_SOFT_SPEED_4 and CONFIG_SYS_I2C_SOFT_SLAVE_4
 
2150
                    for defining speed and slave address
 
2151
 
 
2152
                - drivers/i2c/fsl_i2c.c:
 
2153
                  - activate i2c driver with CONFIG_SYS_I2C_FSL
 
2154
                    define CONFIG_SYS_FSL_I2C_OFFSET for setting the register
 
2155
                    offset CONFIG_SYS_FSL_I2C_SPEED for the i2c speed and
 
2156
                    CONFIG_SYS_FSL_I2C_SLAVE for the slave addr of the first
 
2157
                    bus.
 
2158
                  - If your board supports a second fsl i2c bus, define
 
2159
                    CONFIG_SYS_FSL_I2C2_OFFSET for the register offset
 
2160
                    CONFIG_SYS_FSL_I2C2_SPEED for the speed and
 
2161
                    CONFIG_SYS_FSL_I2C2_SLAVE for the slave address of the
 
2162
                    second bus.
 
2163
 
 
2164
                - drivers/i2c/tegra_i2c.c:
 
2165
                  - activate this driver with CONFIG_SYS_I2C_TEGRA
 
2166
                  - This driver adds 4 i2c buses with a fix speed from
 
2167
                    100000 and the slave addr 0!
 
2168
 
 
2169
                - drivers/i2c/ppc4xx_i2c.c
 
2170
                  - activate this driver with CONFIG_SYS_I2C_PPC4XX
 
2171
                  - CONFIG_SYS_I2C_PPC4XX_CH0 activate hardware channel 0
 
2172
                  - CONFIG_SYS_I2C_PPC4XX_CH1 activate hardware channel 1
 
2173
 
 
2174
                - drivers/i2c/i2c_mxc.c
 
2175
                  - activate this driver with CONFIG_SYS_I2C_MXC
 
2176
                  - define speed for bus 1 with CONFIG_SYS_MXC_I2C1_SPEED
 
2177
                  - define slave for bus 1 with CONFIG_SYS_MXC_I2C1_SLAVE
 
2178
                  - define speed for bus 2 with CONFIG_SYS_MXC_I2C2_SPEED
 
2179
                  - define slave for bus 2 with CONFIG_SYS_MXC_I2C2_SLAVE
 
2180
                  - define speed for bus 3 with CONFIG_SYS_MXC_I2C3_SPEED
 
2181
                  - define slave for bus 3 with CONFIG_SYS_MXC_I2C3_SLAVE
 
2182
                If thoses defines are not set, default value is 100000
 
2183
                for speed, and 0 for slave.
 
2184
 
 
2185
                - drivers/i2c/rcar_i2c.c:
 
2186
                  - activate this driver with CONFIG_SYS_I2C_RCAR
 
2187
                  - This driver adds 4 i2c buses
 
2188
 
 
2189
                  - CONFIG_SYS_RCAR_I2C0_BASE for setting the register channel 0
 
2190
                  - CONFIG_SYS_RCAR_I2C0_SPEED for for the speed channel 0
 
2191
                  - CONFIG_SYS_RCAR_I2C1_BASE for setting the register channel 1
 
2192
                  - CONFIG_SYS_RCAR_I2C1_SPEED for for the speed channel 1
 
2193
                  - CONFIG_SYS_RCAR_I2C2_BASE for setting the register channel 2
 
2194
                  - CONFIG_SYS_RCAR_I2C2_SPEED for for the speed channel 2
 
2195
                  - CONFIG_SYS_RCAR_I2C3_BASE for setting the register channel 3
 
2196
                  - CONFIG_SYS_RCAR_I2C3_SPEED for for the speed channel 3
 
2197
                  - CONFIF_SYS_RCAR_I2C_NUM_CONTROLLERS for number of i2c buses
 
2198
 
 
2199
                - drivers/i2c/sh_i2c.c:
 
2200
                  - activate this driver with CONFIG_SYS_I2C_SH
 
2201
                  - This driver adds from 2 to 5 i2c buses
 
2202
 
 
2203
                  - CONFIG_SYS_I2C_SH_BASE0 for setting the register channel 0
 
2204
                  - CONFIG_SYS_I2C_SH_SPEED0 for for the speed channel 0
 
2205
                  - CONFIG_SYS_I2C_SH_BASE1 for setting the register channel 1
 
2206
                  - CONFIG_SYS_I2C_SH_SPEED1 for for the speed channel 1
 
2207
                  - CONFIG_SYS_I2C_SH_BASE2 for setting the register channel 2
 
2208
                  - CONFIG_SYS_I2C_SH_SPEED2 for for the speed channel 2
 
2209
                  - CONFIG_SYS_I2C_SH_BASE3 for setting the register channel 3
 
2210
                  - CONFIG_SYS_I2C_SH_SPEED3 for for the speed channel 3
 
2211
                  - CONFIG_SYS_I2C_SH_BASE4 for setting the register channel 4
 
2212
                  - CONFIG_SYS_I2C_SH_SPEED4 for for the speed channel 4
 
2213
                  - CONFIG_SYS_I2C_SH_BASE5 for setting the register channel 5
 
2214
                  - CONFIG_SYS_I2C_SH_SPEED5 for for the speed channel 5
 
2215
                  - CONFIF_SYS_I2C_SH_NUM_CONTROLLERS for nummber of i2c buses
 
2216
 
 
2217
                - drivers/i2c/omap24xx_i2c.c
 
2218
                  - activate this driver with CONFIG_SYS_I2C_OMAP24XX
 
2219
                  - CONFIG_SYS_OMAP24_I2C_SPEED speed channel 0
 
2220
                  - CONFIG_SYS_OMAP24_I2C_SLAVE slave addr channel 0
 
2221
                  - CONFIG_SYS_OMAP24_I2C_SPEED1 speed channel 1
 
2222
                  - CONFIG_SYS_OMAP24_I2C_SLAVE1 slave addr channel 1
 
2223
                  - CONFIG_SYS_OMAP24_I2C_SPEED2 speed channel 2
 
2224
                  - CONFIG_SYS_OMAP24_I2C_SLAVE2 slave addr channel 2
 
2225
                  - CONFIG_SYS_OMAP24_I2C_SPEED3 speed channel 3
 
2226
                  - CONFIG_SYS_OMAP24_I2C_SLAVE3 slave addr channel 3
 
2227
                  - CONFIG_SYS_OMAP24_I2C_SPEED4 speed channel 4
 
2228
                  - CONFIG_SYS_OMAP24_I2C_SLAVE4 slave addr channel 4
 
2229
 
 
2230
                - drivers/i2c/zynq_i2c.c
 
2231
                  - activate this driver with CONFIG_SYS_I2C_ZYNQ
 
2232
                  - set CONFIG_SYS_I2C_ZYNQ_SPEED for speed setting
 
2233
                  - set CONFIG_SYS_I2C_ZYNQ_SLAVE for slave addr
 
2234
 
 
2235
                - drivers/i2c/s3c24x0_i2c.c:
 
2236
                  - activate this driver with CONFIG_SYS_I2C_S3C24X0
 
2237
                  - This driver adds i2c buses (11 for Exynos5250, Exynos5420
 
2238
                    9 i2c buses for Exynos4 and 1 for S3C24X0 SoCs from Samsung)
 
2239
                    with a fix speed from 100000 and the slave addr 0!
 
2240
 
 
2241
                additional defines:
 
2242
 
 
2243
                CONFIG_SYS_NUM_I2C_BUSES
 
2244
                Hold the number of i2c busses you want to use. If you
 
2245
                don't use/have i2c muxes on your i2c bus, this
 
2246
                is equal to CONFIG_SYS_NUM_I2C_ADAPTERS, and you can
 
2247
                omit this define.
 
2248
 
 
2249
                CONFIG_SYS_I2C_DIRECT_BUS
 
2250
                define this, if you don't use i2c muxes on your hardware.
 
2251
                if CONFIG_SYS_I2C_MAX_HOPS is not defined or == 0 you can
 
2252
                omit this define.
 
2253
 
 
2254
                CONFIG_SYS_I2C_MAX_HOPS
 
2255
                define how many muxes are maximal consecutively connected
 
2256
                on one i2c bus. If you not use i2c muxes, omit this
 
2257
                define.
 
2258
 
 
2259
                CONFIG_SYS_I2C_BUSES
 
2260
                hold a list of busses you want to use, only used if
 
2261
                CONFIG_SYS_I2C_DIRECT_BUS is not defined, for example
 
2262
                a board with CONFIG_SYS_I2C_MAX_HOPS = 1 and
 
2263
                CONFIG_SYS_NUM_I2C_BUSES = 9:
 
2264
 
 
2265
                 CONFIG_SYS_I2C_BUSES   {{0, {I2C_NULL_HOP}}, \
 
2266
                                        {0, {{I2C_MUX_PCA9547, 0x70, 1}}}, \
 
2267
                                        {0, {{I2C_MUX_PCA9547, 0x70, 2}}}, \
 
2268
                                        {0, {{I2C_MUX_PCA9547, 0x70, 3}}}, \
 
2269
                                        {0, {{I2C_MUX_PCA9547, 0x70, 4}}}, \
 
2270
                                        {0, {{I2C_MUX_PCA9547, 0x70, 5}}}, \
 
2271
                                        {1, {I2C_NULL_HOP}}, \
 
2272
                                        {1, {{I2C_MUX_PCA9544, 0x72, 1}}}, \
 
2273
                                        {1, {{I2C_MUX_PCA9544, 0x72, 2}}}, \
 
2274
                                        }
 
2275
 
 
2276
                which defines
 
2277
                        bus 0 on adapter 0 without a mux
 
2278
                        bus 1 on adapter 0 with a PCA9547 on address 0x70 port 1
 
2279
                        bus 2 on adapter 0 with a PCA9547 on address 0x70 port 2
 
2280
                        bus 3 on adapter 0 with a PCA9547 on address 0x70 port 3
 
2281
                        bus 4 on adapter 0 with a PCA9547 on address 0x70 port 4
 
2282
                        bus 5 on adapter 0 with a PCA9547 on address 0x70 port 5
 
2283
                        bus 6 on adapter 1 without a mux
 
2284
                        bus 7 on adapter 1 with a PCA9544 on address 0x72 port 1
 
2285
                        bus 8 on adapter 1 with a PCA9544 on address 0x72 port 2
 
2286
 
 
2287
                If you do not have i2c muxes on your board, omit this define.
 
2288
 
 
2289
- Legacy I2C Support:   CONFIG_HARD_I2C
 
2290
 
 
2291
                NOTE: It is intended to move drivers to CONFIG_SYS_I2C which
 
2292
                provides the following compelling advantages:
 
2293
 
 
2294
                - more than one i2c adapter is usable
 
2295
                - approved multibus support
 
2296
                - better i2c mux support
 
2297
 
 
2298
                ** Please consider updating your I2C driver now. **
 
2299
 
 
2300
                These enable legacy I2C serial bus commands. Defining
 
2301
                CONFIG_HARD_I2C will include the appropriate I2C driver
 
2302
                for the selected CPU.
 
2303
 
 
2304
                This will allow you to use i2c commands at the u-boot
 
2305
                command line (as long as you set CONFIG_CMD_I2C in
 
2306
                CONFIG_COMMANDS) and communicate with i2c based realtime
 
2307
                clock chips. See common/cmd_i2c.c for a description of the
 
2308
                command line interface.
 
2309
 
 
2310
                CONFIG_HARD_I2C selects a hardware I2C controller.
 
2311
 
 
2312
                There are several other quantities that must also be
 
2313
                defined when you define CONFIG_HARD_I2C.
 
2314
 
 
2315
                In both cases you will need to define CONFIG_SYS_I2C_SPEED
 
2316
                to be the frequency (in Hz) at which you wish your i2c bus
 
2317
                to run and CONFIG_SYS_I2C_SLAVE to be the address of this node (ie
 
2318
                the CPU's i2c node address).
 
2319
 
 
2320
                Now, the u-boot i2c code for the mpc8xx
 
2321
                (arch/powerpc/cpu/mpc8xx/i2c.c) sets the CPU up as a master node
 
2322
                and so its address should therefore be cleared to 0 (See,
 
2323
                eg, MPC823e User's Manual p.16-473). So, set
 
2324
                CONFIG_SYS_I2C_SLAVE to 0.
 
2325
 
 
2326
                CONFIG_SYS_I2C_INIT_MPC5XXX
 
2327
 
 
2328
                When a board is reset during an i2c bus transfer
 
2329
                chips might think that the current transfer is still
 
2330
                in progress.  Reset the slave devices by sending start
 
2331
                commands until the slave device responds.
 
2332
 
 
2333
                That's all that's required for CONFIG_HARD_I2C.
 
2334
 
 
2335
                If you use the software i2c interface (CONFIG_SYS_I2C_SOFT)
 
2336
                then the following macros need to be defined (examples are
 
2337
                from include/configs/lwmon.h):
 
2338
 
 
2339
                I2C_INIT
 
2340
 
 
2341
                (Optional). Any commands necessary to enable the I2C
 
2342
                controller or configure ports.
 
2343
 
 
2344
                eg: #define I2C_INIT (immr->im_cpm.cp_pbdir |=  PB_SCL)
 
2345
 
 
2346
                I2C_PORT
 
2347
 
 
2348
                (Only for MPC8260 CPU). The I/O port to use (the code
 
2349
                assumes both bits are on the same port). Valid values
 
2350
                are 0..3 for ports A..D.
 
2351
 
 
2352
                I2C_ACTIVE
 
2353
 
 
2354
                The code necessary to make the I2C data line active
 
2355
                (driven).  If the data line is open collector, this
 
2356
                define can be null.
 
2357
 
 
2358
                eg: #define I2C_ACTIVE (immr->im_cpm.cp_pbdir |=  PB_SDA)
 
2359
 
 
2360
                I2C_TRISTATE
 
2361
 
 
2362
                The code necessary to make the I2C data line tri-stated
 
2363
                (inactive).  If the data line is open collector, this
 
2364
                define can be null.
 
2365
 
 
2366
                eg: #define I2C_TRISTATE (immr->im_cpm.cp_pbdir &= ~PB_SDA)
 
2367
 
 
2368
                I2C_READ
 
2369
 
 
2370
                Code that returns true if the I2C data line is high,
 
2371
                false if it is low.
 
2372
 
 
2373
                eg: #define I2C_READ ((immr->im_cpm.cp_pbdat & PB_SDA) != 0)
 
2374
 
 
2375
                I2C_SDA(bit)
 
2376
 
 
2377
                If <bit> is true, sets the I2C data line high. If it
 
2378
                is false, it clears it (low).
 
2379
 
 
2380
                eg: #define I2C_SDA(bit) \
 
2381
                        if(bit) immr->im_cpm.cp_pbdat |=  PB_SDA; \
 
2382
                        else    immr->im_cpm.cp_pbdat &= ~PB_SDA
 
2383
 
 
2384
                I2C_SCL(bit)
 
2385
 
 
2386
                If <bit> is true, sets the I2C clock line high. If it
 
2387
                is false, it clears it (low).
 
2388
 
 
2389
                eg: #define I2C_SCL(bit) \
 
2390
                        if(bit) immr->im_cpm.cp_pbdat |=  PB_SCL; \
 
2391
                        else    immr->im_cpm.cp_pbdat &= ~PB_SCL
 
2392
 
 
2393
                I2C_DELAY
 
2394
 
 
2395
                This delay is invoked four times per clock cycle so this
 
2396
                controls the rate of data transfer.  The data rate thus
 
2397
                is 1 / (I2C_DELAY * 4). Often defined to be something
 
2398
                like:
 
2399
 
 
2400
                #define I2C_DELAY  udelay(2)
 
2401
 
 
2402
                CONFIG_SOFT_I2C_GPIO_SCL / CONFIG_SOFT_I2C_GPIO_SDA
 
2403
 
 
2404
                If your arch supports the generic GPIO framework (asm/gpio.h),
 
2405
                then you may alternatively define the two GPIOs that are to be
 
2406
                used as SCL / SDA.  Any of the previous I2C_xxx macros will
 
2407
                have GPIO-based defaults assigned to them as appropriate.
 
2408
 
 
2409
                You should define these to the GPIO value as given directly to
 
2410
                the generic GPIO functions.
 
2411
 
 
2412
                CONFIG_SYS_I2C_INIT_BOARD
 
2413
 
 
2414
                When a board is reset during an i2c bus transfer
 
2415
                chips might think that the current transfer is still
 
2416
                in progress. On some boards it is possible to access
 
2417
                the i2c SCLK line directly, either by using the
 
2418
                processor pin as a GPIO or by having a second pin
 
2419
                connected to the bus. If this option is defined a
 
2420
                custom i2c_init_board() routine in boards/xxx/board.c
 
2421
                is run early in the boot sequence.
 
2422
 
 
2423
                CONFIG_SYS_I2C_BOARD_LATE_INIT
 
2424
 
 
2425
                An alternative to CONFIG_SYS_I2C_INIT_BOARD. If this option is
 
2426
                defined a custom i2c_board_late_init() routine in
 
2427
                boards/xxx/board.c is run AFTER the operations in i2c_init()
 
2428
                is completed. This callpoint can be used to unreset i2c bus
 
2429
                using CPU i2c controller register accesses for CPUs whose i2c
 
2430
                controller provide such a method. It is called at the end of
 
2431
                i2c_init() to allow i2c_init operations to setup the i2c bus
 
2432
                controller on the CPU (e.g. setting bus speed & slave address).
 
2433
 
 
2434
                CONFIG_I2CFAST (PPC405GP|PPC405EP only)
 
2435
 
 
2436
                This option enables configuration of bi_iic_fast[] flags
 
2437
                in u-boot bd_info structure based on u-boot environment
 
2438
                variable "i2cfast". (see also i2cfast)
 
2439
 
 
2440
                CONFIG_I2C_MULTI_BUS
 
2441
 
 
2442
                This option allows the use of multiple I2C buses, each of which
 
2443
                must have a controller.  At any point in time, only one bus is
 
2444
                active.  To switch to a different bus, use the 'i2c dev' command.
 
2445
                Note that bus numbering is zero-based.
 
2446
 
 
2447
                CONFIG_SYS_I2C_NOPROBES
 
2448
 
 
2449
                This option specifies a list of I2C devices that will be skipped
 
2450
                when the 'i2c probe' command is issued.  If CONFIG_I2C_MULTI_BUS
 
2451
                is set, specify a list of bus-device pairs.  Otherwise, specify
 
2452
                a 1D array of device addresses
 
2453
 
 
2454
                e.g.
 
2455
                        #undef  CONFIG_I2C_MULTI_BUS
 
2456
                        #define CONFIG_SYS_I2C_NOPROBES {0x50,0x68}
 
2457
 
 
2458
                will skip addresses 0x50 and 0x68 on a board with one I2C bus
 
2459
 
 
2460
                        #define CONFIG_I2C_MULTI_BUS
 
2461
                        #define CONFIG_SYS_I2C_MULTI_NOPROBES   {{0,0x50},{0,0x68},{1,0x54}}
 
2462
 
 
2463
                will skip addresses 0x50 and 0x68 on bus 0 and address 0x54 on bus 1
 
2464
 
 
2465
                CONFIG_SYS_SPD_BUS_NUM
 
2466
 
 
2467
                If defined, then this indicates the I2C bus number for DDR SPD.
 
2468
                If not defined, then U-Boot assumes that SPD is on I2C bus 0.
 
2469
 
 
2470
                CONFIG_SYS_RTC_BUS_NUM
 
2471
 
 
2472
                If defined, then this indicates the I2C bus number for the RTC.
 
2473
                If not defined, then U-Boot assumes that RTC is on I2C bus 0.
 
2474
 
 
2475
                CONFIG_SYS_DTT_BUS_NUM
 
2476
 
 
2477
                If defined, then this indicates the I2C bus number for the DTT.
 
2478
                If not defined, then U-Boot assumes that DTT is on I2C bus 0.
 
2479
 
 
2480
                CONFIG_SYS_I2C_DTT_ADDR:
 
2481
 
 
2482
                If defined, specifies the I2C address of the DTT device.
 
2483
                If not defined, then U-Boot uses predefined value for
 
2484
                specified DTT device.
 
2485
 
 
2486
                CONFIG_SOFT_I2C_READ_REPEATED_START
 
2487
 
 
2488
                defining this will force the i2c_read() function in
 
2489
                the soft_i2c driver to perform an I2C repeated start
 
2490
                between writing the address pointer and reading the
 
2491
                data.  If this define is omitted the default behaviour
 
2492
                of doing a stop-start sequence will be used.  Most I2C
 
2493
                devices can use either method, but some require one or
 
2494
                the other.
 
2495
 
 
2496
- SPI Support:  CONFIG_SPI
 
2497
 
 
2498
                Enables SPI driver (so far only tested with
 
2499
                SPI EEPROM, also an instance works with Crystal A/D and
 
2500
                D/As on the SACSng board)
 
2501
 
 
2502
                CONFIG_SH_SPI
 
2503
 
 
2504
                Enables the driver for SPI controller on SuperH. Currently
 
2505
                only SH7757 is supported.
 
2506
 
 
2507
                CONFIG_SPI_X
 
2508
 
 
2509
                Enables extended (16-bit) SPI EEPROM addressing.
 
2510
                (symmetrical to CONFIG_I2C_X)
 
2511
 
 
2512
                CONFIG_SOFT_SPI
 
2513
 
 
2514
                Enables a software (bit-bang) SPI driver rather than
 
2515
                using hardware support. This is a general purpose
 
2516
                driver that only requires three general I/O port pins
 
2517
                (two outputs, one input) to function. If this is
 
2518
                defined, the board configuration must define several
 
2519
                SPI configuration items (port pins to use, etc). For
 
2520
                an example, see include/configs/sacsng.h.
 
2521
 
 
2522
                CONFIG_HARD_SPI
 
2523
 
 
2524
                Enables a hardware SPI driver for general-purpose reads
 
2525
                and writes.  As with CONFIG_SOFT_SPI, the board configuration
 
2526
                must define a list of chip-select function pointers.
 
2527
                Currently supported on some MPC8xxx processors.  For an
 
2528
                example, see include/configs/mpc8349emds.h.
 
2529
 
 
2530
                CONFIG_MXC_SPI
 
2531
 
 
2532
                Enables the driver for the SPI controllers on i.MX and MXC
 
2533
                SoCs. Currently i.MX31/35/51 are supported.
 
2534
 
 
2535
- FPGA Support: CONFIG_FPGA
 
2536
 
 
2537
                Enables FPGA subsystem.
 
2538
 
 
2539
                CONFIG_FPGA_<vendor>
 
2540
 
 
2541
                Enables support for specific chip vendors.
 
2542
                (ALTERA, XILINX)
 
2543
 
 
2544
                CONFIG_FPGA_<family>
 
2545
 
 
2546
                Enables support for FPGA family.
 
2547
                (SPARTAN2, SPARTAN3, VIRTEX2, CYCLONE2, ACEX1K, ACEX)
 
2548
 
 
2549
                CONFIG_FPGA_COUNT
 
2550
 
 
2551
                Specify the number of FPGA devices to support.
 
2552
 
 
2553
                CONFIG_SYS_FPGA_PROG_FEEDBACK
 
2554
 
 
2555
                Enable printing of hash marks during FPGA configuration.
 
2556
 
 
2557
                CONFIG_SYS_FPGA_CHECK_BUSY
 
2558
 
 
2559
                Enable checks on FPGA configuration interface busy
 
2560
                status by the configuration function. This option
 
2561
                will require a board or device specific function to
 
2562
                be written.
 
2563
 
 
2564
                CONFIG_FPGA_DELAY
 
2565
 
 
2566
                If defined, a function that provides delays in the FPGA
 
2567
                configuration driver.
 
2568
 
 
2569
                CONFIG_SYS_FPGA_CHECK_CTRLC
 
2570
                Allow Control-C to interrupt FPGA configuration
 
2571
 
 
2572
                CONFIG_SYS_FPGA_CHECK_ERROR
 
2573
 
 
2574
                Check for configuration errors during FPGA bitfile
 
2575
                loading. For example, abort during Virtex II
 
2576
                configuration if the INIT_B line goes low (which
 
2577
                indicated a CRC error).
 
2578
 
 
2579
                CONFIG_SYS_FPGA_WAIT_INIT
 
2580
 
 
2581
                Maximum time to wait for the INIT_B line to deassert
 
2582
                after PROB_B has been deasserted during a Virtex II
 
2583
                FPGA configuration sequence. The default time is 500
 
2584
                ms.
 
2585
 
 
2586
                CONFIG_SYS_FPGA_WAIT_BUSY
 
2587
 
 
2588
                Maximum time to wait for BUSY to deassert during
 
2589
                Virtex II FPGA configuration. The default is 5 ms.
 
2590
 
 
2591
                CONFIG_SYS_FPGA_WAIT_CONFIG
 
2592
 
 
2593
                Time to wait after FPGA configuration. The default is
 
2594
                200 ms.
 
2595
 
 
2596
- Configuration Management:
 
2597
                CONFIG_IDENT_STRING
 
2598
 
 
2599
                If defined, this string will be added to the U-Boot
 
2600
                version information (U_BOOT_VERSION)
 
2601
 
 
2602
- Vendor Parameter Protection:
 
2603
 
 
2604
                U-Boot considers the values of the environment
 
2605
                variables "serial#" (Board Serial Number) and
 
2606
                "ethaddr" (Ethernet Address) to be parameters that
 
2607
                are set once by the board vendor / manufacturer, and
 
2608
                protects these variables from casual modification by
 
2609
                the user. Once set, these variables are read-only,
 
2610
                and write or delete attempts are rejected. You can
 
2611
                change this behaviour:
 
2612
 
 
2613
                If CONFIG_ENV_OVERWRITE is #defined in your config
 
2614
                file, the write protection for vendor parameters is
 
2615
                completely disabled. Anybody can change or delete
 
2616
                these parameters.
 
2617
 
 
2618
                Alternatively, if you #define _both_ CONFIG_ETHADDR
 
2619
                _and_ CONFIG_OVERWRITE_ETHADDR_ONCE, a default
 
2620
                Ethernet address is installed in the environment,
 
2621
                which can be changed exactly ONCE by the user. [The
 
2622
                serial# is unaffected by this, i. e. it remains
 
2623
                read-only.]
 
2624
 
 
2625
                The same can be accomplished in a more flexible way
 
2626
                for any variable by configuring the type of access
 
2627
                to allow for those variables in the ".flags" variable
 
2628
                or define CONFIG_ENV_FLAGS_LIST_STATIC.
 
2629
 
 
2630
- Protected RAM:
 
2631
                CONFIG_PRAM
 
2632
 
 
2633
                Define this variable to enable the reservation of
 
2634
                "protected RAM", i. e. RAM which is not overwritten
 
2635
                by U-Boot. Define CONFIG_PRAM to hold the number of
 
2636
                kB you want to reserve for pRAM. You can overwrite
 
2637
                this default value by defining an environment
 
2638
                variable "pram" to the number of kB you want to
 
2639
                reserve. Note that the board info structure will
 
2640
                still show the full amount of RAM. If pRAM is
 
2641
                reserved, a new environment variable "mem" will
 
2642
                automatically be defined to hold the amount of
 
2643
                remaining RAM in a form that can be passed as boot
 
2644
                argument to Linux, for instance like that:
 
2645
 
 
2646
                        setenv bootargs ... mem=\${mem}
 
2647
                        saveenv
 
2648
 
 
2649
                This way you can tell Linux not to use this memory,
 
2650
                either, which results in a memory region that will
 
2651
                not be affected by reboots.
 
2652
 
 
2653
                *WARNING* If your board configuration uses automatic
 
2654
                detection of the RAM size, you must make sure that
 
2655
                this memory test is non-destructive. So far, the
 
2656
                following board configurations are known to be
 
2657
                "pRAM-clean":
 
2658
 
 
2659
                        IVMS8, IVML24, SPD8xx, TQM8xxL,
 
2660
                        HERMES, IP860, RPXlite, LWMON,
 
2661
                        FLAGADM, TQM8260
 
2662
 
 
2663
- Access to physical memory region (> 4GB)
 
2664
                Some basic support is provided for operations on memory not
 
2665
                normally accessible to U-Boot - e.g. some architectures
 
2666
                support access to more than 4GB of memory on 32-bit
 
2667
                machines using physical address extension or similar.
 
2668
                Define CONFIG_PHYSMEM to access this basic support, which
 
2669
                currently only supports clearing the memory.
 
2670
 
 
2671
- Error Recovery:
 
2672
                CONFIG_PANIC_HANG
 
2673
 
 
2674
                Define this variable to stop the system in case of a
 
2675
                fatal error, so that you have to reset it manually.
 
2676
                This is probably NOT a good idea for an embedded
 
2677
                system where you want the system to reboot
 
2678
                automatically as fast as possible, but it may be
 
2679
                useful during development since you can try to debug
 
2680
                the conditions that lead to the situation.
 
2681
 
 
2682
                CONFIG_NET_RETRY_COUNT
 
2683
 
 
2684
                This variable defines the number of retries for
 
2685
                network operations like ARP, RARP, TFTP, or BOOTP
 
2686
                before giving up the operation. If not defined, a
 
2687
                default value of 5 is used.
 
2688
 
 
2689
                CONFIG_ARP_TIMEOUT
 
2690
 
 
2691
                Timeout waiting for an ARP reply in milliseconds.
 
2692
 
 
2693
                CONFIG_NFS_TIMEOUT
 
2694
 
 
2695
                Timeout in milliseconds used in NFS protocol.
 
2696
                If you encounter "ERROR: Cannot umount" in nfs command,
 
2697
                try longer timeout such as
 
2698
                #define CONFIG_NFS_TIMEOUT 10000UL
 
2699
 
 
2700
- Command Interpreter:
 
2701
                CONFIG_AUTO_COMPLETE
 
2702
 
 
2703
                Enable auto completion of commands using TAB.
 
2704
 
 
2705
                Note that this feature has NOT been implemented yet
 
2706
                for the "hush" shell.
 
2707
 
 
2708
 
 
2709
                CONFIG_SYS_HUSH_PARSER
 
2710
 
 
2711
                Define this variable to enable the "hush" shell (from
 
2712
                Busybox) as command line interpreter, thus enabling
 
2713
                powerful command line syntax like
 
2714
                if...then...else...fi conditionals or `&&' and '||'
 
2715
                constructs ("shell scripts").
 
2716
 
 
2717
                If undefined, you get the old, much simpler behaviour
 
2718
                with a somewhat smaller memory footprint.
 
2719
 
 
2720
 
 
2721
                CONFIG_SYS_PROMPT_HUSH_PS2
 
2722
 
 
2723
                This defines the secondary prompt string, which is
 
2724
                printed when the command interpreter needs more input
 
2725
                to complete a command. Usually "> ".
 
2726
 
 
2727
        Note:
 
2728
 
 
2729
                In the current implementation, the local variables
 
2730
                space and global environment variables space are
 
2731
                separated. Local variables are those you define by
 
2732
                simply typing `name=value'. To access a local
 
2733
                variable later on, you have write `$name' or
 
2734
                `${name}'; to execute the contents of a variable
 
2735
                directly type `$name' at the command prompt.
 
2736
 
 
2737
                Global environment variables are those you use
 
2738
                setenv/printenv to work with. To run a command stored
 
2739
                in such a variable, you need to use the run command,
 
2740
                and you must not use the '$' sign to access them.
 
2741
 
 
2742
                To store commands and special characters in a
 
2743
                variable, please use double quotation marks
 
2744
                surrounding the whole text of the variable, instead
 
2745
                of the backslashes before semicolons and special
 
2746
                symbols.
 
2747
 
 
2748
- Commandline Editing and History:
 
2749
                CONFIG_CMDLINE_EDITING
 
2750
 
 
2751
                Enable editing and History functions for interactive
 
2752
                commandline input operations
 
2753
 
 
2754
- Default Environment:
 
2755
                CONFIG_EXTRA_ENV_SETTINGS
 
2756
 
 
2757
                Define this to contain any number of null terminated
 
2758
                strings (variable = value pairs) that will be part of
 
2759
                the default environment compiled into the boot image.
 
2760
 
 
2761
                For example, place something like this in your
 
2762
                board's config file:
 
2763
 
 
2764
                #define CONFIG_EXTRA_ENV_SETTINGS \
 
2765
                        "myvar1=value1\0" \
 
2766
                        "myvar2=value2\0"
 
2767
 
 
2768
                Warning: This method is based on knowledge about the
 
2769
                internal format how the environment is stored by the
 
2770
                U-Boot code. This is NOT an official, exported
 
2771
                interface! Although it is unlikely that this format
 
2772
                will change soon, there is no guarantee either.
 
2773
                You better know what you are doing here.
 
2774
 
 
2775
                Note: overly (ab)use of the default environment is
 
2776
                discouraged. Make sure to check other ways to preset
 
2777
                the environment like the "source" command or the
 
2778
                boot command first.
 
2779
 
 
2780
                CONFIG_ENV_VARS_UBOOT_CONFIG
 
2781
 
 
2782
                Define this in order to add variables describing the
 
2783
                U-Boot build configuration to the default environment.
 
2784
                These will be named arch, cpu, board, vendor, and soc.
 
2785
 
 
2786
                Enabling this option will cause the following to be defined:
 
2787
 
 
2788
                - CONFIG_SYS_ARCH
 
2789
                - CONFIG_SYS_CPU
 
2790
                - CONFIG_SYS_BOARD
 
2791
                - CONFIG_SYS_VENDOR
 
2792
                - CONFIG_SYS_SOC
 
2793
 
 
2794
                CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
 
2795
 
 
2796
                Define this in order to add variables describing certain
 
2797
                run-time determined information about the hardware to the
 
2798
                environment.  These will be named board_name, board_rev.
 
2799
 
 
2800
                CONFIG_DELAY_ENVIRONMENT
 
2801
 
 
2802
                Normally the environment is loaded when the board is
 
2803
                intialised so that it is available to U-Boot. This inhibits
 
2804
                that so that the environment is not available until
 
2805
                explicitly loaded later by U-Boot code. With CONFIG_OF_CONTROL
 
2806
                this is instead controlled by the value of
 
2807
                /config/load-environment.
 
2808
 
 
2809
- DataFlash Support:
 
2810
                CONFIG_HAS_DATAFLASH
 
2811
 
 
2812
                Defining this option enables DataFlash features and
 
2813
                allows to read/write in Dataflash via the standard
 
2814
                commands cp, md...
 
2815
 
 
2816
- Serial Flash support
 
2817
                CONFIG_CMD_SF
 
2818
 
 
2819
                Defining this option enables SPI flash commands
 
2820
                'sf probe/read/write/erase/update'.
 
2821
 
 
2822
                Usage requires an initial 'probe' to define the serial
 
2823
                flash parameters, followed by read/write/erase/update
 
2824
                commands.
 
2825
 
 
2826
                The following defaults may be provided by the platform
 
2827
                to handle the common case when only a single serial
 
2828
                flash is present on the system.
 
2829
 
 
2830
                CONFIG_SF_DEFAULT_BUS           Bus identifier
 
2831
                CONFIG_SF_DEFAULT_CS            Chip-select
 
2832
                CONFIG_SF_DEFAULT_MODE          (see include/spi.h)
 
2833
                CONFIG_SF_DEFAULT_SPEED         in Hz
 
2834
 
 
2835
                CONFIG_CMD_SF_TEST
 
2836
 
 
2837
                Define this option to include a destructive SPI flash
 
2838
                test ('sf test').
 
2839
 
 
2840
                CONFIG_SPI_FLASH_BAR            Ban/Extended Addr Reg
 
2841
 
 
2842
                Define this option to use the Bank addr/Extended addr
 
2843
                support on SPI flashes which has size > 16Mbytes.
 
2844
 
 
2845
                CONFIG_SF_DUAL_FLASH            Dual flash memories
 
2846
 
 
2847
                Define this option to use dual flash support where two flash
 
2848
                memories can be connected with a given cs line.
 
2849
                currently Xilinx Zynq qspi support these type of connections.
 
2850
 
 
2851
- SystemACE Support:
 
2852
                CONFIG_SYSTEMACE
 
2853
 
 
2854
                Adding this option adds support for Xilinx SystemACE
 
2855
                chips attached via some sort of local bus. The address
 
2856
                of the chip must also be defined in the
 
2857
                CONFIG_SYS_SYSTEMACE_BASE macro. For example:
 
2858
 
 
2859
                #define CONFIG_SYSTEMACE
 
2860
                #define CONFIG_SYS_SYSTEMACE_BASE 0xf0000000
 
2861
 
 
2862
                When SystemACE support is added, the "ace" device type
 
2863
                becomes available to the fat commands, i.e. fatls.
 
2864
 
 
2865
- TFTP Fixed UDP Port:
 
2866
                CONFIG_TFTP_PORT
 
2867
 
 
2868
                If this is defined, the environment variable tftpsrcp
 
2869
                is used to supply the TFTP UDP source port value.
 
2870
                If tftpsrcp isn't defined, the normal pseudo-random port
 
2871
                number generator is used.
 
2872
 
 
2873
                Also, the environment variable tftpdstp is used to supply
 
2874
                the TFTP UDP destination port value.  If tftpdstp isn't
 
2875
                defined, the normal port 69 is used.
 
2876
 
 
2877
                The purpose for tftpsrcp is to allow a TFTP server to
 
2878
                blindly start the TFTP transfer using the pre-configured
 
2879
                target IP address and UDP port. This has the effect of
 
2880
                "punching through" the (Windows XP) firewall, allowing
 
2881
                the remainder of the TFTP transfer to proceed normally.
 
2882
                A better solution is to properly configure the firewall,
 
2883
                but sometimes that is not allowed.
 
2884
 
 
2885
- Hashing support:
 
2886
                CONFIG_CMD_HASH
 
2887
 
 
2888
                This enables a generic 'hash' command which can produce
 
2889
                hashes / digests from a few algorithms (e.g. SHA1, SHA256).
 
2890
 
 
2891
                CONFIG_HASH_VERIFY
 
2892
 
 
2893
                Enable the hash verify command (hash -v). This adds to code
 
2894
                size a little.
 
2895
 
 
2896
                CONFIG_SHA1 - support SHA1 hashing
 
2897
                CONFIG_SHA256 - support SHA256 hashing
 
2898
 
 
2899
                Note: There is also a sha1sum command, which should perhaps
 
2900
                be deprecated in favour of 'hash sha1'.
 
2901
 
 
2902
- Freescale i.MX specific commands:
 
2903
                CONFIG_CMD_HDMIDETECT
 
2904
                This enables 'hdmidet' command which returns true if an
 
2905
                HDMI monitor is detected.  This command is i.MX 6 specific.
 
2906
 
 
2907
                CONFIG_CMD_BMODE
 
2908
                This enables the 'bmode' (bootmode) command for forcing
 
2909
                a boot from specific media.
 
2910
 
 
2911
                This is useful for forcing the ROM's usb downloader to
 
2912
                activate upon a watchdog reset which is nice when iterating
 
2913
                on U-Boot.  Using the reset button or running bmode normal
 
2914
                will set it back to normal.  This command currently
 
2915
                supports i.MX53 and i.MX6.
 
2916
 
 
2917
- Signing support:
 
2918
                CONFIG_RSA
 
2919
 
 
2920
                This enables the RSA algorithm used for FIT image verification
 
2921
                in U-Boot. See doc/uImage.FIT/signature.txt for more information.
 
2922
 
 
2923
                The signing part is build into mkimage regardless of this
 
2924
                option.
 
2925
 
 
2926
- bootcount support:
 
2927
                CONFIG_BOOTCOUNT_LIMIT
 
2928
 
 
2929
                This enables the bootcounter support, see:
 
2930
                http://www.denx.de/wiki/DULG/UBootBootCountLimit
 
2931
 
 
2932
                CONFIG_AT91SAM9XE
 
2933
                enable special bootcounter support on at91sam9xe based boards.
 
2934
                CONFIG_BLACKFIN
 
2935
                enable special bootcounter support on blackfin based boards.
 
2936
                CONFIG_SOC_DA8XX
 
2937
                enable special bootcounter support on da850 based boards.
 
2938
                CONFIG_BOOTCOUNT_RAM
 
2939
                enable support for the bootcounter in RAM
 
2940
                CONFIG_BOOTCOUNT_I2C
 
2941
                enable support for the bootcounter on an i2c (like RTC) device.
 
2942
                        CONFIG_SYS_I2C_RTC_ADDR = i2c chip address
 
2943
                        CONFIG_SYS_BOOTCOUNT_ADDR = i2c addr which is used for
 
2944
                                                    the bootcounter.
 
2945
                        CONFIG_BOOTCOUNT_ALEN = address len
 
2946
 
 
2947
- Show boot progress:
 
2948
                CONFIG_SHOW_BOOT_PROGRESS
 
2949
 
 
2950
                Defining this option allows to add some board-
 
2951
                specific code (calling a user-provided function
 
2952
                "show_boot_progress(int)") that enables you to show
 
2953
                the system's boot progress on some display (for
 
2954
                example, some LED's) on your board. At the moment,
 
2955
                the following checkpoints are implemented:
 
2956
 
 
2957
- Detailed boot stage timing
 
2958
                CONFIG_BOOTSTAGE
 
2959
                Define this option to get detailed timing of each stage
 
2960
                of the boot process.
 
2961
 
 
2962
                CONFIG_BOOTSTAGE_USER_COUNT
 
2963
                This is the number of available user bootstage records.
 
2964
                Each time you call bootstage_mark(BOOTSTAGE_ID_ALLOC, ...)
 
2965
                a new ID will be allocated from this stash. If you exceed
 
2966
                the limit, recording will stop.
 
2967
 
 
2968
                CONFIG_BOOTSTAGE_REPORT
 
2969
                Define this to print a report before boot, similar to this:
 
2970
 
 
2971
                Timer summary in microseconds:
 
2972
                       Mark    Elapsed  Stage
 
2973
                          0          0  reset
 
2974
                  3,575,678  3,575,678  board_init_f start
 
2975
                  3,575,695         17  arch_cpu_init A9
 
2976
                  3,575,777         82  arch_cpu_init done
 
2977
                  3,659,598     83,821  board_init_r start
 
2978
                  3,910,375    250,777  main_loop
 
2979
                 29,916,167 26,005,792  bootm_start
 
2980
                 30,361,327    445,160  start_kernel
 
2981
 
 
2982
                CONFIG_CMD_BOOTSTAGE
 
2983
                Add a 'bootstage' command which supports printing a report
 
2984
                and un/stashing of bootstage data.
 
2985
 
 
2986
                CONFIG_BOOTSTAGE_FDT
 
2987
                Stash the bootstage information in the FDT. A root 'bootstage'
 
2988
                node is created with each bootstage id as a child. Each child
 
2989
                has a 'name' property and either 'mark' containing the
 
2990
                mark time in microsecond, or 'accum' containing the
 
2991
                accumulated time for that bootstage id in microseconds.
 
2992
                For example:
 
2993
 
 
2994
                bootstage {
 
2995
                        154 {
 
2996
                                name = "board_init_f";
 
2997
                                mark = <3575678>;
 
2998
                        };
 
2999
                        170 {
 
3000
                                name = "lcd";
 
3001
                                accum = <33482>;
 
3002
                        };
 
3003
                };
 
3004
 
 
3005
                Code in the Linux kernel can find this in /proc/devicetree.
 
3006
 
 
3007
Legacy uImage format:
 
3008
 
 
3009
  Arg   Where                   When
 
3010
    1   common/cmd_bootm.c      before attempting to boot an image
 
3011
   -1   common/cmd_bootm.c      Image header has bad     magic number
 
3012
    2   common/cmd_bootm.c      Image header has correct magic number
 
3013
   -2   common/cmd_bootm.c      Image header has bad     checksum
 
3014
    3   common/cmd_bootm.c      Image header has correct checksum
 
3015
   -3   common/cmd_bootm.c      Image data   has bad     checksum
 
3016
    4   common/cmd_bootm.c      Image data   has correct checksum
 
3017
   -4   common/cmd_bootm.c      Image is for unsupported architecture
 
3018
    5   common/cmd_bootm.c      Architecture check OK
 
3019
   -5   common/cmd_bootm.c      Wrong Image Type (not kernel, multi)
 
3020
    6   common/cmd_bootm.c      Image Type check OK
 
3021
   -6   common/cmd_bootm.c      gunzip uncompression error
 
3022
   -7   common/cmd_bootm.c      Unimplemented compression type
 
3023
    7   common/cmd_bootm.c      Uncompression OK
 
3024
    8   common/cmd_bootm.c      No uncompress/copy overwrite error
 
3025
   -9   common/cmd_bootm.c      Unsupported OS (not Linux, BSD, VxWorks, QNX)
 
3026
 
 
3027
    9   common/image.c          Start initial ramdisk verification
 
3028
  -10   common/image.c          Ramdisk header has bad     magic number
 
3029
  -11   common/image.c          Ramdisk header has bad     checksum
 
3030
   10   common/image.c          Ramdisk header is OK
 
3031
  -12   common/image.c          Ramdisk data   has bad     checksum
 
3032
   11   common/image.c          Ramdisk data   has correct checksum
 
3033
   12   common/image.c          Ramdisk verification complete, start loading
 
3034
  -13   common/image.c          Wrong Image Type (not PPC Linux ramdisk)
 
3035
   13   common/image.c          Start multifile image verification
 
3036
   14   common/image.c          No initial ramdisk, no multifile, continue.
 
3037
 
 
3038
   15   arch/<arch>/lib/bootm.c All preparation done, transferring control to OS
 
3039
 
 
3040
  -30   arch/powerpc/lib/board.c        Fatal error, hang the system
 
3041
  -31   post/post.c             POST test failed, detected by post_output_backlog()
 
3042
  -32   post/post.c             POST test failed, detected by post_run_single()
 
3043
 
 
3044
   34   common/cmd_doc.c        before loading a Image from a DOC device
 
3045
  -35   common/cmd_doc.c        Bad usage of "doc" command
 
3046
   35   common/cmd_doc.c        correct usage of "doc" command
 
3047
  -36   common/cmd_doc.c        No boot device
 
3048
   36   common/cmd_doc.c        correct boot device
 
3049
  -37   common/cmd_doc.c        Unknown Chip ID on boot device
 
3050
   37   common/cmd_doc.c        correct chip ID found, device available
 
3051
  -38   common/cmd_doc.c        Read Error on boot device
 
3052
   38   common/cmd_doc.c        reading Image header from DOC device OK
 
3053
  -39   common/cmd_doc.c        Image header has bad magic number
 
3054
   39   common/cmd_doc.c        Image header has correct magic number
 
3055
  -40   common/cmd_doc.c        Error reading Image from DOC device
 
3056
   40   common/cmd_doc.c        Image header has correct magic number
 
3057
   41   common/cmd_ide.c        before loading a Image from a IDE device
 
3058
  -42   common/cmd_ide.c        Bad usage of "ide" command
 
3059
   42   common/cmd_ide.c        correct usage of "ide" command
 
3060
  -43   common/cmd_ide.c        No boot device
 
3061
   43   common/cmd_ide.c        boot device found
 
3062
  -44   common/cmd_ide.c        Device not available
 
3063
   44   common/cmd_ide.c        Device available
 
3064
  -45   common/cmd_ide.c        wrong partition selected
 
3065
   45   common/cmd_ide.c        partition selected
 
3066
  -46   common/cmd_ide.c        Unknown partition table
 
3067
   46   common/cmd_ide.c        valid partition table found
 
3068
  -47   common/cmd_ide.c        Invalid partition type
 
3069
   47   common/cmd_ide.c        correct partition type
 
3070
  -48   common/cmd_ide.c        Error reading Image Header on boot device
 
3071
   48   common/cmd_ide.c        reading Image Header from IDE device OK
 
3072
  -49   common/cmd_ide.c        Image header has bad magic number
 
3073
   49   common/cmd_ide.c        Image header has correct magic number
 
3074
  -50   common/cmd_ide.c        Image header has bad     checksum
 
3075
   50   common/cmd_ide.c        Image header has correct checksum
 
3076
  -51   common/cmd_ide.c        Error reading Image from IDE device
 
3077
   51   common/cmd_ide.c        reading Image from IDE device OK
 
3078
   52   common/cmd_nand.c       before loading a Image from a NAND device
 
3079
  -53   common/cmd_nand.c       Bad usage of "nand" command
 
3080
   53   common/cmd_nand.c       correct usage of "nand" command
 
3081
  -54   common/cmd_nand.c       No boot device
 
3082
   54   common/cmd_nand.c       boot device found
 
3083
  -55   common/cmd_nand.c       Unknown Chip ID on boot device
 
3084
   55   common/cmd_nand.c       correct chip ID found, device available
 
3085
  -56   common/cmd_nand.c       Error reading Image Header on boot device
 
3086
   56   common/cmd_nand.c       reading Image Header from NAND device OK
 
3087
  -57   common/cmd_nand.c       Image header has bad magic number
 
3088
   57   common/cmd_nand.c       Image header has correct magic number
 
3089
  -58   common/cmd_nand.c       Error reading Image from NAND device
 
3090
   58   common/cmd_nand.c       reading Image from NAND device OK
 
3091
 
 
3092
  -60   common/env_common.c     Environment has a bad CRC, using default
 
3093
 
 
3094
   64   net/eth.c               starting with Ethernet configuration.
 
3095
  -64   net/eth.c               no Ethernet found.
 
3096
   65   net/eth.c               Ethernet found.
 
3097
 
 
3098
  -80   common/cmd_net.c        usage wrong
 
3099
   80   common/cmd_net.c        before calling NetLoop()
 
3100
  -81   common/cmd_net.c        some error in NetLoop() occurred
 
3101
   81   common/cmd_net.c        NetLoop() back without error
 
3102
  -82   common/cmd_net.c        size == 0 (File with size 0 loaded)
 
3103
   82   common/cmd_net.c        trying automatic boot
 
3104
   83   common/cmd_net.c        running "source" command
 
3105
  -83   common/cmd_net.c        some error in automatic boot or "source" command
 
3106
   84   common/cmd_net.c        end without errors
 
3107
 
 
3108
FIT uImage format:
 
3109
 
 
3110
  Arg   Where                   When
 
3111
  100   common/cmd_bootm.c      Kernel FIT Image has correct format
 
3112
 -100   common/cmd_bootm.c      Kernel FIT Image has incorrect format
 
3113
  101   common/cmd_bootm.c      No Kernel subimage unit name, using configuration
 
3114
 -101   common/cmd_bootm.c      Can't get configuration for kernel subimage
 
3115
  102   common/cmd_bootm.c      Kernel unit name specified
 
3116
 -103   common/cmd_bootm.c      Can't get kernel subimage node offset
 
3117
  103   common/cmd_bootm.c      Found configuration node
 
3118
  104   common/cmd_bootm.c      Got kernel subimage node offset
 
3119
 -104   common/cmd_bootm.c      Kernel subimage hash verification failed
 
3120
  105   common/cmd_bootm.c      Kernel subimage hash verification OK
 
3121
 -105   common/cmd_bootm.c      Kernel subimage is for unsupported architecture
 
3122
  106   common/cmd_bootm.c      Architecture check OK
 
3123
 -106   common/cmd_bootm.c      Kernel subimage has wrong type
 
3124
  107   common/cmd_bootm.c      Kernel subimage type OK
 
3125
 -107   common/cmd_bootm.c      Can't get kernel subimage data/size
 
3126
  108   common/cmd_bootm.c      Got kernel subimage data/size
 
3127
 -108   common/cmd_bootm.c      Wrong image type (not legacy, FIT)
 
3128
 -109   common/cmd_bootm.c      Can't get kernel subimage type
 
3129
 -110   common/cmd_bootm.c      Can't get kernel subimage comp
 
3130
 -111   common/cmd_bootm.c      Can't get kernel subimage os
 
3131
 -112   common/cmd_bootm.c      Can't get kernel subimage load address
 
3132
 -113   common/cmd_bootm.c      Image uncompress/copy overwrite error
 
3133
 
 
3134
  120   common/image.c          Start initial ramdisk verification
 
3135
 -120   common/image.c          Ramdisk FIT image has incorrect format
 
3136
  121   common/image.c          Ramdisk FIT image has correct format
 
3137
  122   common/image.c          No ramdisk subimage unit name, using configuration
 
3138
 -122   common/image.c          Can't get configuration for ramdisk subimage
 
3139
  123   common/image.c          Ramdisk unit name specified
 
3140
 -124   common/image.c          Can't get ramdisk subimage node offset
 
3141
  125   common/image.c          Got ramdisk subimage node offset
 
3142
 -125   common/image.c          Ramdisk subimage hash verification failed
 
3143
  126   common/image.c          Ramdisk subimage hash verification OK
 
3144
 -126   common/image.c          Ramdisk subimage for unsupported architecture
 
3145
  127   common/image.c          Architecture check OK
 
3146
 -127   common/image.c          Can't get ramdisk subimage data/size
 
3147
  128   common/image.c          Got ramdisk subimage data/size
 
3148
  129   common/image.c          Can't get ramdisk load address
 
3149
 -129   common/image.c          Got ramdisk load address
 
3150
 
 
3151
 -130   common/cmd_doc.c        Incorrect FIT image format
 
3152
  131   common/cmd_doc.c        FIT image format OK
 
3153
 
 
3154
 -140   common/cmd_ide.c        Incorrect FIT image format
 
3155
  141   common/cmd_ide.c        FIT image format OK
 
3156
 
 
3157
 -150   common/cmd_nand.c       Incorrect FIT image format
 
3158
  151   common/cmd_nand.c       FIT image format OK
 
3159
 
 
3160
- FIT image support:
 
3161
                CONFIG_FIT
 
3162
                Enable support for the FIT uImage format.
 
3163
 
 
3164
                CONFIG_FIT_BEST_MATCH
 
3165
                When no configuration is explicitly selected, default to the
 
3166
                one whose fdt's compatibility field best matches that of
 
3167
                U-Boot itself. A match is considered "best" if it matches the
 
3168
                most specific compatibility entry of U-Boot's fdt's root node.
 
3169
                The order of entries in the configuration's fdt is ignored.
 
3170
 
 
3171
                CONFIG_FIT_SIGNATURE
 
3172
                This option enables signature verification of FIT uImages,
 
3173
                using a hash signed and verified using RSA. See
 
3174
                doc/uImage.FIT/signature.txt for more details.
 
3175
 
 
3176
- Standalone program support:
 
3177
                CONFIG_STANDALONE_LOAD_ADDR
 
3178
 
 
3179
                This option defines a board specific value for the
 
3180
                address where standalone program gets loaded, thus
 
3181
                overwriting the architecture dependent default
 
3182
                settings.
 
3183
 
 
3184
- Frame Buffer Address:
 
3185
                CONFIG_FB_ADDR
 
3186
 
 
3187
                Define CONFIG_FB_ADDR if you want to use specific
 
3188
                address for frame buffer.  This is typically the case
 
3189
                when using a graphics controller has separate video
 
3190
                memory.  U-Boot will then place the frame buffer at
 
3191
                the given address instead of dynamically reserving it
 
3192
                in system RAM by calling lcd_setmem(), which grabs
 
3193
                the memory for the frame buffer depending on the
 
3194
                configured panel size.
 
3195
 
 
3196
                Please see board_init_f function.
 
3197
 
 
3198
- Automatic software updates via TFTP server
 
3199
                CONFIG_UPDATE_TFTP
 
3200
                CONFIG_UPDATE_TFTP_CNT_MAX
 
3201
                CONFIG_UPDATE_TFTP_MSEC_MAX
 
3202
 
 
3203
                These options enable and control the auto-update feature;
 
3204
                for a more detailed description refer to doc/README.update.
 
3205
 
 
3206
- MTD Support (mtdparts command, UBI support)
 
3207
                CONFIG_MTD_DEVICE
 
3208
 
 
3209
                Adds the MTD device infrastructure from the Linux kernel.
 
3210
                Needed for mtdparts command support.
 
3211
 
 
3212
                CONFIG_MTD_PARTITIONS
 
3213
 
 
3214
                Adds the MTD partitioning infrastructure from the Linux
 
3215
                kernel. Needed for UBI support.
 
3216
 
 
3217
- UBI support
 
3218
                CONFIG_CMD_UBI
 
3219
 
 
3220
                Adds commands for interacting with MTD partitions formatted
 
3221
                with the UBI flash translation layer
 
3222
 
 
3223
                Requires also defining CONFIG_RBTREE
 
3224
 
 
3225
                CONFIG_UBI_SILENCE_MSG
 
3226
 
 
3227
                Make the verbose messages from UBI stop printing.  This leaves
 
3228
                warnings and errors enabled.
 
3229
 
 
3230
- UBIFS support
 
3231
                CONFIG_CMD_UBIFS
 
3232
 
 
3233
                Adds commands for interacting with UBI volumes formatted as
 
3234
                UBIFS.  UBIFS is read-only in u-boot.
 
3235
 
 
3236
                Requires UBI support as well as CONFIG_LZO
 
3237
 
 
3238
                CONFIG_UBIFS_SILENCE_MSG
 
3239
 
 
3240
                Make the verbose messages from UBIFS stop printing.  This leaves
 
3241
                warnings and errors enabled.
 
3242
 
 
3243
- SPL framework
 
3244
                CONFIG_SPL
 
3245
                Enable building of SPL globally.
 
3246
 
 
3247
                CONFIG_SPL_LDSCRIPT
 
3248
                LDSCRIPT for linking the SPL binary.
 
3249
 
 
3250
                CONFIG_SPL_MAX_FOOTPRINT
 
3251
                Maximum size in memory allocated to the SPL, BSS included.
 
3252
                When defined, the linker checks that the actual memory
 
3253
                used by SPL from _start to __bss_end does not exceed it.
 
3254
                CONFIG_SPL_MAX_FOOTPRINT and CONFIG_SPL_BSS_MAX_SIZE
 
3255
                must not be both defined at the same time.
 
3256
 
 
3257
                CONFIG_SPL_MAX_SIZE
 
3258
                Maximum size of the SPL image (text, data, rodata, and
 
3259
                linker lists sections), BSS excluded.
 
3260
                When defined, the linker checks that the actual size does
 
3261
                not exceed it.
 
3262
 
 
3263
                CONFIG_SPL_TEXT_BASE
 
3264
                TEXT_BASE for linking the SPL binary.
 
3265
 
 
3266
                CONFIG_SPL_RELOC_TEXT_BASE
 
3267
                Address to relocate to.  If unspecified, this is equal to
 
3268
                CONFIG_SPL_TEXT_BASE (i.e. no relocation is done).
 
3269
 
 
3270
                CONFIG_SPL_BSS_START_ADDR
 
3271
                Link address for the BSS within the SPL binary.
 
3272
 
 
3273
                CONFIG_SPL_BSS_MAX_SIZE
 
3274
                Maximum size in memory allocated to the SPL BSS.
 
3275
                When defined, the linker checks that the actual memory used
 
3276
                by SPL from __bss_start to __bss_end does not exceed it.
 
3277
                CONFIG_SPL_MAX_FOOTPRINT and CONFIG_SPL_BSS_MAX_SIZE
 
3278
                must not be both defined at the same time.
 
3279
 
 
3280
                CONFIG_SPL_STACK
 
3281
                Adress of the start of the stack SPL will use
 
3282
 
 
3283
                CONFIG_SPL_RELOC_STACK
 
3284
                Adress of the start of the stack SPL will use after
 
3285
                relocation.  If unspecified, this is equal to
 
3286
                CONFIG_SPL_STACK.
 
3287
 
 
3288
                CONFIG_SYS_SPL_MALLOC_START
 
3289
                Starting address of the malloc pool used in SPL.
 
3290
 
 
3291
                CONFIG_SYS_SPL_MALLOC_SIZE
 
3292
                The size of the malloc pool used in SPL.
 
3293
 
 
3294
                CONFIG_SPL_FRAMEWORK
 
3295
                Enable the SPL framework under common/.  This framework
 
3296
                supports MMC, NAND and YMODEM loading of U-Boot and NAND
 
3297
                NAND loading of the Linux Kernel.
 
3298
 
 
3299
                CONFIG_SPL_OS_BOOT
 
3300
                Enable booting directly to an OS from SPL.
 
3301
                See also: doc/README.falcon
 
3302
 
 
3303
                CONFIG_SPL_DISPLAY_PRINT
 
3304
                For ARM, enable an optional function to print more information
 
3305
                about the running system.
 
3306
 
 
3307
                CONFIG_SPL_INIT_MINIMAL
 
3308
                Arch init code should be built for a very small image
 
3309
 
 
3310
                CONFIG_SPL_LIBCOMMON_SUPPORT
 
3311
                Support for common/libcommon.o in SPL binary
 
3312
 
 
3313
                CONFIG_SPL_LIBDISK_SUPPORT
 
3314
                Support for disk/libdisk.o in SPL binary
 
3315
 
 
3316
                CONFIG_SPL_I2C_SUPPORT
 
3317
                Support for drivers/i2c/libi2c.o in SPL binary
 
3318
 
 
3319
                CONFIG_SPL_GPIO_SUPPORT
 
3320
                Support for drivers/gpio/libgpio.o in SPL binary
 
3321
 
 
3322
                CONFIG_SPL_MMC_SUPPORT
 
3323
                Support for drivers/mmc/libmmc.o in SPL binary
 
3324
 
 
3325
                CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR,
 
3326
                CONFIG_SYS_U_BOOT_MAX_SIZE_SECTORS,
 
3327
                CONFIG_SYS_MMC_SD_FAT_BOOT_PARTITION
 
3328
                Address, size and partition on the MMC to load U-Boot from
 
3329
                when the MMC is being used in raw mode.
 
3330
 
 
3331
                CONFIG_SYS_MMCSD_RAW_MODE_KERNEL_SECTOR
 
3332
                Sector to load kernel uImage from when MMC is being
 
3333
                used in raw mode (for Falcon mode)
 
3334
 
 
3335
                CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTOR,
 
3336
                CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTORS
 
3337
                Sector and number of sectors to load kernel argument
 
3338
                parameters from when MMC is being used in raw mode
 
3339
                (for falcon mode)
 
3340
 
 
3341
                CONFIG_SPL_FAT_SUPPORT
 
3342
                Support for fs/fat/libfat.o in SPL binary
 
3343
 
 
3344
                CONFIG_SPL_FAT_LOAD_PAYLOAD_NAME
 
3345
                Filename to read to load U-Boot when reading from FAT
 
3346
 
 
3347
                CONFIG_SPL_FAT_LOAD_KERNEL_NAME
 
3348
                Filename to read to load kernel uImage when reading
 
3349
                from FAT (for Falcon mode)
 
3350
 
 
3351
                CONFIG_SPL_FAT_LOAD_ARGS_NAME
 
3352
                Filename to read to load kernel argument parameters
 
3353
                when reading from FAT (for Falcon mode)
 
3354
 
 
3355
                CONFIG_SPL_MPC83XX_WAIT_FOR_NAND
 
3356
                Set this for NAND SPL on PPC mpc83xx targets, so that
 
3357
                start.S waits for the rest of the SPL to load before
 
3358
                continuing (the hardware starts execution after just
 
3359
                loading the first page rather than the full 4K).
 
3360
 
 
3361
                CONFIG_SPL_SKIP_RELOCATE
 
3362
                Avoid SPL relocation
 
3363
 
 
3364
                CONFIG_SPL_NAND_BASE
 
3365
                Include nand_base.c in the SPL.  Requires
 
3366
                CONFIG_SPL_NAND_DRIVERS.
 
3367
 
 
3368
                CONFIG_SPL_NAND_DRIVERS
 
3369
                SPL uses normal NAND drivers, not minimal drivers.
 
3370
 
 
3371
                CONFIG_SPL_NAND_ECC
 
3372
                Include standard software ECC in the SPL
 
3373
 
 
3374
                CONFIG_SPL_NAND_SIMPLE
 
3375
                Support for NAND boot using simple NAND drivers that
 
3376
                expose the cmd_ctrl() interface.
 
3377
 
 
3378
                CONFIG_SPL_MTD_SUPPORT
 
3379
                Support for the MTD subsystem within SPL.  Useful for
 
3380
                environment on NAND support within SPL.
 
3381
 
 
3382
                CONFIG_SPL_MPC8XXX_INIT_DDR_SUPPORT
 
3383
                Set for the SPL on PPC mpc8xxx targets, support for
 
3384
                drivers/ddr/fsl/libddr.o in SPL binary.
 
3385
 
 
3386
                CONFIG_SPL_COMMON_INIT_DDR
 
3387
                Set for common ddr init with serial presence detect in
 
3388
                SPL binary.
 
3389
 
 
3390
                CONFIG_SYS_NAND_5_ADDR_CYCLE, CONFIG_SYS_NAND_PAGE_COUNT,
 
3391
                CONFIG_SYS_NAND_PAGE_SIZE, CONFIG_SYS_NAND_OOBSIZE,
 
3392
                CONFIG_SYS_NAND_BLOCK_SIZE, CONFIG_SYS_NAND_BAD_BLOCK_POS,
 
3393
                CONFIG_SYS_NAND_ECCPOS, CONFIG_SYS_NAND_ECCSIZE,
 
3394
                CONFIG_SYS_NAND_ECCBYTES
 
3395
                Defines the size and behavior of the NAND that SPL uses
 
3396
                to read U-Boot
 
3397
 
 
3398
                CONFIG_SPL_NAND_BOOT
 
3399
                Add support NAND boot
 
3400
 
 
3401
                CONFIG_SYS_NAND_U_BOOT_OFFS
 
3402
                Location in NAND to read U-Boot from
 
3403
 
 
3404
                CONFIG_SYS_NAND_U_BOOT_DST
 
3405
                Location in memory to load U-Boot to
 
3406
 
 
3407
                CONFIG_SYS_NAND_U_BOOT_SIZE
 
3408
                Size of image to load
 
3409
 
 
3410
                CONFIG_SYS_NAND_U_BOOT_START
 
3411
                Entry point in loaded image to jump to
 
3412
 
 
3413
                CONFIG_SYS_NAND_HW_ECC_OOBFIRST
 
3414
                Define this if you need to first read the OOB and then the
 
3415
                data. This is used for example on davinci plattforms.
 
3416
 
 
3417
                CONFIG_SPL_OMAP3_ID_NAND
 
3418
                Support for an OMAP3-specific set of functions to return the
 
3419
                ID and MFR of the first attached NAND chip, if present.
 
3420
 
 
3421
                CONFIG_SPL_SERIAL_SUPPORT
 
3422
                Support for drivers/serial/libserial.o in SPL binary
 
3423
 
 
3424
                CONFIG_SPL_SPI_FLASH_SUPPORT
 
3425
                Support for drivers/mtd/spi/libspi_flash.o in SPL binary
 
3426
 
 
3427
                CONFIG_SPL_SPI_SUPPORT
 
3428
                Support for drivers/spi/libspi.o in SPL binary
 
3429
 
 
3430
                CONFIG_SPL_RAM_DEVICE
 
3431
                Support for running image already present in ram, in SPL binary
 
3432
 
 
3433
                CONFIG_SPL_LIBGENERIC_SUPPORT
 
3434
                Support for lib/libgeneric.o in SPL binary
 
3435
 
 
3436
                CONFIG_SPL_ENV_SUPPORT
 
3437
                Support for the environment operating in SPL binary
 
3438
 
 
3439
                CONFIG_SPL_NET_SUPPORT
 
3440
                Support for the net/libnet.o in SPL binary.
 
3441
                It conflicts with SPL env from storage medium specified by
 
3442
                CONFIG_ENV_IS_xxx but CONFIG_ENV_IS_NOWHERE
 
3443
 
 
3444
                CONFIG_SPL_PAD_TO
 
3445
                Image offset to which the SPL should be padded before appending
 
3446
                the SPL payload. By default, this is defined as
 
3447
                CONFIG_SPL_MAX_SIZE, or 0 if CONFIG_SPL_MAX_SIZE is undefined.
 
3448
                CONFIG_SPL_PAD_TO must be either 0, meaning to append the SPL
 
3449
                payload without any padding, or >= CONFIG_SPL_MAX_SIZE.
 
3450
 
 
3451
                CONFIG_SPL_TARGET
 
3452
                Final target image containing SPL and payload.  Some SPLs
 
3453
                use an arch-specific makefile fragment instead, for
 
3454
                example if more than one image needs to be produced.
 
3455
 
 
3456
                CONFIG_FIT_SPL_PRINT
 
3457
                Printing information about a FIT image adds quite a bit of
 
3458
                code to SPL. So this is normally disabled in SPL. Use this
 
3459
                option to re-enable it. This will affect the output of the
 
3460
                bootm command when booting a FIT image.
 
3461
 
 
3462
- TPL framework
 
3463
                CONFIG_TPL
 
3464
                Enable building of TPL globally.
 
3465
 
 
3466
                CONFIG_TPL_PAD_TO
 
3467
                Image offset to which the TPL should be padded before appending
 
3468
                the TPL payload. By default, this is defined as
 
3469
                CONFIG_SPL_MAX_SIZE, or 0 if CONFIG_SPL_MAX_SIZE is undefined.
 
3470
                CONFIG_SPL_PAD_TO must be either 0, meaning to append the SPL
 
3471
                payload without any padding, or >= CONFIG_SPL_MAX_SIZE.
 
3472
 
 
3473
Modem Support:
 
3474
--------------
 
3475
 
 
3476
[so far only for SMDK2400 boards]
 
3477
 
 
3478
- Modem support enable:
 
3479
                CONFIG_MODEM_SUPPORT
 
3480
 
 
3481
- RTS/CTS Flow control enable:
 
3482
                CONFIG_HWFLOW
 
3483
 
 
3484
- Modem debug support:
 
3485
                CONFIG_MODEM_SUPPORT_DEBUG
 
3486
 
 
3487
                Enables debugging stuff (char screen[1024], dbg())
 
3488
                for modem support. Useful only with BDI2000.
 
3489
 
 
3490
- Interrupt support (PPC):
 
3491
 
 
3492
                There are common interrupt_init() and timer_interrupt()
 
3493
                for all PPC archs. interrupt_init() calls interrupt_init_cpu()
 
3494
                for CPU specific initialization. interrupt_init_cpu()
 
3495
                should set decrementer_count to appropriate value. If
 
3496
                CPU resets decrementer automatically after interrupt
 
3497
                (ppc4xx) it should set decrementer_count to zero.
 
3498
                timer_interrupt() calls timer_interrupt_cpu() for CPU
 
3499
                specific handling. If board has watchdog / status_led
 
3500
                / other_activity_monitor it works automatically from
 
3501
                general timer_interrupt().
 
3502
 
 
3503
- General:
 
3504
 
 
3505
                In the target system modem support is enabled when a
 
3506
                specific key (key combination) is pressed during
 
3507
                power-on. Otherwise U-Boot will boot normally
 
3508
                (autoboot). The key_pressed() function is called from
 
3509
                board_init(). Currently key_pressed() is a dummy
 
3510
                function, returning 1 and thus enabling modem
 
3511
                initialization.
 
3512
 
 
3513
                If there are no modem init strings in the
 
3514
                environment, U-Boot proceed to autoboot; the
 
3515
                previous output (banner, info printfs) will be
 
3516
                suppressed, though.
 
3517
 
 
3518
                See also: doc/README.Modem
 
3519
 
 
3520
Board initialization settings:
 
3521
------------------------------
 
3522
 
 
3523
During Initialization u-boot calls a number of board specific functions
 
3524
to allow the preparation of board specific prerequisites, e.g. pin setup
 
3525
before drivers are initialized. To enable these callbacks the
 
3526
following configuration macros have to be defined. Currently this is
 
3527
architecture specific, so please check arch/your_architecture/lib/board.c
 
3528
typically in board_init_f() and board_init_r().
 
3529
 
 
3530
- CONFIG_BOARD_EARLY_INIT_F: Call board_early_init_f()
 
3531
- CONFIG_BOARD_EARLY_INIT_R: Call board_early_init_r()
 
3532
- CONFIG_BOARD_LATE_INIT: Call board_late_init()
 
3533
- CONFIG_BOARD_POSTCLK_INIT: Call board_postclk_init()
 
3534
 
 
3535
Configuration Settings:
 
3536
-----------------------
 
3537
 
 
3538
- CONFIG_SYS_SUPPORT_64BIT_DATA: Defined automatically if compiled as 64-bit.
 
3539
                Optionally it can be defined to support 64-bit memory commands.
 
3540
 
 
3541
- CONFIG_SYS_LONGHELP: Defined when you want long help messages included;
 
3542
                undefine this when you're short of memory.
 
3543
 
 
3544
- CONFIG_SYS_HELP_CMD_WIDTH: Defined when you want to override the default
 
3545
                width of the commands listed in the 'help' command output.
 
3546
 
 
3547
- CONFIG_SYS_PROMPT:    This is what U-Boot prints on the console to
 
3548
                prompt for user input.
 
3549
 
 
3550
- CONFIG_SYS_CBSIZE:    Buffer size for input from the Console
 
3551
 
 
3552
- CONFIG_SYS_PBSIZE:    Buffer size for Console output
 
3553
 
 
3554
- CONFIG_SYS_MAXARGS:   max. Number of arguments accepted for monitor commands
 
3555
 
 
3556
- CONFIG_SYS_BARGSIZE: Buffer size for Boot Arguments which are passed to
 
3557
                the application (usually a Linux kernel) when it is
 
3558
                booted
 
3559
 
 
3560
- CONFIG_SYS_BAUDRATE_TABLE:
 
3561
                List of legal baudrate settings for this board.
 
3562
 
 
3563
- CONFIG_SYS_CONSOLE_INFO_QUIET
 
3564
                Suppress display of console information at boot.
 
3565
 
 
3566
- CONFIG_SYS_CONSOLE_IS_IN_ENV
 
3567
                If the board specific function
 
3568
                        extern int overwrite_console (void);
 
3569
                returns 1, the stdin, stderr and stdout are switched to the
 
3570
                serial port, else the settings in the environment are used.
 
3571
 
 
3572
- CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE
 
3573
                Enable the call to overwrite_console().
 
3574
 
 
3575
- CONFIG_SYS_CONSOLE_ENV_OVERWRITE
 
3576
                Enable overwrite of previous console environment settings.
 
3577
 
 
3578
- CONFIG_SYS_MEMTEST_START, CONFIG_SYS_MEMTEST_END:
 
3579
                Begin and End addresses of the area used by the
 
3580
                simple memory test.
 
3581
 
 
3582
- CONFIG_SYS_ALT_MEMTEST:
 
3583
                Enable an alternate, more extensive memory test.
 
3584
 
 
3585
- CONFIG_SYS_MEMTEST_SCRATCH:
 
3586
                Scratch address used by the alternate memory test
 
3587
                You only need to set this if address zero isn't writeable
 
3588
 
 
3589
- CONFIG_SYS_MEM_TOP_HIDE (PPC only):
 
3590
                If CONFIG_SYS_MEM_TOP_HIDE is defined in the board config header,
 
3591
                this specified memory area will get subtracted from the top
 
3592
                (end) of RAM and won't get "touched" at all by U-Boot. By
 
3593
                fixing up gd->ram_size the Linux kernel should gets passed
 
3594
                the now "corrected" memory size and won't touch it either.
 
3595
                This should work for arch/ppc and arch/powerpc. Only Linux
 
3596
                board ports in arch/powerpc with bootwrapper support that
 
3597
                recalculate the memory size from the SDRAM controller setup
 
3598
                will have to get fixed in Linux additionally.
 
3599
 
 
3600
                This option can be used as a workaround for the 440EPx/GRx
 
3601
                CHIP 11 errata where the last 256 bytes in SDRAM shouldn't
 
3602
                be touched.
 
3603
 
 
3604
                WARNING: Please make sure that this value is a multiple of
 
3605
                the Linux page size (normally 4k). If this is not the case,
 
3606
                then the end address of the Linux memory will be located at a
 
3607
                non page size aligned address and this could cause major
 
3608
                problems.
 
3609
 
 
3610
- CONFIG_SYS_LOADS_BAUD_CHANGE:
 
3611
                Enable temporary baudrate change while serial download
 
3612
 
 
3613
- CONFIG_SYS_SDRAM_BASE:
 
3614
                Physical start address of SDRAM. _Must_ be 0 here.
 
3615
 
 
3616
- CONFIG_SYS_MBIO_BASE:
 
3617
                Physical start address of Motherboard I/O (if using a
 
3618
                Cogent motherboard)
 
3619
 
 
3620
- CONFIG_SYS_FLASH_BASE:
 
3621
                Physical start address of Flash memory.
 
3622
 
 
3623
- CONFIG_SYS_MONITOR_BASE:
 
3624
                Physical start address of boot monitor code (set by
 
3625
                make config files to be same as the text base address
 
3626
                (CONFIG_SYS_TEXT_BASE) used when linking) - same as
 
3627
                CONFIG_SYS_FLASH_BASE when booting from flash.
 
3628
 
 
3629
- CONFIG_SYS_MONITOR_LEN:
 
3630
                Size of memory reserved for monitor code, used to
 
3631
                determine _at_compile_time_ (!) if the environment is
 
3632
                embedded within the U-Boot image, or in a separate
 
3633
                flash sector.
 
3634
 
 
3635
- CONFIG_SYS_MALLOC_LEN:
 
3636
                Size of DRAM reserved for malloc() use.
 
3637
 
 
3638
- CONFIG_SYS_BOOTM_LEN:
 
3639
                Normally compressed uImages are limited to an
 
3640
                uncompressed size of 8 MBytes. If this is not enough,
 
3641
                you can define CONFIG_SYS_BOOTM_LEN in your board config file
 
3642
                to adjust this setting to your needs.
 
3643
 
 
3644
- CONFIG_SYS_BOOTMAPSZ:
 
3645
                Maximum size of memory mapped by the startup code of
 
3646
                the Linux kernel; all data that must be processed by
 
3647
                the Linux kernel (bd_info, boot arguments, FDT blob if
 
3648
                used) must be put below this limit, unless "bootm_low"
 
3649
                environment variable is defined and non-zero. In such case
 
3650
                all data for the Linux kernel must be between "bootm_low"
 
3651
                and "bootm_low" + CONFIG_SYS_BOOTMAPSZ.  The environment
 
3652
                variable "bootm_mapsize" will override the value of
 
3653
                CONFIG_SYS_BOOTMAPSZ.  If CONFIG_SYS_BOOTMAPSZ is undefined,
 
3654
                then the value in "bootm_size" will be used instead.
 
3655
 
 
3656
- CONFIG_SYS_BOOT_RAMDISK_HIGH:
 
3657
                Enable initrd_high functionality.  If defined then the
 
3658
                initrd_high feature is enabled and the bootm ramdisk subcommand
 
3659
                is enabled.
 
3660
 
 
3661
- CONFIG_SYS_BOOT_GET_CMDLINE:
 
3662
                Enables allocating and saving kernel cmdline in space between
 
3663
                "bootm_low" and "bootm_low" + BOOTMAPSZ.
 
3664
 
 
3665
- CONFIG_SYS_BOOT_GET_KBD:
 
3666
                Enables allocating and saving a kernel copy of the bd_info in
 
3667
                space between "bootm_low" and "bootm_low" + BOOTMAPSZ.
 
3668
 
 
3669
- CONFIG_SYS_MAX_FLASH_BANKS:
 
3670
                Max number of Flash memory banks
 
3671
 
 
3672
- CONFIG_SYS_MAX_FLASH_SECT:
 
3673
                Max number of sectors on a Flash chip
 
3674
 
 
3675
- CONFIG_SYS_FLASH_ERASE_TOUT:
 
3676
                Timeout for Flash erase operations (in ms)
 
3677
 
 
3678
- CONFIG_SYS_FLASH_WRITE_TOUT:
 
3679
                Timeout for Flash write operations (in ms)
 
3680
 
 
3681
- CONFIG_SYS_FLASH_LOCK_TOUT
 
3682
                Timeout for Flash set sector lock bit operation (in ms)
 
3683
 
 
3684
- CONFIG_SYS_FLASH_UNLOCK_TOUT
 
3685
                Timeout for Flash clear lock bits operation (in ms)
 
3686
 
 
3687
- CONFIG_SYS_FLASH_PROTECTION
 
3688
                If defined, hardware flash sectors protection is used
 
3689
                instead of U-Boot software protection.
 
3690
 
 
3691
- CONFIG_SYS_DIRECT_FLASH_TFTP:
 
3692
 
 
3693
                Enable TFTP transfers directly to flash memory;
 
3694
                without this option such a download has to be
 
3695
                performed in two steps: (1) download to RAM, and (2)
 
3696
                copy from RAM to flash.
 
3697
 
 
3698
                The two-step approach is usually more reliable, since
 
3699
                you can check if the download worked before you erase
 
3700
                the flash, but in some situations (when system RAM is
 
3701
                too limited to allow for a temporary copy of the
 
3702
                downloaded image) this option may be very useful.
 
3703
 
 
3704
- CONFIG_SYS_FLASH_CFI:
 
3705
                Define if the flash driver uses extra elements in the
 
3706
                common flash structure for storing flash geometry.
 
3707
 
 
3708
- CONFIG_FLASH_CFI_DRIVER
 
3709
                This option also enables the building of the cfi_flash driver
 
3710
                in the drivers directory
 
3711
 
 
3712
- CONFIG_FLASH_CFI_MTD
 
3713
                This option enables the building of the cfi_mtd driver
 
3714
                in the drivers directory. The driver exports CFI flash
 
3715
                to the MTD layer.
 
3716
 
 
3717
- CONFIG_SYS_FLASH_USE_BUFFER_WRITE
 
3718
                Use buffered writes to flash.
 
3719
 
 
3720
- CONFIG_FLASH_SPANSION_S29WS_N
 
3721
                s29ws-n MirrorBit flash has non-standard addresses for buffered
 
3722
                write commands.
 
3723
 
 
3724
- CONFIG_SYS_FLASH_QUIET_TEST
 
3725
                If this option is defined, the common CFI flash doesn't
 
3726
                print it's warning upon not recognized FLASH banks. This
 
3727
                is useful, if some of the configured banks are only
 
3728
                optionally available.
 
3729
 
 
3730
- CONFIG_FLASH_SHOW_PROGRESS
 
3731
                If defined (must be an integer), print out countdown
 
3732
                digits and dots.  Recommended value: 45 (9..1) for 80
 
3733
                column displays, 15 (3..1) for 40 column displays.
 
3734
 
 
3735
- CONFIG_FLASH_VERIFY
 
3736
                If defined, the content of the flash (destination) is compared
 
3737
                against the source after the write operation. An error message
 
3738
                will be printed when the contents are not identical.
 
3739
                Please note that this option is useless in nearly all cases,
 
3740
                since such flash programming errors usually are detected earlier
 
3741
                while unprotecting/erasing/programming. Please only enable
 
3742
                this option if you really know what you are doing.
 
3743
 
 
3744
- CONFIG_SYS_RX_ETH_BUFFER:
 
3745
                Defines the number of Ethernet receive buffers. On some
 
3746
                Ethernet controllers it is recommended to set this value
 
3747
                to 8 or even higher (EEPRO100 or 405 EMAC), since all
 
3748
                buffers can be full shortly after enabling the interface
 
3749
                on high Ethernet traffic.
 
3750
                Defaults to 4 if not defined.
 
3751
 
 
3752
- CONFIG_ENV_MAX_ENTRIES
 
3753
 
 
3754
        Maximum number of entries in the hash table that is used
 
3755
        internally to store the environment settings. The default
 
3756
        setting is supposed to be generous and should work in most
 
3757
        cases. This setting can be used to tune behaviour; see
 
3758
        lib/hashtable.c for details.
 
3759
 
 
3760
- CONFIG_ENV_FLAGS_LIST_DEFAULT
 
3761
- CONFIG_ENV_FLAGS_LIST_STATIC
 
3762
        Enable validation of the values given to environment variables when
 
3763
        calling env set.  Variables can be restricted to only decimal,
 
3764
        hexadecimal, or boolean.  If CONFIG_CMD_NET is also defined,
 
3765
        the variables can also be restricted to IP address or MAC address.
 
3766
 
 
3767
        The format of the list is:
 
3768
                type_attribute = [s|d|x|b|i|m]
 
3769
                access_atribute = [a|r|o|c]
 
3770
                attributes = type_attribute[access_atribute]
 
3771
                entry = variable_name[:attributes]
 
3772
                list = entry[,list]
 
3773
 
 
3774
        The type attributes are:
 
3775
                s - String (default)
 
3776
                d - Decimal
 
3777
                x - Hexadecimal
 
3778
                b - Boolean ([1yYtT|0nNfF])
 
3779
                i - IP address
 
3780
                m - MAC address
 
3781
 
 
3782
        The access attributes are:
 
3783
                a - Any (default)
 
3784
                r - Read-only
 
3785
                o - Write-once
 
3786
                c - Change-default
 
3787
 
 
3788
        - CONFIG_ENV_FLAGS_LIST_DEFAULT
 
3789
                Define this to a list (string) to define the ".flags"
 
3790
                envirnoment variable in the default or embedded environment.
 
3791
 
 
3792
        - CONFIG_ENV_FLAGS_LIST_STATIC
 
3793
                Define this to a list (string) to define validation that
 
3794
                should be done if an entry is not found in the ".flags"
 
3795
                environment variable.  To override a setting in the static
 
3796
                list, simply add an entry for the same variable name to the
 
3797
                ".flags" variable.
 
3798
 
 
3799
- CONFIG_ENV_ACCESS_IGNORE_FORCE
 
3800
        If defined, don't allow the -f switch to env set override variable
 
3801
        access flags.
 
3802
 
 
3803
- CONFIG_SYS_GENERIC_BOARD
 
3804
        This selects the architecture-generic board system instead of the
 
3805
        architecture-specific board files. It is intended to move boards
 
3806
        to this new framework over time. Defining this will disable the
 
3807
        arch/foo/lib/board.c file and use common/board_f.c and
 
3808
        common/board_r.c instead. To use this option your architecture
 
3809
        must support it (i.e. must define __HAVE_ARCH_GENERIC_BOARD in
 
3810
        its config.mk file). If you find problems enabling this option on
 
3811
        your board please report the problem and send patches!
 
3812
 
 
3813
- CONFIG_OMAP_PLATFORM_RESET_TIME_MAX_USEC (OMAP only)
 
3814
        This is set by OMAP boards for the max time that reset should
 
3815
        be asserted. See doc/README.omap-reset-time for details on how
 
3816
        the value can be calulated on a given board.
 
3817
 
 
3818
The following definitions that deal with the placement and management
 
3819
of environment data (variable area); in general, we support the
 
3820
following configurations:
 
3821
 
 
3822
- CONFIG_BUILD_ENVCRC:
 
3823
 
 
3824
        Builds up envcrc with the target environment so that external utils
 
3825
        may easily extract it and embed it in final U-Boot images.
 
3826
 
 
3827
- CONFIG_ENV_IS_IN_FLASH:
 
3828
 
 
3829
        Define this if the environment is in flash memory.
 
3830
 
 
3831
        a) The environment occupies one whole flash sector, which is
 
3832
           "embedded" in the text segment with the U-Boot code. This
 
3833
           happens usually with "bottom boot sector" or "top boot
 
3834
           sector" type flash chips, which have several smaller
 
3835
           sectors at the start or the end. For instance, such a
 
3836
           layout can have sector sizes of 8, 2x4, 16, Nx32 kB. In
 
3837
           such a case you would place the environment in one of the
 
3838
           4 kB sectors - with U-Boot code before and after it. With
 
3839
           "top boot sector" type flash chips, you would put the
 
3840
           environment in one of the last sectors, leaving a gap
 
3841
           between U-Boot and the environment.
 
3842
 
 
3843
        - CONFIG_ENV_OFFSET:
 
3844
 
 
3845
           Offset of environment data (variable area) to the
 
3846
           beginning of flash memory; for instance, with bottom boot
 
3847
           type flash chips the second sector can be used: the offset
 
3848
           for this sector is given here.
 
3849
 
 
3850
           CONFIG_ENV_OFFSET is used relative to CONFIG_SYS_FLASH_BASE.
 
3851
 
 
3852
        - CONFIG_ENV_ADDR:
 
3853
 
 
3854
           This is just another way to specify the start address of
 
3855
           the flash sector containing the environment (instead of
 
3856
           CONFIG_ENV_OFFSET).
 
3857
 
 
3858
        - CONFIG_ENV_SECT_SIZE:
 
3859
 
 
3860
           Size of the sector containing the environment.
 
3861
 
 
3862
 
 
3863
        b) Sometimes flash chips have few, equal sized, BIG sectors.
 
3864
           In such a case you don't want to spend a whole sector for
 
3865
           the environment.
 
3866
 
 
3867
        - CONFIG_ENV_SIZE:
 
3868
 
 
3869
           If you use this in combination with CONFIG_ENV_IS_IN_FLASH
 
3870
           and CONFIG_ENV_SECT_SIZE, you can specify to use only a part
 
3871
           of this flash sector for the environment. This saves
 
3872
           memory for the RAM copy of the environment.
 
3873
 
 
3874
           It may also save flash memory if you decide to use this
 
3875
           when your environment is "embedded" within U-Boot code,
 
3876
           since then the remainder of the flash sector could be used
 
3877
           for U-Boot code. It should be pointed out that this is
 
3878
           STRONGLY DISCOURAGED from a robustness point of view:
 
3879
           updating the environment in flash makes it always
 
3880
           necessary to erase the WHOLE sector. If something goes
 
3881
           wrong before the contents has been restored from a copy in
 
3882
           RAM, your target system will be dead.
 
3883
 
 
3884
        - CONFIG_ENV_ADDR_REDUND
 
3885
          CONFIG_ENV_SIZE_REDUND
 
3886
 
 
3887
           These settings describe a second storage area used to hold
 
3888
           a redundant copy of the environment data, so that there is
 
3889
           a valid backup copy in case there is a power failure during
 
3890
           a "saveenv" operation.
 
3891
 
 
3892
BE CAREFUL! Any changes to the flash layout, and some changes to the
 
3893
source code will make it necessary to adapt <board>/u-boot.lds*
 
3894
accordingly!
 
3895
 
 
3896
 
 
3897
- CONFIG_ENV_IS_IN_NVRAM:
 
3898
 
 
3899
        Define this if you have some non-volatile memory device
 
3900
        (NVRAM, battery buffered SRAM) which you want to use for the
 
3901
        environment.
 
3902
 
 
3903
        - CONFIG_ENV_ADDR:
 
3904
        - CONFIG_ENV_SIZE:
 
3905
 
 
3906
          These two #defines are used to determine the memory area you
 
3907
          want to use for environment. It is assumed that this memory
 
3908
          can just be read and written to, without any special
 
3909
          provision.
 
3910
 
 
3911
BE CAREFUL! The first access to the environment happens quite early
 
3912
in U-Boot initalization (when we try to get the setting of for the
 
3913
console baudrate). You *MUST* have mapped your NVRAM area then, or
 
3914
U-Boot will hang.
 
3915
 
 
3916
Please note that even with NVRAM we still use a copy of the
 
3917
environment in RAM: we could work on NVRAM directly, but we want to
 
3918
keep settings there always unmodified except somebody uses "saveenv"
 
3919
to save the current settings.
 
3920
 
 
3921
 
 
3922
- CONFIG_ENV_IS_IN_EEPROM:
 
3923
 
 
3924
        Use this if you have an EEPROM or similar serial access
 
3925
        device and a driver for it.
 
3926
 
 
3927
        - CONFIG_ENV_OFFSET:
 
3928
        - CONFIG_ENV_SIZE:
 
3929
 
 
3930
          These two #defines specify the offset and size of the
 
3931
          environment area within the total memory of your EEPROM.
 
3932
 
 
3933
        - CONFIG_SYS_I2C_EEPROM_ADDR:
 
3934
          If defined, specified the chip address of the EEPROM device.
 
3935
          The default address is zero.
 
3936
 
 
3937
        - CONFIG_SYS_EEPROM_PAGE_WRITE_BITS:
 
3938
          If defined, the number of bits used to address bytes in a
 
3939
          single page in the EEPROM device.  A 64 byte page, for example
 
3940
          would require six bits.
 
3941
 
 
3942
        - CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS:
 
3943
          If defined, the number of milliseconds to delay between
 
3944
          page writes.  The default is zero milliseconds.
 
3945
 
 
3946
        - CONFIG_SYS_I2C_EEPROM_ADDR_LEN:
 
3947
          The length in bytes of the EEPROM memory array address.  Note
 
3948
          that this is NOT the chip address length!
 
3949
 
 
3950
        - CONFIG_SYS_I2C_EEPROM_ADDR_OVERFLOW:
 
3951
          EEPROM chips that implement "address overflow" are ones
 
3952
          like Catalyst 24WC04/08/16 which has 9/10/11 bits of
 
3953
          address and the extra bits end up in the "chip address" bit
 
3954
          slots. This makes a 24WC08 (1Kbyte) chip look like four 256
 
3955
          byte chips.
 
3956
 
 
3957
          Note that we consider the length of the address field to
 
3958
          still be one byte because the extra address bits are hidden
 
3959
          in the chip address.
 
3960
 
 
3961
        - CONFIG_SYS_EEPROM_SIZE:
 
3962
          The size in bytes of the EEPROM device.
 
3963
 
 
3964
        - CONFIG_ENV_EEPROM_IS_ON_I2C
 
3965
          define this, if you have I2C and SPI activated, and your
 
3966
          EEPROM, which holds the environment, is on the I2C bus.
 
3967
 
 
3968
        - CONFIG_I2C_ENV_EEPROM_BUS
 
3969
          if you have an Environment on an EEPROM reached over
 
3970
          I2C muxes, you can define here, how to reach this
 
3971
          EEPROM. For example:
 
3972
 
 
3973
          #define CONFIG_I2C_ENV_EEPROM_BUS       1
 
3974
 
 
3975
          EEPROM which holds the environment, is reached over
 
3976
          a pca9547 i2c mux with address 0x70, channel 3.
 
3977
 
 
3978
- CONFIG_ENV_IS_IN_DATAFLASH:
 
3979
 
 
3980
        Define this if you have a DataFlash memory device which you
 
3981
        want to use for the environment.
 
3982
 
 
3983
        - CONFIG_ENV_OFFSET:
 
3984
        - CONFIG_ENV_ADDR:
 
3985
        - CONFIG_ENV_SIZE:
 
3986
 
 
3987
          These three #defines specify the offset and size of the
 
3988
          environment area within the total memory of your DataFlash placed
 
3989
          at the specified address.
 
3990
 
 
3991
- CONFIG_ENV_IS_IN_REMOTE:
 
3992
 
 
3993
        Define this if you have a remote memory space which you
 
3994
        want to use for the local device's environment.
 
3995
 
 
3996
        - CONFIG_ENV_ADDR:
 
3997
        - CONFIG_ENV_SIZE:
 
3998
 
 
3999
          These two #defines specify the address and size of the
 
4000
          environment area within the remote memory space. The
 
4001
          local device can get the environment from remote memory
 
4002
          space by SRIO or PCIE links.
 
4003
 
 
4004
BE CAREFUL! For some special cases, the local device can not use
 
4005
"saveenv" command. For example, the local device will get the
 
4006
environment stored in a remote NOR flash by SRIO or PCIE link,
 
4007
but it can not erase, write this NOR flash by SRIO or PCIE interface.
 
4008
 
 
4009
- CONFIG_ENV_IS_IN_NAND:
 
4010
 
 
4011
        Define this if you have a NAND device which you want to use
 
4012
        for the environment.
 
4013
 
 
4014
        - CONFIG_ENV_OFFSET:
 
4015
        - CONFIG_ENV_SIZE:
 
4016
 
 
4017
          These two #defines specify the offset and size of the environment
 
4018
          area within the first NAND device.  CONFIG_ENV_OFFSET must be
 
4019
          aligned to an erase block boundary.
 
4020
 
 
4021
        - CONFIG_ENV_OFFSET_REDUND (optional):
 
4022
 
 
4023
          This setting describes a second storage area of CONFIG_ENV_SIZE
 
4024
          size used to hold a redundant copy of the environment data, so
 
4025
          that there is a valid backup copy in case there is a power failure
 
4026
          during a "saveenv" operation.  CONFIG_ENV_OFFSET_RENDUND must be
 
4027
          aligned to an erase block boundary.
 
4028
 
 
4029
        - CONFIG_ENV_RANGE (optional):
 
4030
 
 
4031
          Specifies the length of the region in which the environment
 
4032
          can be written.  This should be a multiple of the NAND device's
 
4033
          block size.  Specifying a range with more erase blocks than
 
4034
          are needed to hold CONFIG_ENV_SIZE allows bad blocks within
 
4035
          the range to be avoided.
 
4036
 
 
4037
        - CONFIG_ENV_OFFSET_OOB (optional):
 
4038
 
 
4039
          Enables support for dynamically retrieving the offset of the
 
4040
          environment from block zero's out-of-band data.  The
 
4041
          "nand env.oob" command can be used to record this offset.
 
4042
          Currently, CONFIG_ENV_OFFSET_REDUND is not supported when
 
4043
          using CONFIG_ENV_OFFSET_OOB.
 
4044
 
 
4045
- CONFIG_NAND_ENV_DST
 
4046
 
 
4047
        Defines address in RAM to which the nand_spl code should copy the
 
4048
        environment. If redundant environment is used, it will be copied to
 
4049
        CONFIG_NAND_ENV_DST + CONFIG_ENV_SIZE.
 
4050
 
 
4051
- CONFIG_ENV_IS_IN_UBI:
 
4052
 
 
4053
        Define this if you have an UBI volume that you want to use for the
 
4054
        environment.  This has the benefit of wear-leveling the environment
 
4055
        accesses, which is important on NAND.
 
4056
 
 
4057
        - CONFIG_ENV_UBI_PART:
 
4058
 
 
4059
          Define this to a string that is the mtd partition containing the UBI.
 
4060
 
 
4061
        - CONFIG_ENV_UBI_VOLUME:
 
4062
 
 
4063
          Define this to the name of the volume that you want to store the
 
4064
          environment in.
 
4065
 
 
4066
        - CONFIG_ENV_UBI_VOLUME_REDUND:
 
4067
 
 
4068
          Define this to the name of another volume to store a second copy of
 
4069
          the environment in.  This will enable redundant environments in UBI.
 
4070
          It is assumed that both volumes are in the same MTD partition.
 
4071
 
 
4072
        - CONFIG_UBI_SILENCE_MSG
 
4073
        - CONFIG_UBIFS_SILENCE_MSG
 
4074
 
 
4075
          You will probably want to define these to avoid a really noisy system
 
4076
          when storing the env in UBI.
 
4077
 
 
4078
- CONFIG_ENV_IS_IN_MMC:
 
4079
 
 
4080
        Define this if you have an MMC device which you want to use for the
 
4081
        environment.
 
4082
 
 
4083
        - CONFIG_SYS_MMC_ENV_DEV:
 
4084
 
 
4085
          Specifies which MMC device the environment is stored in.
 
4086
 
 
4087
        - CONFIG_SYS_MMC_ENV_PART (optional):
 
4088
 
 
4089
          Specifies which MMC partition the environment is stored in. If not
 
4090
          set, defaults to partition 0, the user area. Common values might be
 
4091
          1 (first MMC boot partition), 2 (second MMC boot partition).
 
4092
 
 
4093
        - CONFIG_ENV_OFFSET:
 
4094
        - CONFIG_ENV_SIZE:
 
4095
 
 
4096
          These two #defines specify the offset and size of the environment
 
4097
          area within the specified MMC device.
 
4098
 
 
4099
          If offset is positive (the usual case), it is treated as relative to
 
4100
          the start of the MMC partition. If offset is negative, it is treated
 
4101
          as relative to the end of the MMC partition. This can be useful if
 
4102
          your board may be fitted with different MMC devices, which have
 
4103
          different sizes for the MMC partitions, and you always want the
 
4104
          environment placed at the very end of the partition, to leave the
 
4105
          maximum possible space before it, to store other data.
 
4106
 
 
4107
          These two values are in units of bytes, but must be aligned to an
 
4108
          MMC sector boundary.
 
4109
 
 
4110
        - CONFIG_ENV_OFFSET_REDUND (optional):
 
4111
 
 
4112
          Specifies a second storage area, of CONFIG_ENV_SIZE size, used to
 
4113
          hold a redundant copy of the environment data. This provides a
 
4114
          valid backup copy in case the other copy is corrupted, e.g. due
 
4115
          to a power failure during a "saveenv" operation.
 
4116
 
 
4117
          This value may also be positive or negative; this is handled in the
 
4118
          same way as CONFIG_ENV_OFFSET.
 
4119
 
 
4120
          This value is also in units of bytes, but must also be aligned to
 
4121
          an MMC sector boundary.
 
4122
 
 
4123
        - CONFIG_ENV_SIZE_REDUND (optional):
 
4124
 
 
4125
          This value need not be set, even when CONFIG_ENV_OFFSET_REDUND is
 
4126
          set. If this value is set, it must be set to the same value as
 
4127
          CONFIG_ENV_SIZE.
 
4128
 
 
4129
- CONFIG_SYS_SPI_INIT_OFFSET
 
4130
 
 
4131
        Defines offset to the initial SPI buffer area in DPRAM. The
 
4132
        area is used at an early stage (ROM part) if the environment
 
4133
        is configured to reside in the SPI EEPROM: We need a 520 byte
 
4134
        scratch DPRAM area. It is used between the two initialization
 
4135
        calls (spi_init_f() and spi_init_r()). A value of 0xB00 seems
 
4136
        to be a good choice since it makes it far enough from the
 
4137
        start of the data area as well as from the stack pointer.
 
4138
 
 
4139
Please note that the environment is read-only until the monitor
 
4140
has been relocated to RAM and a RAM copy of the environment has been
 
4141
created; also, when using EEPROM you will have to use getenv_f()
 
4142
until then to read environment variables.
 
4143
 
 
4144
The environment is protected by a CRC32 checksum. Before the monitor
 
4145
is relocated into RAM, as a result of a bad CRC you will be working
 
4146
with the compiled-in default environment - *silently*!!! [This is
 
4147
necessary, because the first environment variable we need is the
 
4148
"baudrate" setting for the console - if we have a bad CRC, we don't
 
4149
have any device yet where we could complain.]
 
4150
 
 
4151
Note: once the monitor has been relocated, then it will complain if
 
4152
the default environment is used; a new CRC is computed as soon as you
 
4153
use the "saveenv" command to store a valid environment.
 
4154
 
 
4155
- CONFIG_SYS_FAULT_ECHO_LINK_DOWN:
 
4156
                Echo the inverted Ethernet link state to the fault LED.
 
4157
 
 
4158
                Note: If this option is active, then CONFIG_SYS_FAULT_MII_ADDR
 
4159
                      also needs to be defined.
 
4160
 
 
4161
- CONFIG_SYS_FAULT_MII_ADDR:
 
4162
                MII address of the PHY to check for the Ethernet link state.
 
4163
 
 
4164
- CONFIG_NS16550_MIN_FUNCTIONS:
 
4165
                Define this if you desire to only have use of the NS16550_init
 
4166
                and NS16550_putc functions for the serial driver located at
 
4167
                drivers/serial/ns16550.c.  This option is useful for saving
 
4168
                space for already greatly restricted images, including but not
 
4169
                limited to NAND_SPL configurations.
 
4170
 
 
4171
- CONFIG_DISPLAY_BOARDINFO
 
4172
                Display information about the board that U-Boot is running on
 
4173
                when U-Boot starts up. The board function checkboard() is called
 
4174
                to do this.
 
4175
 
 
4176
- CONFIG_DISPLAY_BOARDINFO_LATE
 
4177
                Similar to the previous option, but display this information
 
4178
                later, once stdio is running and output goes to the LCD, if
 
4179
                present.
 
4180
 
 
4181
Low Level (hardware related) configuration options:
 
4182
---------------------------------------------------
 
4183
 
 
4184
- CONFIG_SYS_CACHELINE_SIZE:
 
4185
                Cache Line Size of the CPU.
 
4186
 
 
4187
- CONFIG_SYS_DEFAULT_IMMR:
 
4188
                Default address of the IMMR after system reset.
 
4189
 
 
4190
                Needed on some 8260 systems (MPC8260ADS, PQ2FADS-ZU,
 
4191
                and RPXsuper) to be able to adjust the position of
 
4192
                the IMMR register after a reset.
 
4193
 
 
4194
- CONFIG_SYS_CCSRBAR_DEFAULT:
 
4195
                Default (power-on reset) physical address of CCSR on Freescale
 
4196
                PowerPC SOCs.
 
4197
 
 
4198
- CONFIG_SYS_CCSRBAR:
 
4199
                Virtual address of CCSR.  On a 32-bit build, this is typically
 
4200
                the same value as CONFIG_SYS_CCSRBAR_DEFAULT.
 
4201
 
 
4202
                CONFIG_SYS_DEFAULT_IMMR must also be set to this value,
 
4203
                for cross-platform code that uses that macro instead.
 
4204
 
 
4205
- CONFIG_SYS_CCSRBAR_PHYS:
 
4206
                Physical address of CCSR.  CCSR can be relocated to a new
 
4207
                physical address, if desired.  In this case, this macro should
 
4208
                be set to that address.  Otherwise, it should be set to the
 
4209
                same value as CONFIG_SYS_CCSRBAR_DEFAULT.  For example, CCSR
 
4210
                is typically relocated on 36-bit builds.  It is recommended
 
4211
                that this macro be defined via the _HIGH and _LOW macros:
 
4212
 
 
4213
                #define CONFIG_SYS_CCSRBAR_PHYS ((CONFIG_SYS_CCSRBAR_PHYS_HIGH
 
4214
                        * 1ull) << 32 | CONFIG_SYS_CCSRBAR_PHYS_LOW)
 
4215
 
 
4216
- CONFIG_SYS_CCSRBAR_PHYS_HIGH:
 
4217
                Bits 33-36 of CONFIG_SYS_CCSRBAR_PHYS.  This value is typically
 
4218
                either 0 (32-bit build) or 0xF (36-bit build).  This macro is
 
4219
                used in assembly code, so it must not contain typecasts or
 
4220
                integer size suffixes (e.g. "ULL").
 
4221
 
 
4222
- CONFIG_SYS_CCSRBAR_PHYS_LOW:
 
4223
                Lower 32-bits of CONFIG_SYS_CCSRBAR_PHYS.  This macro is
 
4224
                used in assembly code, so it must not contain typecasts or
 
4225
                integer size suffixes (e.g. "ULL").
 
4226
 
 
4227
- CONFIG_SYS_CCSR_DO_NOT_RELOCATE:
 
4228
                If this macro is defined, then CONFIG_SYS_CCSRBAR_PHYS will be
 
4229
                forced to a value that ensures that CCSR is not relocated.
 
4230
 
 
4231
- Floppy Disk Support:
 
4232
                CONFIG_SYS_FDC_DRIVE_NUMBER
 
4233
 
 
4234
                the default drive number (default value 0)
 
4235
 
 
4236
                CONFIG_SYS_ISA_IO_STRIDE
 
4237
 
 
4238
                defines the spacing between FDC chipset registers
 
4239
                (default value 1)
 
4240
 
 
4241
                CONFIG_SYS_ISA_IO_OFFSET
 
4242
 
 
4243
                defines the offset of register from address. It
 
4244
                depends on which part of the data bus is connected to
 
4245
                the FDC chipset. (default value 0)
 
4246
 
 
4247
                If CONFIG_SYS_ISA_IO_STRIDE CONFIG_SYS_ISA_IO_OFFSET and
 
4248
                CONFIG_SYS_FDC_DRIVE_NUMBER are undefined, they take their
 
4249
                default value.
 
4250
 
 
4251
                if CONFIG_SYS_FDC_HW_INIT is defined, then the function
 
4252
                fdc_hw_init() is called at the beginning of the FDC
 
4253
                setup. fdc_hw_init() must be provided by the board
 
4254
                source code. It is used to make hardware dependant
 
4255
                initializations.
 
4256
 
 
4257
- CONFIG_IDE_AHB:
 
4258
                Most IDE controllers were designed to be connected with PCI
 
4259
                interface. Only few of them were designed for AHB interface.
 
4260
                When software is doing ATA command and data transfer to
 
4261
                IDE devices through IDE-AHB controller, some additional
 
4262
                registers accessing to these kind of IDE-AHB controller
 
4263
                is requierd.
 
4264
 
 
4265
- CONFIG_SYS_IMMR:      Physical address of the Internal Memory.
 
4266
                DO NOT CHANGE unless you know exactly what you're
 
4267
                doing! (11-4) [MPC8xx/82xx systems only]
 
4268
 
 
4269
- CONFIG_SYS_INIT_RAM_ADDR:
 
4270
 
 
4271
                Start address of memory area that can be used for
 
4272
                initial data and stack; please note that this must be
 
4273
                writable memory that is working WITHOUT special
 
4274
                initialization, i. e. you CANNOT use normal RAM which
 
4275
                will become available only after programming the
 
4276
                memory controller and running certain initialization
 
4277
                sequences.
 
4278
 
 
4279
                U-Boot uses the following memory types:
 
4280
                - MPC8xx and MPC8260: IMMR (internal memory of the CPU)
 
4281
                - MPC824X: data cache
 
4282
                - PPC4xx:  data cache
 
4283
 
 
4284
- CONFIG_SYS_GBL_DATA_OFFSET:
 
4285
 
 
4286
                Offset of the initial data structure in the memory
 
4287
                area defined by CONFIG_SYS_INIT_RAM_ADDR. Usually
 
4288
                CONFIG_SYS_GBL_DATA_OFFSET is chosen such that the initial
 
4289
                data is located at the end of the available space
 
4290
                (sometimes written as (CONFIG_SYS_INIT_RAM_SIZE -
 
4291
                CONFIG_SYS_INIT_DATA_SIZE), and the initial stack is just
 
4292
                below that area (growing from (CONFIG_SYS_INIT_RAM_ADDR +
 
4293
                CONFIG_SYS_GBL_DATA_OFFSET) downward.
 
4294
 
 
4295
        Note:
 
4296
                On the MPC824X (or other systems that use the data
 
4297
                cache for initial memory) the address chosen for
 
4298
                CONFIG_SYS_INIT_RAM_ADDR is basically arbitrary - it must
 
4299
                point to an otherwise UNUSED address space between
 
4300
                the top of RAM and the start of the PCI space.
 
4301
 
 
4302
- CONFIG_SYS_SIUMCR:    SIU Module Configuration (11-6)
 
4303
 
 
4304
- CONFIG_SYS_SYPCR:     System Protection Control (11-9)
 
4305
 
 
4306
- CONFIG_SYS_TBSCR:     Time Base Status and Control (11-26)
 
4307
 
 
4308
- CONFIG_SYS_PISCR:     Periodic Interrupt Status and Control (11-31)
 
4309
 
 
4310
- CONFIG_SYS_PLPRCR:    PLL, Low-Power, and Reset Control Register (15-30)
 
4311
 
 
4312
- CONFIG_SYS_SCCR:      System Clock and reset Control Register (15-27)
 
4313
 
 
4314
- CONFIG_SYS_OR_TIMING_SDRAM:
 
4315
                SDRAM timing
 
4316
 
 
4317
- CONFIG_SYS_MAMR_PTA:
 
4318
                periodic timer for refresh
 
4319
 
 
4320
- CONFIG_SYS_DER:       Debug Event Register (37-47)
 
4321
 
 
4322
- FLASH_BASE0_PRELIM, FLASH_BASE1_PRELIM, CONFIG_SYS_REMAP_OR_AM,
 
4323
  CONFIG_SYS_PRELIM_OR_AM, CONFIG_SYS_OR_TIMING_FLASH, CONFIG_SYS_OR0_REMAP,
 
4324
  CONFIG_SYS_OR0_PRELIM, CONFIG_SYS_BR0_PRELIM, CONFIG_SYS_OR1_REMAP, CONFIG_SYS_OR1_PRELIM,
 
4325
  CONFIG_SYS_BR1_PRELIM:
 
4326
                Memory Controller Definitions: BR0/1 and OR0/1 (FLASH)
 
4327
 
 
4328
- SDRAM_BASE2_PRELIM, SDRAM_BASE3_PRELIM, SDRAM_MAX_SIZE,
 
4329
  CONFIG_SYS_OR_TIMING_SDRAM, CONFIG_SYS_OR2_PRELIM, CONFIG_SYS_BR2_PRELIM,
 
4330
  CONFIG_SYS_OR3_PRELIM, CONFIG_SYS_BR3_PRELIM:
 
4331
                Memory Controller Definitions: BR2/3 and OR2/3 (SDRAM)
 
4332
 
 
4333
- CONFIG_SYS_MAMR_PTA, CONFIG_SYS_MPTPR_2BK_4K, CONFIG_SYS_MPTPR_1BK_4K, CONFIG_SYS_MPTPR_2BK_8K,
 
4334
  CONFIG_SYS_MPTPR_1BK_8K, CONFIG_SYS_MAMR_8COL, CONFIG_SYS_MAMR_9COL:
 
4335
                Machine Mode Register and Memory Periodic Timer
 
4336
                Prescaler definitions (SDRAM timing)
 
4337
 
 
4338
- CONFIG_SYS_I2C_UCODE_PATCH, CONFIG_SYS_I2C_DPMEM_OFFSET [0x1FC0]:
 
4339
                enable I2C microcode relocation patch (MPC8xx);
 
4340
                define relocation offset in DPRAM [DSP2]
 
4341
 
 
4342
- CONFIG_SYS_SMC_UCODE_PATCH, CONFIG_SYS_SMC_DPMEM_OFFSET [0x1FC0]:
 
4343
                enable SMC microcode relocation patch (MPC8xx);
 
4344
                define relocation offset in DPRAM [SMC1]
 
4345
 
 
4346
- CONFIG_SYS_SPI_UCODE_PATCH, CONFIG_SYS_SPI_DPMEM_OFFSET [0x1FC0]:
 
4347
                enable SPI microcode relocation patch (MPC8xx);
 
4348
                define relocation offset in DPRAM [SCC4]
 
4349
 
 
4350
- CONFIG_SYS_USE_OSCCLK:
 
4351
                Use OSCM clock mode on MBX8xx board. Be careful,
 
4352
                wrong setting might damage your board. Read
 
4353
                doc/README.MBX before setting this variable!
 
4354
 
 
4355
- CONFIG_SYS_CPM_POST_WORD_ADDR: (MPC8xx, MPC8260 only)
 
4356
                Offset of the bootmode word in DPRAM used by post
 
4357
                (Power On Self Tests). This definition overrides
 
4358
                #define'd default value in commproc.h resp.
 
4359
                cpm_8260.h.
 
4360
 
 
4361
- CONFIG_SYS_PCI_SLV_MEM_LOCAL, CONFIG_SYS_PCI_SLV_MEM_BUS, CONFIG_SYS_PICMR0_MASK_ATTRIB,
 
4362
  CONFIG_SYS_PCI_MSTR0_LOCAL, CONFIG_SYS_PCIMSK0_MASK, CONFIG_SYS_PCI_MSTR1_LOCAL,
 
4363
  CONFIG_SYS_PCIMSK1_MASK, CONFIG_SYS_PCI_MSTR_MEM_LOCAL, CONFIG_SYS_PCI_MSTR_MEM_BUS,
 
4364
  CONFIG_SYS_CPU_PCI_MEM_START, CONFIG_SYS_PCI_MSTR_MEM_SIZE, CONFIG_SYS_POCMR0_MASK_ATTRIB,
 
4365
  CONFIG_SYS_PCI_MSTR_MEMIO_LOCAL, CONFIG_SYS_PCI_MSTR_MEMIO_BUS, CPU_PCI_MEMIO_START,
 
4366
  CONFIG_SYS_PCI_MSTR_MEMIO_SIZE, CONFIG_SYS_POCMR1_MASK_ATTRIB, CONFIG_SYS_PCI_MSTR_IO_LOCAL,
 
4367
  CONFIG_SYS_PCI_MSTR_IO_BUS, CONFIG_SYS_CPU_PCI_IO_START, CONFIG_SYS_PCI_MSTR_IO_SIZE,
 
4368
  CONFIG_SYS_POCMR2_MASK_ATTRIB: (MPC826x only)
 
4369
                Overrides the default PCI memory map in arch/powerpc/cpu/mpc8260/pci.c if set.
 
4370
 
 
4371
- CONFIG_PCI_DISABLE_PCIE:
 
4372
                Disable PCI-Express on systems where it is supported but not
 
4373
                required.
 
4374
 
 
4375
- CONFIG_PCI_ENUM_ONLY
 
4376
                Only scan through and get the devices on the busses.
 
4377
                Don't do any setup work, presumably because someone or
 
4378
                something has already done it, and we don't need to do it
 
4379
                a second time.  Useful for platforms that are pre-booted
 
4380
                by coreboot or similar.
 
4381
 
 
4382
- CONFIG_PCI_INDIRECT_BRIDGE:
 
4383
                Enable support for indirect PCI bridges.
 
4384
 
 
4385
- CONFIG_SYS_SRIO:
 
4386
                Chip has SRIO or not
 
4387
 
 
4388
- CONFIG_SRIO1:
 
4389
                Board has SRIO 1 port available
 
4390
 
 
4391
- CONFIG_SRIO2:
 
4392
                Board has SRIO 2 port available
 
4393
 
 
4394
- CONFIG_SRIO_PCIE_BOOT_MASTER
 
4395
                Board can support master function for Boot from SRIO and PCIE
 
4396
 
 
4397
- CONFIG_SYS_SRIOn_MEM_VIRT:
 
4398
                Virtual Address of SRIO port 'n' memory region
 
4399
 
 
4400
- CONFIG_SYS_SRIOn_MEM_PHYS:
 
4401
                Physical Address of SRIO port 'n' memory region
 
4402
 
 
4403
- CONFIG_SYS_SRIOn_MEM_SIZE:
 
4404
                Size of SRIO port 'n' memory region
 
4405
 
 
4406
- CONFIG_SYS_NAND_BUSWIDTH_16BIT
 
4407
                Defined to tell the NAND controller that the NAND chip is using
 
4408
                a 16 bit bus.
 
4409
                Not all NAND drivers use this symbol.
 
4410
                Example of drivers that use it:
 
4411
                - drivers/mtd/nand/ndfc.c
 
4412
                - drivers/mtd/nand/mxc_nand.c
 
4413
 
 
4414
- CONFIG_SYS_NDFC_EBC0_CFG
 
4415
                Sets the EBC0_CFG register for the NDFC. If not defined
 
4416
                a default value will be used.
 
4417
 
 
4418
- CONFIG_SPD_EEPROM
 
4419
                Get DDR timing information from an I2C EEPROM. Common
 
4420
                with pluggable memory modules such as SODIMMs
 
4421
 
 
4422
  SPD_EEPROM_ADDRESS
 
4423
                I2C address of the SPD EEPROM
 
4424
 
 
4425
- CONFIG_SYS_SPD_BUS_NUM
 
4426
                If SPD EEPROM is on an I2C bus other than the first
 
4427
                one, specify here. Note that the value must resolve
 
4428
                to something your driver can deal with.
 
4429
 
 
4430
- CONFIG_SYS_DDR_RAW_TIMING
 
4431
                Get DDR timing information from other than SPD. Common with
 
4432
                soldered DDR chips onboard without SPD. DDR raw timing
 
4433
                parameters are extracted from datasheet and hard-coded into
 
4434
                header files or board specific files.
 
4435
 
 
4436
- CONFIG_FSL_DDR_INTERACTIVE
 
4437
                Enable interactive DDR debugging. See doc/README.fsl-ddr.
 
4438
 
 
4439
- CONFIG_SYS_83XX_DDR_USES_CS0
 
4440
                Only for 83xx systems. If specified, then DDR should
 
4441
                be configured using CS0 and CS1 instead of CS2 and CS3.
 
4442
 
 
4443
- CONFIG_ETHER_ON_FEC[12]
 
4444
                Define to enable FEC[12] on a 8xx series processor.
 
4445
 
 
4446
- CONFIG_FEC[12]_PHY
 
4447
                Define to the hardcoded PHY address which corresponds
 
4448
                to the given FEC; i. e.
 
4449
                        #define CONFIG_FEC1_PHY 4
 
4450
                means that the PHY with address 4 is connected to FEC1
 
4451
 
 
4452
                When set to -1, means to probe for first available.
 
4453
 
 
4454
- CONFIG_FEC[12]_PHY_NORXERR
 
4455
                The PHY does not have a RXERR line (RMII only).
 
4456
                (so program the FEC to ignore it).
 
4457
 
 
4458
- CONFIG_RMII
 
4459
                Enable RMII mode for all FECs.
 
4460
                Note that this is a global option, we can't
 
4461
                have one FEC in standard MII mode and another in RMII mode.
 
4462
 
 
4463
- CONFIG_CRC32_VERIFY
 
4464
                Add a verify option to the crc32 command.
 
4465
                The syntax is:
 
4466
 
 
4467
                => crc32 -v <address> <count> <crc32>
 
4468
 
 
4469
                Where address/count indicate a memory area
 
4470
                and crc32 is the correct crc32 which the
 
4471
                area should have.
 
4472
 
 
4473
- CONFIG_LOOPW
 
4474
                Add the "loopw" memory command. This only takes effect if
 
4475
                the memory commands are activated globally (CONFIG_CMD_MEM).
 
4476
 
 
4477
- CONFIG_MX_CYCLIC
 
4478
                Add the "mdc" and "mwc" memory commands. These are cyclic
 
4479
                "md/mw" commands.
 
4480
                Examples:
 
4481
 
 
4482
                => mdc.b 10 4 500
 
4483
                This command will print 4 bytes (10,11,12,13) each 500 ms.
 
4484
 
 
4485
                => mwc.l 100 12345678 10
 
4486
                This command will write 12345678 to address 100 all 10 ms.
 
4487
 
 
4488
                This only takes effect if the memory commands are activated
 
4489
                globally (CONFIG_CMD_MEM).
 
4490
 
 
4491
- CONFIG_SKIP_LOWLEVEL_INIT
 
4492
                [ARM, NDS32, MIPS only] If this variable is defined, then certain
 
4493
                low level initializations (like setting up the memory
 
4494
                controller) are omitted and/or U-Boot does not
 
4495
                relocate itself into RAM.
 
4496
 
 
4497
                Normally this variable MUST NOT be defined. The only
 
4498
                exception is when U-Boot is loaded (to RAM) by some
 
4499
                other boot loader or by a debugger which performs
 
4500
                these initializations itself.
 
4501
 
 
4502
- CONFIG_SPL_BUILD
 
4503
                Modifies the behaviour of start.S when compiling a loader
 
4504
                that is executed before the actual U-Boot. E.g. when
 
4505
                compiling a NAND SPL.
 
4506
 
 
4507
- CONFIG_TPL_BUILD
 
4508
                Modifies the behaviour of start.S  when compiling a loader
 
4509
                that is executed after the SPL and before the actual U-Boot.
 
4510
                It is loaded by the SPL.
 
4511
 
 
4512
- CONFIG_SYS_MPC85XX_NO_RESETVEC
 
4513
                Only for 85xx systems. If this variable is specified, the section
 
4514
                .resetvec is not kept and the section .bootpg is placed in the
 
4515
                previous 4k of the .text section.
 
4516
 
 
4517
- CONFIG_ARCH_MAP_SYSMEM
 
4518
                Generally U-Boot (and in particular the md command) uses
 
4519
                effective address. It is therefore not necessary to regard
 
4520
                U-Boot address as virtual addresses that need to be translated
 
4521
                to physical addresses. However, sandbox requires this, since
 
4522
                it maintains its own little RAM buffer which contains all
 
4523
                addressable memory. This option causes some memory accesses
 
4524
                to be mapped through map_sysmem() / unmap_sysmem().
 
4525
 
 
4526
- CONFIG_USE_ARCH_MEMCPY
 
4527
  CONFIG_USE_ARCH_MEMSET
 
4528
                If these options are used a optimized version of memcpy/memset will
 
4529
                be used if available. These functions may be faster under some
 
4530
                conditions but may increase the binary size.
 
4531
 
 
4532
- CONFIG_X86_RESET_VECTOR
 
4533
                If defined, the x86 reset vector code is included. This is not
 
4534
                needed when U-Boot is running from Coreboot.
 
4535
 
 
4536
- CONFIG_SYS_MPUCLK
 
4537
                Defines the MPU clock speed (in MHz).
 
4538
 
 
4539
                NOTE : currently only supported on AM335x platforms.
 
4540
 
 
4541
- CONFIG_SPL_AM33XX_ENABLE_RTC32K_OSC:
 
4542
                Enables the RTC32K OSC on AM33xx based plattforms
 
4543
 
 
4544
- CONFIG_SYS_NAND_NO_SUBPAGE_WRITE
 
4545
                Option to disable subpage write in NAND driver
 
4546
                driver that uses this:
 
4547
                drivers/mtd/nand/davinci_nand.c
 
4548
 
 
4549
Freescale QE/FMAN Firmware Support:
 
4550
-----------------------------------
 
4551
 
 
4552
The Freescale QUICCEngine (QE) and Frame Manager (FMAN) both support the
 
4553
loading of "firmware", which is encoded in the QE firmware binary format.
 
4554
This firmware often needs to be loaded during U-Boot booting, so macros
 
4555
are used to identify the storage device (NOR flash, SPI, etc) and the address
 
4556
within that device.
 
4557
 
 
4558
- CONFIG_SYS_FMAN_FW_ADDR
 
4559
        The address in the storage device where the FMAN microcode is located.  The
 
4560
        meaning of this address depends on which CONFIG_SYS_QE_FW_IN_xxx macro
 
4561
        is also specified.
 
4562
 
 
4563
- CONFIG_SYS_QE_FW_ADDR
 
4564
        The address in the storage device where the QE microcode is located.  The
 
4565
        meaning of this address depends on which CONFIG_SYS_QE_FW_IN_xxx macro
 
4566
        is also specified.
 
4567
 
 
4568
- CONFIG_SYS_QE_FMAN_FW_LENGTH
 
4569
        The maximum possible size of the firmware.  The firmware binary format
 
4570
        has a field that specifies the actual size of the firmware, but it
 
4571
        might not be possible to read any part of the firmware unless some
 
4572
        local storage is allocated to hold the entire firmware first.
 
4573
 
 
4574
- CONFIG_SYS_QE_FMAN_FW_IN_NOR
 
4575
        Specifies that QE/FMAN firmware is located in NOR flash, mapped as
 
4576
        normal addressable memory via the LBC.  CONFIG_SYS_FMAN_FW_ADDR is the
 
4577
        virtual address in NOR flash.
 
4578
 
 
4579
- CONFIG_SYS_QE_FMAN_FW_IN_NAND
 
4580
        Specifies that QE/FMAN firmware is located in NAND flash.
 
4581
        CONFIG_SYS_FMAN_FW_ADDR is the offset within NAND flash.
 
4582
 
 
4583
- CONFIG_SYS_QE_FMAN_FW_IN_MMC
 
4584
        Specifies that QE/FMAN firmware is located on the primary SD/MMC
 
4585
        device.  CONFIG_SYS_FMAN_FW_ADDR is the byte offset on that device.
 
4586
 
 
4587
- CONFIG_SYS_QE_FMAN_FW_IN_SPIFLASH
 
4588
        Specifies that QE/FMAN firmware is located on the primary SPI
 
4589
        device.  CONFIG_SYS_FMAN_FW_ADDR is the byte offset on that device.
 
4590
 
 
4591
- CONFIG_SYS_QE_FMAN_FW_IN_REMOTE
 
4592
        Specifies that QE/FMAN firmware is located in the remote (master)
 
4593
        memory space.   CONFIG_SYS_FMAN_FW_ADDR is a virtual address which
 
4594
        can be mapped from slave TLB->slave LAW->slave SRIO or PCIE outbound
 
4595
        window->master inbound window->master LAW->the ucode address in
 
4596
        master's memory space.
 
4597
 
 
4598
Building the Software:
 
4599
======================
 
4600
 
 
4601
Building U-Boot has been tested in several native build environments
 
4602
and in many different cross environments. Of course we cannot support
 
4603
all possibly existing versions of cross development tools in all
 
4604
(potentially obsolete) versions. In case of tool chain problems we
 
4605
recommend to use the ELDK (see http://www.denx.de/wiki/DULG/ELDK)
 
4606
which is extensively used to build and test U-Boot.
 
4607
 
 
4608
If you are not using a native environment, it is assumed that you
 
4609
have GNU cross compiling tools available in your path. In this case,
 
4610
you must set the environment variable CROSS_COMPILE in your shell.
 
4611
Note that no changes to the Makefile or any other source files are
 
4612
necessary. For example using the ELDK on a 4xx CPU, please enter:
 
4613
 
 
4614
        $ CROSS_COMPILE=ppc_4xx-
 
4615
        $ export CROSS_COMPILE
 
4616
 
 
4617
Note: If you wish to generate Windows versions of the utilities in
 
4618
      the tools directory you can use the MinGW toolchain
 
4619
      (http://www.mingw.org).  Set your HOST tools to the MinGW
 
4620
      toolchain and execute 'make tools'.  For example:
 
4621
 
 
4622
       $ make HOSTCC=i586-mingw32msvc-gcc HOSTSTRIP=i586-mingw32msvc-strip tools
 
4623
 
 
4624
      Binaries such as tools/mkimage.exe will be created which can
 
4625
      be executed on computers running Windows.
 
4626
 
 
4627
U-Boot is intended to be simple to build. After installing the
 
4628
sources you must configure U-Boot for one specific board type. This
 
4629
is done by typing:
 
4630
 
 
4631
        make NAME_config
 
4632
 
 
4633
where "NAME_config" is the name of one of the existing configu-
 
4634
rations; see boards.cfg for supported names.
 
4635
 
 
4636
Note: for some board special configuration names may exist; check if
 
4637
      additional information is available from the board vendor; for
 
4638
      instance, the TQM823L systems are available without (standard)
 
4639
      or with LCD support. You can select such additional "features"
 
4640
      when choosing the configuration, i. e.
 
4641
 
 
4642
      make TQM823L_config
 
4643
        - will configure for a plain TQM823L, i. e. no LCD support
 
4644
 
 
4645
      make TQM823L_LCD_config
 
4646
        - will configure for a TQM823L with U-Boot console on LCD
 
4647
 
 
4648
      etc.
 
4649
 
 
4650
 
 
4651
Finally, type "make all", and you should get some working U-Boot
 
4652
images ready for download to / installation on your system:
 
4653
 
 
4654
- "u-boot.bin" is a raw binary image
 
4655
- "u-boot" is an image in ELF binary format
 
4656
- "u-boot.srec" is in Motorola S-Record format
 
4657
 
 
4658
By default the build is performed locally and the objects are saved
 
4659
in the source directory. One of the two methods can be used to change
 
4660
this behavior and build U-Boot to some external directory:
 
4661
 
 
4662
1. Add O= to the make command line invocations:
 
4663
 
 
4664
        make O=/tmp/build distclean
 
4665
        make O=/tmp/build NAME_config
 
4666
        make O=/tmp/build all
 
4667
 
 
4668
2. Set environment variable BUILD_DIR to point to the desired location:
 
4669
 
 
4670
        export BUILD_DIR=/tmp/build
 
4671
        make distclean
 
4672
        make NAME_config
 
4673
        make all
 
4674
 
 
4675
Note that the command line "O=" setting overrides the BUILD_DIR environment
 
4676
variable.
 
4677
 
 
4678
 
 
4679
Please be aware that the Makefiles assume you are using GNU make, so
 
4680
for instance on NetBSD you might need to use "gmake" instead of
 
4681
native "make".
 
4682
 
 
4683
 
 
4684
If the system board that you have is not listed, then you will need
 
4685
to port U-Boot to your hardware platform. To do this, follow these
 
4686
steps:
 
4687
 
 
4688
1.  Add a new configuration option for your board to the toplevel
 
4689
    "boards.cfg" file, using the existing entries as examples.
 
4690
    Follow the instructions there to keep the boards in order.
 
4691
2.  Create a new directory to hold your board specific code. Add any
 
4692
    files you need. In your board directory, you will need at least
 
4693
    the "Makefile", a "<board>.c", "flash.c" and "u-boot.lds".
 
4694
3.  Create a new configuration file "include/configs/<board>.h" for
 
4695
    your board
 
4696
3.  If you're porting U-Boot to a new CPU, then also create a new
 
4697
    directory to hold your CPU specific code. Add any files you need.
 
4698
4.  Run "make <board>_config" with your new name.
 
4699
5.  Type "make", and you should get a working "u-boot.srec" file
 
4700
    to be installed on your target system.
 
4701
6.  Debug and solve any problems that might arise.
 
4702
    [Of course, this last step is much harder than it sounds.]
 
4703
 
 
4704
 
 
4705
Testing of U-Boot Modifications, Ports to New Hardware, etc.:
 
4706
==============================================================
 
4707
 
 
4708
If you have modified U-Boot sources (for instance added a new board
 
4709
or support for new devices, a new CPU, etc.) you are expected to
 
4710
provide feedback to the other developers. The feedback normally takes
 
4711
the form of a "patch", i. e. a context diff against a certain (latest
 
4712
official or latest in the git repository) version of U-Boot sources.
 
4713
 
 
4714
But before you submit such a patch, please verify that your modifi-
 
4715
cation did not break existing code. At least make sure that *ALL* of
 
4716
the supported boards compile WITHOUT ANY compiler warnings. To do so,
 
4717
just run the "MAKEALL" script, which will configure and build U-Boot
 
4718
for ALL supported system. Be warned, this will take a while. You can
 
4719
select which (cross) compiler to use by passing a `CROSS_COMPILE'
 
4720
environment variable to the script, i. e. to use the ELDK cross tools
 
4721
you can type
 
4722
 
 
4723
        CROSS_COMPILE=ppc_8xx- MAKEALL
 
4724
 
 
4725
or to build on a native PowerPC system you can type
 
4726
 
 
4727
        CROSS_COMPILE=' ' MAKEALL
 
4728
 
 
4729
When using the MAKEALL script, the default behaviour is to build
 
4730
U-Boot in the source directory. This location can be changed by
 
4731
setting the BUILD_DIR environment variable. Also, for each target
 
4732
built, the MAKEALL script saves two log files (<target>.ERR and
 
4733
<target>.MAKEALL) in the <source dir>/LOG directory. This default
 
4734
location can be changed by setting the MAKEALL_LOGDIR environment
 
4735
variable. For example:
 
4736
 
 
4737
        export BUILD_DIR=/tmp/build
 
4738
        export MAKEALL_LOGDIR=/tmp/log
 
4739
        CROSS_COMPILE=ppc_8xx- MAKEALL
 
4740
 
 
4741
With the above settings build objects are saved in the /tmp/build,
 
4742
log files are saved in the /tmp/log and the source tree remains clean
 
4743
during the whole build process.
 
4744
 
 
4745
 
 
4746
See also "U-Boot Porting Guide" below.
 
4747
 
 
4748
 
 
4749
Monitor Commands - Overview:
 
4750
============================
 
4751
 
 
4752
go      - start application at address 'addr'
 
4753
run     - run commands in an environment variable
 
4754
bootm   - boot application image from memory
 
4755
bootp   - boot image via network using BootP/TFTP protocol
 
4756
bootz   - boot zImage from memory
 
4757
tftpboot- boot image via network using TFTP protocol
 
4758
               and env variables "ipaddr" and "serverip"
 
4759
               (and eventually "gatewayip")
 
4760
tftpput - upload a file via network using TFTP protocol
 
4761
rarpboot- boot image via network using RARP/TFTP protocol
 
4762
diskboot- boot from IDE devicebootd   - boot default, i.e., run 'bootcmd'
 
4763
loads   - load S-Record file over serial line
 
4764
loadb   - load binary file over serial line (kermit mode)
 
4765
md      - memory display
 
4766
mm      - memory modify (auto-incrementing)
 
4767
nm      - memory modify (constant address)
 
4768
mw      - memory write (fill)
 
4769
cp      - memory copy
 
4770
cmp     - memory compare
 
4771
crc32   - checksum calculation
 
4772
i2c     - I2C sub-system
 
4773
sspi    - SPI utility commands
 
4774
base    - print or set address offset
 
4775
printenv- print environment variables
 
4776
setenv  - set environment variables
 
4777
saveenv - save environment variables to persistent storage
 
4778
protect - enable or disable FLASH write protection
 
4779
erase   - erase FLASH memory
 
4780
flinfo  - print FLASH memory information
 
4781
nand    - NAND memory operations (see doc/README.nand)
 
4782
bdinfo  - print Board Info structure
 
4783
iminfo  - print header information for application image
 
4784
coninfo - print console devices and informations
 
4785
ide     - IDE sub-system
 
4786
loop    - infinite loop on address range
 
4787
loopw   - infinite write loop on address range
 
4788
mtest   - simple RAM test
 
4789
icache  - enable or disable instruction cache
 
4790
dcache  - enable or disable data cache
 
4791
reset   - Perform RESET of the CPU
 
4792
echo    - echo args to console
 
4793
version - print monitor version
 
4794
help    - print online help
 
4795
?       - alias for 'help'
 
4796
 
 
4797
 
 
4798
Monitor Commands - Detailed Description:
 
4799
========================================
 
4800
 
 
4801
TODO.
 
4802
 
 
4803
For now: just type "help <command>".
 
4804
 
 
4805
 
 
4806
Environment Variables:
 
4807
======================
 
4808
 
 
4809
U-Boot supports user configuration using Environment Variables which
 
4810
can be made persistent by saving to Flash memory.
 
4811
 
 
4812
Environment Variables are set using "setenv", printed using
 
4813
"printenv", and saved to Flash using "saveenv". Using "setenv"
 
4814
without a value can be used to delete a variable from the
 
4815
environment. As long as you don't save the environment you are
 
4816
working with an in-memory copy. In case the Flash area containing the
 
4817
environment is erased by accident, a default environment is provided.
 
4818
 
 
4819
Some configuration options can be set using Environment Variables.
 
4820
 
 
4821
List of environment variables (most likely not complete):
 
4822
 
 
4823
  baudrate      - see CONFIG_BAUDRATE
 
4824
 
 
4825
  bootdelay     - see CONFIG_BOOTDELAY
 
4826
 
 
4827
  bootcmd       - see CONFIG_BOOTCOMMAND
 
4828
 
 
4829
  bootargs      - Boot arguments when booting an RTOS image
 
4830
 
 
4831
  bootfile      - Name of the image to load with TFTP
 
4832
 
 
4833
  bootm_low     - Memory range available for image processing in the bootm
 
4834
                  command can be restricted. This variable is given as
 
4835
                  a hexadecimal number and defines lowest address allowed
 
4836
                  for use by the bootm command. See also "bootm_size"
 
4837
                  environment variable. Address defined by "bootm_low" is
 
4838
                  also the base of the initial memory mapping for the Linux
 
4839
                  kernel -- see the description of CONFIG_SYS_BOOTMAPSZ and
 
4840
                  bootm_mapsize.
 
4841
 
 
4842
  bootm_mapsize - Size of the initial memory mapping for the Linux kernel.
 
4843
                  This variable is given as a hexadecimal number and it
 
4844
                  defines the size of the memory region starting at base
 
4845
                  address bootm_low that is accessible by the Linux kernel
 
4846
                  during early boot.  If unset, CONFIG_SYS_BOOTMAPSZ is used
 
4847
                  as the default value if it is defined, and bootm_size is
 
4848
                  used otherwise.
 
4849
 
 
4850
  bootm_size    - Memory range available for image processing in the bootm
 
4851
                  command can be restricted. This variable is given as
 
4852
                  a hexadecimal number and defines the size of the region
 
4853
                  allowed for use by the bootm command. See also "bootm_low"
 
4854
                  environment variable.
 
4855
 
 
4856
  updatefile    - Location of the software update file on a TFTP server, used
 
4857
                  by the automatic software update feature. Please refer to
 
4858
                  documentation in doc/README.update for more details.
 
4859
 
 
4860
  autoload      - if set to "no" (any string beginning with 'n'),
 
4861
                  "bootp" will just load perform a lookup of the
 
4862
                  configuration from the BOOTP server, but not try to
 
4863
                  load any image using TFTP
 
4864
 
 
4865
  autostart     - if set to "yes", an image loaded using the "bootp",
 
4866
                  "rarpboot", "tftpboot" or "diskboot" commands will
 
4867
                  be automatically started (by internally calling
 
4868
                  "bootm")
 
4869
 
 
4870
                  If set to "no", a standalone image passed to the
 
4871
                  "bootm" command will be copied to the load address
 
4872
                  (and eventually uncompressed), but NOT be started.
 
4873
                  This can be used to load and uncompress arbitrary
 
4874
                  data.
 
4875
 
 
4876
  fdt_high      - if set this restricts the maximum address that the
 
4877
                  flattened device tree will be copied into upon boot.
 
4878
                  For example, if you have a system with 1 GB memory
 
4879
                  at physical address 0x10000000, while Linux kernel
 
4880
                  only recognizes the first 704 MB as low memory, you
 
4881
                  may need to set fdt_high as 0x3C000000 to have the
 
4882
                  device tree blob be copied to the maximum address
 
4883
                  of the 704 MB low memory, so that Linux kernel can
 
4884
                  access it during the boot procedure.
 
4885
 
 
4886
                  If this is set to the special value 0xFFFFFFFF then
 
4887
                  the fdt will not be copied at all on boot.  For this
 
4888
                  to work it must reside in writable memory, have
 
4889
                  sufficient padding on the end of it for u-boot to
 
4890
                  add the information it needs into it, and the memory
 
4891
                  must be accessible by the kernel.
 
4892
 
 
4893
  fdtcontroladdr- if set this is the address of the control flattened
 
4894
                  device tree used by U-Boot when CONFIG_OF_CONTROL is
 
4895
                  defined.
 
4896
 
 
4897
  i2cfast       - (PPC405GP|PPC405EP only)
 
4898
                  if set to 'y' configures Linux I2C driver for fast
 
4899
                  mode (400kHZ). This environment variable is used in
 
4900
                  initialization code. So, for changes to be effective
 
4901
                  it must be saved and board must be reset.
 
4902
 
 
4903
  initrd_high   - restrict positioning of initrd images:
 
4904
                  If this variable is not set, initrd images will be
 
4905
                  copied to the highest possible address in RAM; this
 
4906
                  is usually what you want since it allows for
 
4907
                  maximum initrd size. If for some reason you want to
 
4908
                  make sure that the initrd image is loaded below the
 
4909
                  CONFIG_SYS_BOOTMAPSZ limit, you can set this environment
 
4910
                  variable to a value of "no" or "off" or "0".
 
4911
                  Alternatively, you can set it to a maximum upper
 
4912
                  address to use (U-Boot will still check that it
 
4913
                  does not overwrite the U-Boot stack and data).
 
4914
 
 
4915
                  For instance, when you have a system with 16 MB
 
4916
                  RAM, and want to reserve 4 MB from use by Linux,
 
4917
                  you can do this by adding "mem=12M" to the value of
 
4918
                  the "bootargs" variable. However, now you must make
 
4919
                  sure that the initrd image is placed in the first
 
4920
                  12 MB as well - this can be done with
 
4921
 
 
4922
                  setenv initrd_high 00c00000
 
4923
 
 
4924
                  If you set initrd_high to 0xFFFFFFFF, this is an
 
4925
                  indication to U-Boot that all addresses are legal
 
4926
                  for the Linux kernel, including addresses in flash
 
4927
                  memory. In this case U-Boot will NOT COPY the
 
4928
                  ramdisk at all. This may be useful to reduce the
 
4929
                  boot time on your system, but requires that this
 
4930
                  feature is supported by your Linux kernel.
 
4931
 
 
4932
  ipaddr        - IP address; needed for tftpboot command
 
4933
 
 
4934
  loadaddr      - Default load address for commands like "bootp",
 
4935
                  "rarpboot", "tftpboot", "loadb" or "diskboot"
 
4936
 
 
4937
  loads_echo    - see CONFIG_LOADS_ECHO
 
4938
 
 
4939
  serverip      - TFTP server IP address; needed for tftpboot command
 
4940
 
 
4941
  bootretry     - see CONFIG_BOOT_RETRY_TIME
 
4942
 
 
4943
  bootdelaykey  - see CONFIG_AUTOBOOT_DELAY_STR
 
4944
 
 
4945
  bootstopkey   - see CONFIG_AUTOBOOT_STOP_STR
 
4946
 
 
4947
  ethprime      - controls which interface is used first.
 
4948
 
 
4949
  ethact        - controls which interface is currently active.
 
4950
                  For example you can do the following
 
4951
 
 
4952
                  => setenv ethact FEC
 
4953
                  => ping 192.168.0.1 # traffic sent on FEC
 
4954
                  => setenv ethact SCC
 
4955
                  => ping 10.0.0.1 # traffic sent on SCC
 
4956
 
 
4957
  ethrotate     - When set to "no" U-Boot does not go through all
 
4958
                  available network interfaces.
 
4959
                  It just stays at the currently selected interface.
 
4960
 
 
4961
  netretry      - When set to "no" each network operation will
 
4962
                  either succeed or fail without retrying.
 
4963
                  When set to "once" the network operation will
 
4964
                  fail when all the available network interfaces
 
4965
                  are tried once without success.
 
4966
                  Useful on scripts which control the retry operation
 
4967
                  themselves.
 
4968
 
 
4969
  npe_ucode     - set load address for the NPE microcode
 
4970
 
 
4971
  silent_linux  - If set then linux will be told to boot silently, by
 
4972
                  changing the console to be empty. If "yes" it will be
 
4973
                  made silent. If "no" it will not be made silent. If
 
4974
                  unset, then it will be made silent if the U-Boot console
 
4975
                  is silent.
 
4976
 
 
4977
  tftpsrcport   - If this is set, the value is used for TFTP's
 
4978
                  UDP source port.
 
4979
 
 
4980
  tftpdstport   - If this is set, the value is used for TFTP's UDP
 
4981
                  destination port instead of the Well Know Port 69.
 
4982
 
 
4983
  tftpblocksize - Block size to use for TFTP transfers; if not set,
 
4984
                  we use the TFTP server's default block size
 
4985
 
 
4986
  tftptimeout   - Retransmission timeout for TFTP packets (in milli-
 
4987
                  seconds, minimum value is 1000 = 1 second). Defines
 
4988
                  when a packet is considered to be lost so it has to
 
4989
                  be retransmitted. The default is 5000 = 5 seconds.
 
4990
                  Lowering this value may make downloads succeed
 
4991
                  faster in networks with high packet loss rates or
 
4992
                  with unreliable TFTP servers.
 
4993
 
 
4994
  vlan          - When set to a value < 4095 the traffic over
 
4995
                  Ethernet is encapsulated/received over 802.1q
 
4996
                  VLAN tagged frames.
 
4997
 
 
4998
The following image location variables contain the location of images
 
4999
used in booting. The "Image" column gives the role of the image and is
 
5000
not an environment variable name. The other columns are environment
 
5001
variable names. "File Name" gives the name of the file on a TFTP
 
5002
server, "RAM Address" gives the location in RAM the image will be
 
5003
loaded to, and "Flash Location" gives the image's address in NOR
 
5004
flash or offset in NAND flash.
 
5005
 
 
5006
*Note* - these variables don't have to be defined for all boards, some
 
5007
boards currenlty use other variables for these purposes, and some
 
5008
boards use these variables for other purposes.
 
5009
 
 
5010
Image               File Name        RAM Address       Flash Location
 
5011
-----               ---------        -----------       --------------
 
5012
u-boot              u-boot           u-boot_addr_r     u-boot_addr
 
5013
Linux kernel        bootfile         kernel_addr_r     kernel_addr
 
5014
device tree blob    fdtfile          fdt_addr_r        fdt_addr
 
5015
ramdisk             ramdiskfile      ramdisk_addr_r    ramdisk_addr
 
5016
 
 
5017
The following environment variables may be used and automatically
 
5018
updated by the network boot commands ("bootp" and "rarpboot"),
 
5019
depending the information provided by your boot server:
 
5020
 
 
5021
  bootfile      - see above
 
5022
  dnsip         - IP address of your Domain Name Server
 
5023
  dnsip2        - IP address of your secondary Domain Name Server
 
5024
  gatewayip     - IP address of the Gateway (Router) to use
 
5025
  hostname      - Target hostname
 
5026
  ipaddr        - see above
 
5027
  netmask       - Subnet Mask
 
5028
  rootpath      - Pathname of the root filesystem on the NFS server
 
5029
  serverip      - see above
 
5030
 
 
5031
 
 
5032
There are two special Environment Variables:
 
5033
 
 
5034
  serial#       - contains hardware identification information such
 
5035
                  as type string and/or serial number
 
5036
  ethaddr       - Ethernet address
 
5037
 
 
5038
These variables can be set only once (usually during manufacturing of
 
5039
the board). U-Boot refuses to delete or overwrite these variables
 
5040
once they have been set once.
 
5041
 
 
5042
 
 
5043
Further special Environment Variables:
 
5044
 
 
5045
  ver           - Contains the U-Boot version string as printed
 
5046
                  with the "version" command. This variable is
 
5047
                  readonly (see CONFIG_VERSION_VARIABLE).
 
5048
 
 
5049
 
 
5050
Please note that changes to some configuration parameters may take
 
5051
only effect after the next boot (yes, that's just like Windoze :-).
 
5052
 
 
5053
 
 
5054
Callback functions for environment variables:
 
5055
---------------------------------------------
 
5056
 
 
5057
For some environment variables, the behavior of u-boot needs to change
 
5058
when their values are changed.  This functionailty allows functions to
 
5059
be associated with arbitrary variables.  On creation, overwrite, or
 
5060
deletion, the callback will provide the opportunity for some side
 
5061
effect to happen or for the change to be rejected.
 
5062
 
 
5063
The callbacks are named and associated with a function using the
 
5064
U_BOOT_ENV_CALLBACK macro in your board or driver code.
 
5065
 
 
5066
These callbacks are associated with variables in one of two ways.  The
 
5067
static list can be added to by defining CONFIG_ENV_CALLBACK_LIST_STATIC
 
5068
in the board configuration to a string that defines a list of
 
5069
associations.  The list must be in the following format:
 
5070
 
 
5071
        entry = variable_name[:callback_name]
 
5072
        list = entry[,list]
 
5073
 
 
5074
If the callback name is not specified, then the callback is deleted.
 
5075
Spaces are also allowed anywhere in the list.
 
5076
 
 
5077
Callbacks can also be associated by defining the ".callbacks" variable
 
5078
with the same list format above.  Any association in ".callbacks" will
 
5079
override any association in the static list. You can define
 
5080
CONFIG_ENV_CALLBACK_LIST_DEFAULT to a list (string) to define the
 
5081
".callbacks" envirnoment variable in the default or embedded environment.
 
5082
 
 
5083
 
 
5084
Command Line Parsing:
 
5085
=====================
 
5086
 
 
5087
There are two different command line parsers available with U-Boot:
 
5088
the old "simple" one, and the much more powerful "hush" shell:
 
5089
 
 
5090
Old, simple command line parser:
 
5091
--------------------------------
 
5092
 
 
5093
- supports environment variables (through setenv / saveenv commands)
 
5094
- several commands on one line, separated by ';'
 
5095
- variable substitution using "... ${name} ..." syntax
 
5096
- special characters ('$', ';') can be escaped by prefixing with '\',
 
5097
  for example:
 
5098
        setenv bootcmd bootm \${address}
 
5099
- You can also escape text by enclosing in single apostrophes, for example:
 
5100
        setenv addip 'setenv bootargs $bootargs ip=$ipaddr:$serverip:$gatewayip:$netmask:$hostname::off'
 
5101
 
 
5102
Hush shell:
 
5103
-----------
 
5104
 
 
5105
- similar to Bourne shell, with control structures like
 
5106
  if...then...else...fi, for...do...done; while...do...done,
 
5107
  until...do...done, ...
 
5108
- supports environment ("global") variables (through setenv / saveenv
 
5109
  commands) and local shell variables (through standard shell syntax
 
5110
  "name=value"); only environment variables can be used with "run"
 
5111
  command
 
5112
 
 
5113
General rules:
 
5114
--------------
 
5115
 
 
5116
(1) If a command line (or an environment variable executed by a "run"
 
5117
    command) contains several commands separated by semicolon, and
 
5118
    one of these commands fails, then the remaining commands will be
 
5119
    executed anyway.
 
5120
 
 
5121
(2) If you execute several variables with one call to run (i. e.
 
5122
    calling run with a list of variables as arguments), any failing
 
5123
    command will cause "run" to terminate, i. e. the remaining
 
5124
    variables are not executed.
 
5125
 
 
5126
Note for Redundant Ethernet Interfaces:
 
5127
=======================================
 
5128
 
 
5129
Some boards come with redundant Ethernet interfaces; U-Boot supports
 
5130
such configurations and is capable of automatic selection of a
 
5131
"working" interface when needed. MAC assignment works as follows:
 
5132
 
 
5133
Network interfaces are numbered eth0, eth1, eth2, ... Corresponding
 
5134
MAC addresses can be stored in the environment as "ethaddr" (=>eth0),
 
5135
"eth1addr" (=>eth1), "eth2addr", ...
 
5136
 
 
5137
If the network interface stores some valid MAC address (for instance
 
5138
in SROM), this is used as default address if there is NO correspon-
 
5139
ding setting in the environment; if the corresponding environment
 
5140
variable is set, this overrides the settings in the card; that means:
 
5141
 
 
5142
o If the SROM has a valid MAC address, and there is no address in the
 
5143
  environment, the SROM's address is used.
 
5144
 
 
5145
o If there is no valid address in the SROM, and a definition in the
 
5146
  environment exists, then the value from the environment variable is
 
5147
  used.
 
5148
 
 
5149
o If both the SROM and the environment contain a MAC address, and
 
5150
  both addresses are the same, this MAC address is used.
 
5151
 
 
5152
o If both the SROM and the environment contain a MAC address, and the
 
5153
  addresses differ, the value from the environment is used and a
 
5154
  warning is printed.
 
5155
 
 
5156
o If neither SROM nor the environment contain a MAC address, an error
 
5157
  is raised.
 
5158
 
 
5159
If Ethernet drivers implement the 'write_hwaddr' function, valid MAC addresses
 
5160
will be programmed into hardware as part of the initialization process.  This
 
5161
may be skipped by setting the appropriate 'ethmacskip' environment variable.
 
5162
The naming convention is as follows:
 
5163
"ethmacskip" (=>eth0), "eth1macskip" (=>eth1) etc.
 
5164
 
 
5165
Image Formats:
 
5166
==============
 
5167
 
 
5168
U-Boot is capable of booting (and performing other auxiliary operations on)
 
5169
images in two formats:
 
5170
 
 
5171
New uImage format (FIT)
 
5172
-----------------------
 
5173
 
 
5174
Flexible and powerful format based on Flattened Image Tree -- FIT (similar
 
5175
to Flattened Device Tree). It allows the use of images with multiple
 
5176
components (several kernels, ramdisks, etc.), with contents protected by
 
5177
SHA1, MD5 or CRC32. More details are found in the doc/uImage.FIT directory.
 
5178
 
 
5179
 
 
5180
Old uImage format
 
5181
-----------------
 
5182
 
 
5183
Old image format is based on binary files which can be basically anything,
 
5184
preceded by a special header; see the definitions in include/image.h for
 
5185
details; basically, the header defines the following image properties:
 
5186
 
 
5187
* Target Operating System (Provisions for OpenBSD, NetBSD, FreeBSD,
 
5188
  4.4BSD, Linux, SVR4, Esix, Solaris, Irix, SCO, Dell, NCR, VxWorks,
 
5189
  LynxOS, pSOS, QNX, RTEMS, INTEGRITY;
 
5190
  Currently supported: Linux, NetBSD, VxWorks, QNX, RTEMS, LynxOS,
 
5191
  INTEGRITY).
 
5192
* Target CPU Architecture (Provisions for Alpha, ARM, AVR32, Intel x86,
 
5193
  IA64, MIPS, NDS32, Nios II, PowerPC, IBM S390, SuperH, Sparc, Sparc 64 Bit;
 
5194
  Currently supported: ARM, AVR32, Intel x86, MIPS, NDS32, Nios II, PowerPC).
 
5195
* Compression Type (uncompressed, gzip, bzip2)
 
5196
* Load Address
 
5197
* Entry Point
 
5198
* Image Name
 
5199
* Image Timestamp
 
5200
 
 
5201
The header is marked by a special Magic Number, and both the header
 
5202
and the data portions of the image are secured against corruption by
 
5203
CRC32 checksums.
 
5204
 
 
5205
 
 
5206
Linux Support:
 
5207
==============
 
5208
 
 
5209
Although U-Boot should support any OS or standalone application
 
5210
easily, the main focus has always been on Linux during the design of
 
5211
U-Boot.
 
5212
 
 
5213
U-Boot includes many features that so far have been part of some
 
5214
special "boot loader" code within the Linux kernel. Also, any
 
5215
"initrd" images to be used are no longer part of one big Linux image;
 
5216
instead, kernel and "initrd" are separate images. This implementation
 
5217
serves several purposes:
 
5218
 
 
5219
- the same features can be used for other OS or standalone
 
5220
  applications (for instance: using compressed images to reduce the
 
5221
  Flash memory footprint)
 
5222
 
 
5223
- it becomes much easier to port new Linux kernel versions because
 
5224
  lots of low-level, hardware dependent stuff are done by U-Boot
 
5225
 
 
5226
- the same Linux kernel image can now be used with different "initrd"
 
5227
  images; of course this also means that different kernel images can
 
5228
  be run with the same "initrd". This makes testing easier (you don't
 
5229
  have to build a new "zImage.initrd" Linux image when you just
 
5230
  change a file in your "initrd"). Also, a field-upgrade of the
 
5231
  software is easier now.
 
5232
 
 
5233
 
 
5234
Linux HOWTO:
 
5235
============
 
5236
 
 
5237
Porting Linux to U-Boot based systems:
 
5238
---------------------------------------
 
5239
 
 
5240
U-Boot cannot save you from doing all the necessary modifications to
 
5241
configure the Linux device drivers for use with your target hardware
 
5242
(no, we don't intend to provide a full virtual machine interface to
 
5243
Linux :-).
 
5244
 
 
5245
But now you can ignore ALL boot loader code (in arch/powerpc/mbxboot).
 
5246
 
 
5247
Just make sure your machine specific header file (for instance
 
5248
include/asm-ppc/tqm8xx.h) includes the same definition of the Board
 
5249
Information structure as we define in include/asm-<arch>/u-boot.h,
 
5250
and make sure that your definition of IMAP_ADDR uses the same value
 
5251
as your U-Boot configuration in CONFIG_SYS_IMMR.
 
5252
 
 
5253
 
 
5254
Configuring the Linux kernel:
 
5255
-----------------------------
 
5256
 
 
5257
No specific requirements for U-Boot. Make sure you have some root
 
5258
device (initial ramdisk, NFS) for your target system.
 
5259
 
 
5260
 
 
5261
Building a Linux Image:
 
5262
-----------------------
 
5263
 
 
5264
With U-Boot, "normal" build targets like "zImage" or "bzImage" are
 
5265
not used. If you use recent kernel source, a new build target
 
5266
"uImage" will exist which automatically builds an image usable by
 
5267
U-Boot. Most older kernels also have support for a "pImage" target,
 
5268
which was introduced for our predecessor project PPCBoot and uses a
 
5269
100% compatible format.
 
5270
 
 
5271
Example:
 
5272
 
 
5273
        make TQM850L_config
 
5274
        make oldconfig
 
5275
        make dep
 
5276
        make uImage
 
5277
 
 
5278
The "uImage" build target uses a special tool (in 'tools/mkimage') to
 
5279
encapsulate a compressed Linux kernel image with header  information,
 
5280
CRC32 checksum etc. for use with U-Boot. This is what we are doing:
 
5281
 
 
5282
* build a standard "vmlinux" kernel image (in ELF binary format):
 
5283
 
 
5284
* convert the kernel into a raw binary image:
 
5285
 
 
5286
        ${CROSS_COMPILE}-objcopy -O binary \
 
5287
                                 -R .note -R .comment \
 
5288
                                 -S vmlinux linux.bin
 
5289
 
 
5290
* compress the binary image:
 
5291
 
 
5292
        gzip -9 linux.bin
 
5293
 
 
5294
* package compressed binary image for U-Boot:
 
5295
 
 
5296
        mkimage -A ppc -O linux -T kernel -C gzip \
 
5297
                -a 0 -e 0 -n "Linux Kernel Image" \
 
5298
                -d linux.bin.gz uImage
 
5299
 
 
5300
 
 
5301
The "mkimage" tool can also be used to create ramdisk images for use
 
5302
with U-Boot, either separated from the Linux kernel image, or
 
5303
combined into one file. "mkimage" encapsulates the images with a 64
 
5304
byte header containing information about target architecture,
 
5305
operating system, image type, compression method, entry points, time
 
5306
stamp, CRC32 checksums, etc.
 
5307
 
 
5308
"mkimage" can be called in two ways: to verify existing images and
 
5309
print the header information, or to build new images.
 
5310
 
 
5311
In the first form (with "-l" option) mkimage lists the information
 
5312
contained in the header of an existing U-Boot image; this includes
 
5313
checksum verification:
 
5314
 
 
5315
        tools/mkimage -l image
 
5316
          -l ==> list image header information
 
5317
 
 
5318
The second form (with "-d" option) is used to build a U-Boot image
 
5319
from a "data file" which is used as image payload:
 
5320
 
 
5321
        tools/mkimage -A arch -O os -T type -C comp -a addr -e ep \
 
5322
                      -n name -d data_file image
 
5323
          -A ==> set architecture to 'arch'
 
5324
          -O ==> set operating system to 'os'
 
5325
          -T ==> set image type to 'type'
 
5326
          -C ==> set compression type 'comp'
 
5327
          -a ==> set load address to 'addr' (hex)
 
5328
          -e ==> set entry point to 'ep' (hex)
 
5329
          -n ==> set image name to 'name'
 
5330
          -d ==> use image data from 'datafile'
 
5331
 
 
5332
Right now, all Linux kernels for PowerPC systems use the same load
 
5333
address (0x00000000), but the entry point address depends on the
 
5334
kernel version:
 
5335
 
 
5336
- 2.2.x kernels have the entry point at 0x0000000C,
 
5337
- 2.3.x and later kernels have the entry point at 0x00000000.
 
5338
 
 
5339
So a typical call to build a U-Boot image would read:
 
5340
 
 
5341
        -> tools/mkimage -n '2.4.4 kernel for TQM850L' \
 
5342
        > -A ppc -O linux -T kernel -C gzip -a 0 -e 0 \
 
5343
        > -d /opt/elsk/ppc_8xx/usr/src/linux-2.4.4/arch/powerpc/coffboot/vmlinux.gz \
 
5344
        > examples/uImage.TQM850L
 
5345
        Image Name:   2.4.4 kernel for TQM850L
 
5346
        Created:      Wed Jul 19 02:34:59 2000
 
5347
        Image Type:   PowerPC Linux Kernel Image (gzip compressed)
 
5348
        Data Size:    335725 Bytes = 327.86 kB = 0.32 MB
 
5349
        Load Address: 0x00000000
 
5350
        Entry Point:  0x00000000
 
5351
 
 
5352
To verify the contents of the image (or check for corruption):
 
5353
 
 
5354
        -> tools/mkimage -l examples/uImage.TQM850L
 
5355
        Image Name:   2.4.4 kernel for TQM850L
 
5356
        Created:      Wed Jul 19 02:34:59 2000
 
5357
        Image Type:   PowerPC Linux Kernel Image (gzip compressed)
 
5358
        Data Size:    335725 Bytes = 327.86 kB = 0.32 MB
 
5359
        Load Address: 0x00000000
 
5360
        Entry Point:  0x00000000
 
5361
 
 
5362
NOTE: for embedded systems where boot time is critical you can trade
 
5363
speed for memory and install an UNCOMPRESSED image instead: this
 
5364
needs more space in Flash, but boots much faster since it does not
 
5365
need to be uncompressed:
 
5366
 
 
5367
        -> gunzip /opt/elsk/ppc_8xx/usr/src/linux-2.4.4/arch/powerpc/coffboot/vmlinux.gz
 
5368
        -> tools/mkimage -n '2.4.4 kernel for TQM850L' \
 
5369
        > -A ppc -O linux -T kernel -C none -a 0 -e 0 \
 
5370
        > -d /opt/elsk/ppc_8xx/usr/src/linux-2.4.4/arch/powerpc/coffboot/vmlinux \
 
5371
        > examples/uImage.TQM850L-uncompressed
 
5372
        Image Name:   2.4.4 kernel for TQM850L
 
5373
        Created:      Wed Jul 19 02:34:59 2000
 
5374
        Image Type:   PowerPC Linux Kernel Image (uncompressed)
 
5375
        Data Size:    792160 Bytes = 773.59 kB = 0.76 MB
 
5376
        Load Address: 0x00000000
 
5377
        Entry Point:  0x00000000
 
5378
 
 
5379
 
 
5380
Similar you can build U-Boot images from a 'ramdisk.image.gz' file
 
5381
when your kernel is intended to use an initial ramdisk:
 
5382
 
 
5383
        -> tools/mkimage -n 'Simple Ramdisk Image' \
 
5384
        > -A ppc -O linux -T ramdisk -C gzip \
 
5385
        > -d /LinuxPPC/images/SIMPLE-ramdisk.image.gz examples/simple-initrd
 
5386
        Image Name:   Simple Ramdisk Image
 
5387
        Created:      Wed Jan 12 14:01:50 2000
 
5388
        Image Type:   PowerPC Linux RAMDisk Image (gzip compressed)
 
5389
        Data Size:    566530 Bytes = 553.25 kB = 0.54 MB
 
5390
        Load Address: 0x00000000
 
5391
        Entry Point:  0x00000000
 
5392
 
 
5393
The "dumpimage" is a tool to disassemble images built by mkimage. Its "-i"
 
5394
option performs the converse operation of the mkimage's second form (the "-d"
 
5395
option). Given an image built by mkimage, the dumpimage extracts a "data file"
 
5396
from the image:
 
5397
 
 
5398
        tools/dumpimage -i image -p position data_file
 
5399
          -i ==> extract from the 'image' a specific 'data_file', \
 
5400
           indexed by 'position'
 
5401
 
 
5402
 
 
5403
Installing a Linux Image:
 
5404
-------------------------
 
5405
 
 
5406
To downloading a U-Boot image over the serial (console) interface,
 
5407
you must convert the image to S-Record format:
 
5408
 
 
5409
        objcopy -I binary -O srec examples/image examples/image.srec
 
5410
 
 
5411
The 'objcopy' does not understand the information in the U-Boot
 
5412
image header, so the resulting S-Record file will be relative to
 
5413
address 0x00000000. To load it to a given address, you need to
 
5414
specify the target address as 'offset' parameter with the 'loads'
 
5415
command.
 
5416
 
 
5417
Example: install the image to address 0x40100000 (which on the
 
5418
TQM8xxL is in the first Flash bank):
 
5419
 
 
5420
        => erase 40100000 401FFFFF
 
5421
 
 
5422
        .......... done
 
5423
        Erased 8 sectors
 
5424
 
 
5425
        => loads 40100000
 
5426
        ## Ready for S-Record download ...
 
5427
        ~>examples/image.srec
 
5428
        1 2 3 4 5 6 7 8 9 10 11 12 13 ...
 
5429
        ...
 
5430
        15989 15990 15991 15992
 
5431
        [file transfer complete]
 
5432
        [connected]
 
5433
        ## Start Addr = 0x00000000
 
5434
 
 
5435
 
 
5436
You can check the success of the download using the 'iminfo' command;
 
5437
this includes a checksum verification so you can be sure no data
 
5438
corruption happened:
 
5439
 
 
5440
        => imi 40100000
 
5441
 
 
5442
        ## Checking Image at 40100000 ...
 
5443
           Image Name:   2.2.13 for initrd on TQM850L
 
5444
           Image Type:   PowerPC Linux Kernel Image (gzip compressed)
 
5445
           Data Size:    335725 Bytes = 327 kB = 0 MB
 
5446
           Load Address: 00000000
 
5447
           Entry Point:  0000000c
 
5448
           Verifying Checksum ... OK
 
5449
 
 
5450
 
 
5451
Boot Linux:
 
5452
-----------
 
5453
 
 
5454
The "bootm" command is used to boot an application that is stored in
 
5455
memory (RAM or Flash). In case of a Linux kernel image, the contents
 
5456
of the "bootargs" environment variable is passed to the kernel as
 
5457
parameters. You can check and modify this variable using the
 
5458
"printenv" and "setenv" commands:
 
5459
 
 
5460
 
 
5461
        => printenv bootargs
 
5462
        bootargs=root=/dev/ram
 
5463
 
 
5464
        => setenv bootargs root=/dev/nfs rw nfsroot=10.0.0.2:/LinuxPPC nfsaddrs=10.0.0.99:10.0.0.2
 
5465
 
 
5466
        => printenv bootargs
 
5467
        bootargs=root=/dev/nfs rw nfsroot=10.0.0.2:/LinuxPPC nfsaddrs=10.0.0.99:10.0.0.2
 
5468
 
 
5469
        => bootm 40020000
 
5470
        ## Booting Linux kernel at 40020000 ...
 
5471
           Image Name:   2.2.13 for NFS on TQM850L
 
5472
           Image Type:   PowerPC Linux Kernel Image (gzip compressed)
 
5473
           Data Size:    381681 Bytes = 372 kB = 0 MB
 
5474
           Load Address: 00000000
 
5475
           Entry Point:  0000000c
 
5476
           Verifying Checksum ... OK
 
5477
           Uncompressing Kernel Image ... OK
 
5478
        Linux version 2.2.13 (wd@denx.local.net) (gcc version 2.95.2 19991024 (release)) #1 Wed Jul 19 02:35:17 MEST 2000
 
5479
        Boot arguments: root=/dev/nfs rw nfsroot=10.0.0.2:/LinuxPPC nfsaddrs=10.0.0.99:10.0.0.2
 
5480
        time_init: decrementer frequency = 187500000/60
 
5481
        Calibrating delay loop... 49.77 BogoMIPS
 
5482
        Memory: 15208k available (700k kernel code, 444k data, 32k init) [c0000000,c1000000]
 
5483
        ...
 
5484
 
 
5485
If you want to boot a Linux kernel with initial RAM disk, you pass
 
5486
the memory addresses of both the kernel and the initrd image (PPBCOOT
 
5487
format!) to the "bootm" command:
 
5488
 
 
5489
        => imi 40100000 40200000
 
5490
 
 
5491
        ## Checking Image at 40100000 ...
 
5492
           Image Name:   2.2.13 for initrd on TQM850L
 
5493
           Image Type:   PowerPC Linux Kernel Image (gzip compressed)
 
5494
           Data Size:    335725 Bytes = 327 kB = 0 MB
 
5495
           Load Address: 00000000
 
5496
           Entry Point:  0000000c
 
5497
           Verifying Checksum ... OK
 
5498
 
 
5499
        ## Checking Image at 40200000 ...
 
5500
           Image Name:   Simple Ramdisk Image
 
5501
           Image Type:   PowerPC Linux RAMDisk Image (gzip compressed)
 
5502
           Data Size:    566530 Bytes = 553 kB = 0 MB
 
5503
           Load Address: 00000000
 
5504
           Entry Point:  00000000
 
5505
           Verifying Checksum ... OK
 
5506
 
 
5507
        => bootm 40100000 40200000
 
5508
        ## Booting Linux kernel at 40100000 ...
 
5509
           Image Name:   2.2.13 for initrd on TQM850L
 
5510
           Image Type:   PowerPC Linux Kernel Image (gzip compressed)
 
5511
           Data Size:    335725 Bytes = 327 kB = 0 MB
 
5512
           Load Address: 00000000
 
5513
           Entry Point:  0000000c
 
5514
           Verifying Checksum ... OK
 
5515
           Uncompressing Kernel Image ... OK
 
5516
        ## Loading RAMDisk Image at 40200000 ...
 
5517
           Image Name:   Simple Ramdisk Image
 
5518
           Image Type:   PowerPC Linux RAMDisk Image (gzip compressed)
 
5519
           Data Size:    566530 Bytes = 553 kB = 0 MB
 
5520
           Load Address: 00000000
 
5521
           Entry Point:  00000000
 
5522
           Verifying Checksum ... OK
 
5523
           Loading Ramdisk ... OK
 
5524
        Linux version 2.2.13 (wd@denx.local.net) (gcc version 2.95.2 19991024 (release)) #1 Wed Jul 19 02:32:08 MEST 2000
 
5525
        Boot arguments: root=/dev/ram
 
5526
        time_init: decrementer frequency = 187500000/60
 
5527
        Calibrating delay loop... 49.77 BogoMIPS
 
5528
        ...
 
5529
        RAMDISK: Compressed image found at block 0
 
5530
        VFS: Mounted root (ext2 filesystem).
 
5531
 
 
5532
        bash#
 
5533
 
 
5534
Boot Linux and pass a flat device tree:
 
5535
-----------
 
5536
 
 
5537
First, U-Boot must be compiled with the appropriate defines. See the section
 
5538
titled "Linux Kernel Interface" above for a more in depth explanation. The
 
5539
following is an example of how to start a kernel and pass an updated
 
5540
flat device tree:
 
5541
 
 
5542
=> print oftaddr
 
5543
oftaddr=0x300000
 
5544
=> print oft
 
5545
oft=oftrees/mpc8540ads.dtb
 
5546
=> tftp $oftaddr $oft
 
5547
Speed: 1000, full duplex
 
5548
Using TSEC0 device
 
5549
TFTP from server 192.168.1.1; our IP address is 192.168.1.101
 
5550
Filename 'oftrees/mpc8540ads.dtb'.
 
5551
Load address: 0x300000
 
5552
Loading: #
 
5553
done
 
5554
Bytes transferred = 4106 (100a hex)
 
5555
=> tftp $loadaddr $bootfile
 
5556
Speed: 1000, full duplex
 
5557
Using TSEC0 device
 
5558
TFTP from server 192.168.1.1; our IP address is 192.168.1.2
 
5559
Filename 'uImage'.
 
5560
Load address: 0x200000
 
5561
Loading:############
 
5562
done
 
5563
Bytes transferred = 1029407 (fb51f hex)
 
5564
=> print loadaddr
 
5565
loadaddr=200000
 
5566
=> print oftaddr
 
5567
oftaddr=0x300000
 
5568
=> bootm $loadaddr - $oftaddr
 
5569
## Booting image at 00200000 ...
 
5570
   Image Name:   Linux-2.6.17-dirty
 
5571
   Image Type:   PowerPC Linux Kernel Image (gzip compressed)
 
5572
   Data Size:    1029343 Bytes = 1005.2 kB
 
5573
   Load Address: 00000000
 
5574
   Entry Point:  00000000
 
5575
   Verifying Checksum ... OK
 
5576
   Uncompressing Kernel Image ... OK
 
5577
Booting using flat device tree at 0x300000
 
5578
Using MPC85xx ADS machine description
 
5579
Memory CAM mapping: CAM0=256Mb, CAM1=256Mb, CAM2=0Mb residual: 0Mb
 
5580
[snip]
 
5581
 
 
5582
 
 
5583
More About U-Boot Image Types:
 
5584
------------------------------
 
5585
 
 
5586
U-Boot supports the following image types:
 
5587
 
 
5588
   "Standalone Programs" are directly runnable in the environment
 
5589
        provided by U-Boot; it is expected that (if they behave
 
5590
        well) you can continue to work in U-Boot after return from
 
5591
        the Standalone Program.
 
5592
   "OS Kernel Images" are usually images of some Embedded OS which
 
5593
        will take over control completely. Usually these programs
 
5594
        will install their own set of exception handlers, device
 
5595
        drivers, set up the MMU, etc. - this means, that you cannot
 
5596
        expect to re-enter U-Boot except by resetting the CPU.
 
5597
   "RAMDisk Images" are more or less just data blocks, and their
 
5598
        parameters (address, size) are passed to an OS kernel that is
 
5599
        being started.
 
5600
   "Multi-File Images" contain several images, typically an OS
 
5601
        (Linux) kernel image and one or more data images like
 
5602
        RAMDisks. This construct is useful for instance when you want
 
5603
        to boot over the network using BOOTP etc., where the boot
 
5604
        server provides just a single image file, but you want to get
 
5605
        for instance an OS kernel and a RAMDisk image.
 
5606
 
 
5607
        "Multi-File Images" start with a list of image sizes, each
 
5608
        image size (in bytes) specified by an "uint32_t" in network
 
5609
        byte order. This list is terminated by an "(uint32_t)0".
 
5610
        Immediately after the terminating 0 follow the images, one by
 
5611
        one, all aligned on "uint32_t" boundaries (size rounded up to
 
5612
        a multiple of 4 bytes).
 
5613
 
 
5614
   "Firmware Images" are binary images containing firmware (like
 
5615
        U-Boot or FPGA images) which usually will be programmed to
 
5616
        flash memory.
 
5617
 
 
5618
   "Script files" are command sequences that will be executed by
 
5619
        U-Boot's command interpreter; this feature is especially
 
5620
        useful when you configure U-Boot to use a real shell (hush)
 
5621
        as command interpreter.
 
5622
 
 
5623
Booting the Linux zImage:
 
5624
-------------------------
 
5625
 
 
5626
On some platforms, it's possible to boot Linux zImage. This is done
 
5627
using the "bootz" command. The syntax of "bootz" command is the same
 
5628
as the syntax of "bootm" command.
 
5629
 
 
5630
Note, defining the CONFIG_SUPPORT_RAW_INITRD allows user to supply
 
5631
kernel with raw initrd images. The syntax is slightly different, the
 
5632
address of the initrd must be augmented by it's size, in the following
 
5633
format: "<initrd addres>:<initrd size>".
 
5634
 
 
5635
 
 
5636
Standalone HOWTO:
 
5637
=================
 
5638
 
 
5639
One of the features of U-Boot is that you can dynamically load and
 
5640
run "standalone" applications, which can use some resources of
 
5641
U-Boot like console I/O functions or interrupt services.
 
5642
 
 
5643
Two simple examples are included with the sources:
 
5644
 
 
5645
"Hello World" Demo:
 
5646
-------------------
 
5647
 
 
5648
'examples/hello_world.c' contains a small "Hello World" Demo
 
5649
application; it is automatically compiled when you build U-Boot.
 
5650
It's configured to run at address 0x00040004, so you can play with it
 
5651
like that:
 
5652
 
 
5653
        => loads
 
5654
        ## Ready for S-Record download ...
 
5655
        ~>examples/hello_world.srec
 
5656
        1 2 3 4 5 6 7 8 9 10 11 ...
 
5657
        [file transfer complete]
 
5658
        [connected]
 
5659
        ## Start Addr = 0x00040004
 
5660
 
 
5661
        => go 40004 Hello World! This is a test.
 
5662
        ## Starting application at 0x00040004 ...
 
5663
        Hello World
 
5664
        argc = 7
 
5665
        argv[0] = "40004"
 
5666
        argv[1] = "Hello"
 
5667
        argv[2] = "World!"
 
5668
        argv[3] = "This"
 
5669
        argv[4] = "is"
 
5670
        argv[5] = "a"
 
5671
        argv[6] = "test."
 
5672
        argv[7] = "<NULL>"
 
5673
        Hit any key to exit ...
 
5674
 
 
5675
        ## Application terminated, rc = 0x0
 
5676
 
 
5677
Another example, which demonstrates how to register a CPM interrupt
 
5678
handler with the U-Boot code, can be found in 'examples/timer.c'.
 
5679
Here, a CPM timer is set up to generate an interrupt every second.
 
5680
The interrupt service routine is trivial, just printing a '.'
 
5681
character, but this is just a demo program. The application can be
 
5682
controlled by the following keys:
 
5683
 
 
5684
        ? - print current values og the CPM Timer registers
 
5685
        b - enable interrupts and start timer
 
5686
        e - stop timer and disable interrupts
 
5687
        q - quit application
 
5688
 
 
5689
        => loads
 
5690
        ## Ready for S-Record download ...
 
5691
        ~>examples/timer.srec
 
5692
        1 2 3 4 5 6 7 8 9 10 11 ...
 
5693
        [file transfer complete]
 
5694
        [connected]
 
5695
        ## Start Addr = 0x00040004
 
5696
 
 
5697
        => go 40004
 
5698
        ## Starting application at 0x00040004 ...
 
5699
        TIMERS=0xfff00980
 
5700
        Using timer 1
 
5701
          tgcr @ 0xfff00980, tmr @ 0xfff00990, trr @ 0xfff00994, tcr @ 0xfff00998, tcn @ 0xfff0099c, ter @ 0xfff009b0
 
5702
 
 
5703
Hit 'b':
 
5704
        [q, b, e, ?] Set interval 1000000 us
 
5705
        Enabling timer
 
5706
Hit '?':
 
5707
        [q, b, e, ?] ........
 
5708
        tgcr=0x1, tmr=0xff1c, trr=0x3d09, tcr=0x0, tcn=0xef6, ter=0x0
 
5709
Hit '?':
 
5710
        [q, b, e, ?] .
 
5711
        tgcr=0x1, tmr=0xff1c, trr=0x3d09, tcr=0x0, tcn=0x2ad4, ter=0x0
 
5712
Hit '?':
 
5713
        [q, b, e, ?] .
 
5714
        tgcr=0x1, tmr=0xff1c, trr=0x3d09, tcr=0x0, tcn=0x1efc, ter=0x0
 
5715
Hit '?':
 
5716
        [q, b, e, ?] .
 
5717
        tgcr=0x1, tmr=0xff1c, trr=0x3d09, tcr=0x0, tcn=0x169d, ter=0x0
 
5718
Hit 'e':
 
5719
        [q, b, e, ?] ...Stopping timer
 
5720
Hit 'q':
 
5721
        [q, b, e, ?] ## Application terminated, rc = 0x0
 
5722
 
 
5723
 
 
5724
Minicom warning:
 
5725
================
 
5726
 
 
5727
Over time, many people have reported problems when trying to use the
 
5728
"minicom" terminal emulation program for serial download. I (wd)
 
5729
consider minicom to be broken, and recommend not to use it. Under
 
5730
Unix, I recommend to use C-Kermit for general purpose use (and
 
5731
especially for kermit binary protocol download ("loadb" command), and
 
5732
use "cu" for S-Record download ("loads" command).  See
 
5733
http://www.denx.de/wiki/view/DULG/SystemSetup#Section_4.3.
 
5734
for help with kermit.
 
5735
 
 
5736
 
 
5737
Nevertheless, if you absolutely want to use it try adding this
 
5738
configuration to your "File transfer protocols" section:
 
5739
 
 
5740
           Name    Program                      Name U/D FullScr IO-Red. Multi
 
5741
        X  kermit  /usr/bin/kermit -i -l %l -s   Y    U    Y       N      N
 
5742
        Y  kermit  /usr/bin/kermit -i -l %l -r   N    D    Y       N      N
 
5743
 
 
5744
 
 
5745
NetBSD Notes:
 
5746
=============
 
5747
 
 
5748
Starting at version 0.9.2, U-Boot supports NetBSD both as host
 
5749
(build U-Boot) and target system (boots NetBSD/mpc8xx).
 
5750
 
 
5751
Building requires a cross environment; it is known to work on
 
5752
NetBSD/i386 with the cross-powerpc-netbsd-1.3 package (you will also
 
5753
need gmake since the Makefiles are not compatible with BSD make).
 
5754
Note that the cross-powerpc package does not install include files;
 
5755
attempting to build U-Boot will fail because <machine/ansi.h> is
 
5756
missing.  This file has to be installed and patched manually:
 
5757
 
 
5758
        # cd /usr/pkg/cross/powerpc-netbsd/include
 
5759
        # mkdir powerpc
 
5760
        # ln -s powerpc machine
 
5761
        # cp /usr/src/sys/arch/powerpc/include/ansi.h powerpc/ansi.h
 
5762
        # ${EDIT} powerpc/ansi.h        ## must remove __va_list, _BSD_VA_LIST
 
5763
 
 
5764
Native builds *don't* work due to incompatibilities between native
 
5765
and U-Boot include files.
 
5766
 
 
5767
Booting assumes that (the first part of) the image booted is a
 
5768
stage-2 loader which in turn loads and then invokes the kernel
 
5769
proper. Loader sources will eventually appear in the NetBSD source
 
5770
tree (probably in sys/arc/mpc8xx/stand/u-boot_stage2/); in the
 
5771
meantime, see ftp://ftp.denx.de/pub/u-boot/ppcboot_stage2.tar.gz
 
5772
 
 
5773
 
 
5774
Implementation Internals:
 
5775
=========================
 
5776
 
 
5777
The following is not intended to be a complete description of every
 
5778
implementation detail. However, it should help to understand the
 
5779
inner workings of U-Boot and make it easier to port it to custom
 
5780
hardware.
 
5781
 
 
5782
 
 
5783
Initial Stack, Global Data:
 
5784
---------------------------
 
5785
 
 
5786
The implementation of U-Boot is complicated by the fact that U-Boot
 
5787
starts running out of ROM (flash memory), usually without access to
 
5788
system RAM (because the memory controller is not initialized yet).
 
5789
This means that we don't have writable Data or BSS segments, and BSS
 
5790
is not initialized as zero. To be able to get a C environment working
 
5791
at all, we have to allocate at least a minimal stack. Implementation
 
5792
options for this are defined and restricted by the CPU used: Some CPU
 
5793
models provide on-chip memory (like the IMMR area on MPC8xx and
 
5794
MPC826x processors), on others (parts of) the data cache can be
 
5795
locked as (mis-) used as memory, etc.
 
5796
 
 
5797
        Chris Hallinan posted a good summary of these issues to the
 
5798
        U-Boot mailing list:
 
5799
 
 
5800
        Subject: RE: [U-Boot-Users] RE: More On Memory Bank x (nothingness)?
 
5801
        From: "Chris Hallinan" <clh@net1plus.com>
 
5802
        Date: Mon, 10 Feb 2003 16:43:46 -0500 (22:43 MET)
 
5803
        ...
 
5804
 
 
5805
        Correct me if I'm wrong, folks, but the way I understand it
 
5806
        is this: Using DCACHE as initial RAM for Stack, etc, does not
 
5807
        require any physical RAM backing up the cache. The cleverness
 
5808
        is that the cache is being used as a temporary supply of
 
5809
        necessary storage before the SDRAM controller is setup. It's
 
5810
        beyond the scope of this list to explain the details, but you
 
5811
        can see how this works by studying the cache architecture and
 
5812
        operation in the architecture and processor-specific manuals.
 
5813
 
 
5814
        OCM is On Chip Memory, which I believe the 405GP has 4K. It
 
5815
        is another option for the system designer to use as an
 
5816
        initial stack/RAM area prior to SDRAM being available. Either
 
5817
        option should work for you. Using CS 4 should be fine if your
 
5818
        board designers haven't used it for something that would
 
5819
        cause you grief during the initial boot! It is frequently not
 
5820
        used.
 
5821
 
 
5822
        CONFIG_SYS_INIT_RAM_ADDR should be somewhere that won't interfere
 
5823
        with your processor/board/system design. The default value
 
5824
        you will find in any recent u-boot distribution in
 
5825
        walnut.h should work for you. I'd set it to a value larger
 
5826
        than your SDRAM module. If you have a 64MB SDRAM module, set
 
5827
        it above 400_0000. Just make sure your board has no resources
 
5828
        that are supposed to respond to that address! That code in
 
5829
        start.S has been around a while and should work as is when
 
5830
        you get the config right.
 
5831
 
 
5832
        -Chris Hallinan
 
5833
        DS4.COM, Inc.
 
5834
 
 
5835
It is essential to remember this, since it has some impact on the C
 
5836
code for the initialization procedures:
 
5837
 
 
5838
* Initialized global data (data segment) is read-only. Do not attempt
 
5839
  to write it.
 
5840
 
 
5841
* Do not use any uninitialized global data (or implicitely initialized
 
5842
  as zero data - BSS segment) at all - this is undefined, initiali-
 
5843
  zation is performed later (when relocating to RAM).
 
5844
 
 
5845
* Stack space is very limited. Avoid big data buffers or things like
 
5846
  that.
 
5847
 
 
5848
Having only the stack as writable memory limits means we cannot use
 
5849
normal global data to share information beween the code. But it
 
5850
turned out that the implementation of U-Boot can be greatly
 
5851
simplified by making a global data structure (gd_t) available to all
 
5852
functions. We could pass a pointer to this data as argument to _all_
 
5853
functions, but this would bloat the code. Instead we use a feature of
 
5854
the GCC compiler (Global Register Variables) to share the data: we
 
5855
place a pointer (gd) to the global data into a register which we
 
5856
reserve for this purpose.
 
5857
 
 
5858
When choosing a register for such a purpose we are restricted by the
 
5859
relevant  (E)ABI  specifications for the current architecture, and by
 
5860
GCC's implementation.
 
5861
 
 
5862
For PowerPC, the following registers have specific use:
 
5863
        R1:     stack pointer
 
5864
        R2:     reserved for system use
 
5865
        R3-R4:  parameter passing and return values
 
5866
        R5-R10: parameter passing
 
5867
        R13:    small data area pointer
 
5868
        R30:    GOT pointer
 
5869
        R31:    frame pointer
 
5870
 
 
5871
        (U-Boot also uses R12 as internal GOT pointer. r12
 
5872
        is a volatile register so r12 needs to be reset when
 
5873
        going back and forth between asm and C)
 
5874
 
 
5875
    ==> U-Boot will use R2 to hold a pointer to the global data
 
5876
 
 
5877
    Note: on PPC, we could use a static initializer (since the
 
5878
    address of the global data structure is known at compile time),
 
5879
    but it turned out that reserving a register results in somewhat
 
5880
    smaller code - although the code savings are not that big (on
 
5881
    average for all boards 752 bytes for the whole U-Boot image,
 
5882
    624 text + 127 data).
 
5883
 
 
5884
On Blackfin, the normal C ABI (except for P3) is followed as documented here:
 
5885
        http://docs.blackfin.uclinux.org/doku.php?id=application_binary_interface
 
5886
 
 
5887
    ==> U-Boot will use P3 to hold a pointer to the global data
 
5888
 
 
5889
On ARM, the following registers are used:
 
5890
 
 
5891
        R0:     function argument word/integer result
 
5892
        R1-R3:  function argument word
 
5893
        R9:     platform specific
 
5894
        R10:    stack limit (used only if stack checking is enabled)
 
5895
        R11:    argument (frame) pointer
 
5896
        R12:    temporary workspace
 
5897
        R13:    stack pointer
 
5898
        R14:    link register
 
5899
        R15:    program counter
 
5900
 
 
5901
    ==> U-Boot will use R9 to hold a pointer to the global data
 
5902
 
 
5903
    Note: on ARM, only R_ARM_RELATIVE relocations are supported.
 
5904
 
 
5905
On Nios II, the ABI is documented here:
 
5906
        http://www.altera.com/literature/hb/nios2/n2cpu_nii51016.pdf
 
5907
 
 
5908
    ==> U-Boot will use gp to hold a pointer to the global data
 
5909
 
 
5910
    Note: on Nios II, we give "-G0" option to gcc and don't use gp
 
5911
    to access small data sections, so gp is free.
 
5912
 
 
5913
On NDS32, the following registers are used:
 
5914
 
 
5915
        R0-R1:  argument/return
 
5916
        R2-R5:  argument
 
5917
        R15:    temporary register for assembler
 
5918
        R16:    trampoline register
 
5919
        R28:    frame pointer (FP)
 
5920
        R29:    global pointer (GP)
 
5921
        R30:    link register (LP)
 
5922
        R31:    stack pointer (SP)
 
5923
        PC:     program counter (PC)
 
5924
 
 
5925
    ==> U-Boot will use R10 to hold a pointer to the global data
 
5926
 
 
5927
NOTE: DECLARE_GLOBAL_DATA_PTR must be used with file-global scope,
 
5928
or current versions of GCC may "optimize" the code too much.
 
5929
 
 
5930
Memory Management:
 
5931
------------------
 
5932
 
 
5933
U-Boot runs in system state and uses physical addresses, i.e. the
 
5934
MMU is not used either for address mapping nor for memory protection.
 
5935
 
 
5936
The available memory is mapped to fixed addresses using the memory
 
5937
controller. In this process, a contiguous block is formed for each
 
5938
memory type (Flash, SDRAM, SRAM), even when it consists of several
 
5939
physical memory banks.
 
5940
 
 
5941
U-Boot is installed in the first 128 kB of the first Flash bank (on
 
5942
TQM8xxL modules this is the range 0x40000000 ... 0x4001FFFF). After
 
5943
booting and sizing and initializing DRAM, the code relocates itself
 
5944
to the upper end of DRAM. Immediately below the U-Boot code some
 
5945
memory is reserved for use by malloc() [see CONFIG_SYS_MALLOC_LEN
 
5946
configuration setting]. Below that, a structure with global Board
 
5947
Info data is placed, followed by the stack (growing downward).
 
5948
 
 
5949
Additionally, some exception handler code is copied to the low 8 kB
 
5950
of DRAM (0x00000000 ... 0x00001FFF).
 
5951
 
 
5952
So a typical memory configuration with 16 MB of DRAM could look like
 
5953
this:
 
5954
 
 
5955
        0x0000 0000     Exception Vector code
 
5956
              :
 
5957
        0x0000 1FFF
 
5958
        0x0000 2000     Free for Application Use
 
5959
              :
 
5960
              :
 
5961
 
 
5962
              :
 
5963
              :
 
5964
        0x00FB FF20     Monitor Stack (Growing downward)
 
5965
        0x00FB FFAC     Board Info Data and permanent copy of global data
 
5966
        0x00FC 0000     Malloc Arena
 
5967
              :
 
5968
        0x00FD FFFF
 
5969
        0x00FE 0000     RAM Copy of Monitor Code
 
5970
        ...             eventually: LCD or video framebuffer
 
5971
        ...             eventually: pRAM (Protected RAM - unchanged by reset)
 
5972
        0x00FF FFFF     [End of RAM]
 
5973
 
 
5974
 
 
5975
System Initialization:
 
5976
----------------------
 
5977
 
 
5978
In the reset configuration, U-Boot starts at the reset entry point
 
5979
(on most PowerPC systems at address 0x00000100). Because of the reset
 
5980
configuration for CS0# this is a mirror of the onboard Flash memory.
 
5981
To be able to re-map memory U-Boot then jumps to its link address.
 
5982
To be able to implement the initialization code in C, a (small!)
 
5983
initial stack is set up in the internal Dual Ported RAM (in case CPUs
 
5984
which provide such a feature like MPC8xx or MPC8260), or in a locked
 
5985
part of the data cache. After that, U-Boot initializes the CPU core,
 
5986
the caches and the SIU.
 
5987
 
 
5988
Next, all (potentially) available memory banks are mapped using a
 
5989
preliminary mapping. For example, we put them on 512 MB boundaries
 
5990
(multiples of 0x20000000: SDRAM on 0x00000000 and 0x20000000, Flash
 
5991
on 0x40000000 and 0x60000000, SRAM on 0x80000000). Then UPM A is
 
5992
programmed for SDRAM access. Using the temporary configuration, a
 
5993
simple memory test is run that determines the size of the SDRAM
 
5994
banks.
 
5995
 
 
5996
When there is more than one SDRAM bank, and the banks are of
 
5997
different size, the largest is mapped first. For equal size, the first
 
5998
bank (CS2#) is mapped first. The first mapping is always for address
 
5999
0x00000000, with any additional banks following immediately to create
 
6000
contiguous memory starting from 0.
 
6001
 
 
6002
Then, the monitor installs itself at the upper end of the SDRAM area
 
6003
and allocates memory for use by malloc() and for the global Board
 
6004
Info data; also, the exception vector code is copied to the low RAM
 
6005
pages, and the final stack is set up.
 
6006
 
 
6007
Only after this relocation will you have a "normal" C environment;
 
6008
until that you are restricted in several ways, mostly because you are
 
6009
running from ROM, and because the code will have to be relocated to a
 
6010
new address in RAM.
 
6011
 
 
6012
 
 
6013
U-Boot Porting Guide:
 
6014
----------------------
 
6015
 
 
6016
[Based on messages by Jerry Van Baren in the U-Boot-Users mailing
 
6017
list, October 2002]
 
6018
 
 
6019
 
 
6020
int main(int argc, char *argv[])
 
6021
{
 
6022
        sighandler_t no_more_time;
 
6023
 
 
6024
        signal(SIGALRM, no_more_time);
 
6025
        alarm(PROJECT_DEADLINE - toSec (3 * WEEK));
 
6026
 
 
6027
        if (available_money > available_manpower) {
 
6028
                Pay consultant to port U-Boot;
 
6029
                return 0;
 
6030
        }
 
6031
 
 
6032
        Download latest U-Boot source;
 
6033
 
 
6034
        Subscribe to u-boot mailing list;
 
6035
 
 
6036
        if (clueless)
 
6037
                email("Hi, I am new to U-Boot, how do I get started?");
 
6038
 
 
6039
        while (learning) {
 
6040
                Read the README file in the top level directory;
 
6041
                Read http://www.denx.de/twiki/bin/view/DULG/Manual;
 
6042
                Read applicable doc/*.README;
 
6043
                Read the source, Luke;
 
6044
                /* find . -name "*.[chS]" | xargs grep -i <keyword> */
 
6045
        }
 
6046
 
 
6047
        if (available_money > toLocalCurrency ($2500))
 
6048
                Buy a BDI3000;
 
6049
        else
 
6050
                Add a lot of aggravation and time;
 
6051
 
 
6052
        if (a similar board exists) {   /* hopefully... */
 
6053
                cp -a board/<similar> board/<myboard>
 
6054
                cp include/configs/<similar>.h include/configs/<myboard>.h
 
6055
        } else {
 
6056
                Create your own board support subdirectory;
 
6057
                Create your own board include/configs/<myboard>.h file;
 
6058
        }
 
6059
        Edit new board/<myboard> files
 
6060
        Edit new include/configs/<myboard>.h
 
6061
 
 
6062
        while (!accepted) {
 
6063
                while (!running) {
 
6064
                        do {
 
6065
                                Add / modify source code;
 
6066
                        } until (compiles);
 
6067
                        Debug;
 
6068
                        if (clueless)
 
6069
                                email("Hi, I am having problems...");
 
6070
                }
 
6071
                Send patch file to the U-Boot email list;
 
6072
                if (reasonable critiques)
 
6073
                        Incorporate improvements from email list code review;
 
6074
                else
 
6075
                        Defend code as written;
 
6076
        }
 
6077
 
 
6078
        return 0;
 
6079
}
 
6080
 
 
6081
void no_more_time (int sig)
 
6082
{
 
6083
      hire_a_guru();
 
6084
}
 
6085
 
 
6086
 
 
6087
Coding Standards:
 
6088
-----------------
 
6089
 
 
6090
All contributions to U-Boot should conform to the Linux kernel
 
6091
coding style; see the file "Documentation/CodingStyle" and the script
 
6092
"scripts/Lindent" in your Linux kernel source directory.
 
6093
 
 
6094
Source files originating from a different project (for example the
 
6095
MTD subsystem) are generally exempt from these guidelines and are not
 
6096
reformated to ease subsequent migration to newer versions of those
 
6097
sources.
 
6098
 
 
6099
Please note that U-Boot is implemented in C (and to some small parts in
 
6100
Assembler); no C++ is used, so please do not use C++ style comments (//)
 
6101
in your code.
 
6102
 
 
6103
Please also stick to the following formatting rules:
 
6104
- remove any trailing white space
 
6105
- use TAB characters for indentation and vertical alignment, not spaces
 
6106
- make sure NOT to use DOS '\r\n' line feeds
 
6107
- do not add more than 2 consecutive empty lines to source files
 
6108
- do not add trailing empty lines to source files
 
6109
 
 
6110
Submissions which do not conform to the standards may be returned
 
6111
with a request to reformat the changes.
 
6112
 
 
6113
 
 
6114
Submitting Patches:
 
6115
-------------------
 
6116
 
 
6117
Since the number of patches for U-Boot is growing, we need to
 
6118
establish some rules. Submissions which do not conform to these rules
 
6119
may be rejected, even when they contain important and valuable stuff.
 
6120
 
 
6121
Please see http://www.denx.de/wiki/U-Boot/Patches for details.
 
6122
 
 
6123
Patches shall be sent to the u-boot mailing list <u-boot@lists.denx.de>;
 
6124
see http://lists.denx.de/mailman/listinfo/u-boot
 
6125
 
 
6126
When you send a patch, please include the following information with
 
6127
it:
 
6128
 
 
6129
* For bug fixes: a description of the bug and how your patch fixes
 
6130
  this bug. Please try to include a way of demonstrating that the
 
6131
  patch actually fixes something.
 
6132
 
 
6133
* For new features: a description of the feature and your
 
6134
  implementation.
 
6135
 
 
6136
* A CHANGELOG entry as plaintext (separate from the patch)
 
6137
 
 
6138
* For major contributions, your entry to the CREDITS file
 
6139
 
 
6140
* When you add support for a new board, don't forget to add a
 
6141
  maintainer e-mail address to the boards.cfg file, too.
 
6142
 
 
6143
* If your patch adds new configuration options, don't forget to
 
6144
  document these in the README file.
 
6145
 
 
6146
* The patch itself. If you are using git (which is *strongly*
 
6147
  recommended) you can easily generate the patch using the
 
6148
  "git format-patch". If you then use "git send-email" to send it to
 
6149
  the U-Boot mailing list, you will avoid most of the common problems
 
6150
  with some other mail clients.
 
6151
 
 
6152
  If you cannot use git, use "diff -purN OLD NEW". If your version of
 
6153
  diff does not support these options, then get the latest version of
 
6154
  GNU diff.
 
6155
 
 
6156
  The current directory when running this command shall be the parent
 
6157
  directory of the U-Boot source tree (i. e. please make sure that
 
6158
  your patch includes sufficient directory information for the
 
6159
  affected files).
 
6160
 
 
6161
  We prefer patches as plain text. MIME attachments are discouraged,
 
6162
  and compressed attachments must not be used.
 
6163
 
 
6164
* If one logical set of modifications affects or creates several
 
6165
  files, all these changes shall be submitted in a SINGLE patch file.
 
6166
 
 
6167
* Changesets that contain different, unrelated modifications shall be
 
6168
  submitted as SEPARATE patches, one patch per changeset.
 
6169
 
 
6170
 
 
6171
Notes:
 
6172
 
 
6173
* Before sending the patch, run the MAKEALL script on your patched
 
6174
  source tree and make sure that no errors or warnings are reported
 
6175
  for any of the boards.
 
6176
 
 
6177
* Keep your modifications to the necessary minimum: A patch
 
6178
  containing several unrelated changes or arbitrary reformats will be
 
6179
  returned with a request to re-formatting / split it.
 
6180
 
 
6181
* If you modify existing code, make sure that your new code does not
 
6182
  add to the memory footprint of the code ;-) Small is beautiful!
 
6183
  When adding new features, these should compile conditionally only
 
6184
  (using #ifdef), and the resulting code with the new feature
 
6185
  disabled must not need more memory than the old code without your
 
6186
  modification.
 
6187
 
 
6188
* Remember that there is a size limit of 100 kB per message on the
 
6189
  u-boot mailing list. Bigger patches will be moderated. If they are
 
6190
  reasonable and not too big, they will be acknowledged. But patches
 
6191
  bigger than the size limit should be avoided.