Skip to content
Snippets Groups Projects
README 112 KiB
Newer Older
Wolfgang Denk's avatar
Wolfgang Denk committed
#
# (C) Copyright 2000 - 2004
Wolfgang Denk's avatar
Wolfgang Denk committed
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
#
# See file CREDITS for list of people who contributed to this
# project.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation; either version 2 of
# the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
# MA 02111-1307 USA
#

Summary:
========

This directory contains the source code for U-Boot, a boot loader for
Embedded boards based on PowerPC, ARM, MIPS and several other
processors, which can be installed in a boot ROM and used to
initialize and test the hardware or to download and run application
code.
Wolfgang Denk's avatar
Wolfgang Denk committed

The development of U-Boot is closely related to Linux: some parts of
the source code originate in the Linux source tree, we have some
header files in common, and special provision has been made to
Wolfgang Denk's avatar
Wolfgang Denk committed
support booting of Linux images.

Some attention has been paid to make this software easily
configurable and extendable. For instance, all monitor commands are
implemented with the same call interface, so that it's very easy to
add new commands. Also, instead of permanently adding rarely used
code (for instance hardware test utilities) to the monitor, you can
load and run it dynamically.


Status:
=======

In general, all boards for which a configuration option exists in the
Makefile have been tested to some extent and can be considered
Wolfgang Denk's avatar
Wolfgang Denk committed
"working". In fact, many of them are used in production systems.

In case of problems see the CHANGELOG and CREDITS files to find out
Wolfgang Denk's avatar
Wolfgang Denk committed
who contributed the specific port.


Where to get help:
==================

In case you have questions about, problems with or contributions for
U-Boot you should send a message to the U-Boot mailing list at
<u-boot-users@lists.sourceforge.net>. There is also an archive of
previous traffic on the mailing list - please search the archive
Wolfgang Denk's avatar
Wolfgang Denk committed
before asking FAQ's. Please see
http://lists.sourceforge.net/lists/listinfo/u-boot-users/


Where we come from:
===================

- start from 8xxrom sources
- create PPCBoot project (http://sourceforge.net/projects/ppcboot)
Wolfgang Denk's avatar
Wolfgang Denk committed
- clean up code
- make it easier to add custom boards
- make it possible to add other [PowerPC] CPUs
- extend functions, especially:
  * Provide extended interface to Linux boot loader
  * S-Record download
  * network boot
  * PCMCIA / CompactFLash / ATA disk / SCSI ... boot
- create ARMBoot project (http://sourceforge.net/projects/armboot)
Wolfgang Denk's avatar
Wolfgang Denk committed
- add other CPU families (starting with ARM)
- create U-Boot project (http://sourceforge.net/projects/u-boot)


Names and Spelling:
===================

The "official" name of this project is "Das U-Boot". The spelling
"U-Boot" shall be used in all written text (documentation, comments
in source files etc.). Example:

	This is the README file for the U-Boot project.

File names etc. shall be based on the string "u-boot". Examples:

	include/asm-ppc/u-boot.h

	#include <asm/u-boot.h>

Variable names, preprocessor constants etc. shall be either based on
the string "u_boot" or on "U_BOOT". Example:

	U_BOOT_VERSION		u_boot_logo
	IH_OS_U_BOOT		u_boot_hush_start
Versioning:
===========

U-Boot uses a 3 level version number containing a version, a
sub-version, and a patchlevel: "U-Boot-2.34.5" means version "2",
sub-version "34", and patchlevel "4".

The patchlevel is used to indicate certain stages of development
between released versions, i. e. officially released versions of
U-Boot will always have a patchlevel of "0".


Wolfgang Denk's avatar
Wolfgang Denk committed
Directory Hierarchy:
====================

- board		Board dependent files
- common	Misc architecture independent functions
Wolfgang Denk's avatar
Wolfgang Denk committed
- cpu		CPU specific files
  - 74xx_7xx	Files specific to Freescale MPC74xx and 7xx CPUs
  - arm720t	Files specific to ARM 720 CPUs
  - arm920t	Files specific to ARM 920 CPUs
    - imx	Files specific to Freescale MC9328 i.MX CPUs
    - s3c24x0	Files specific to Samsung S3C24X0 CPUs
  - arm925t	Files specific to ARM 925 CPUs
  - arm926ejs	Files specific to ARM 926 CPUs
  - at91rm9200	Files specific to Atmel AT91RM9200 CPUs
  - i386	Files specific to i386 CPUs
  - ixp		Files specific to Intel XScale IXP CPUs
  - mcf52x2	Files specific to Freescale ColdFire MCF52x2 CPUs
  - mips	Files specific to MIPS CPUs
  - mpc5xx	Files specific to Freescale MPC5xx  CPUs
  - mpc5xxx	Files specific to Freescale MPC5xxx CPUs
  - mpc8xx	Files specific to Freescale MPC8xx  CPUs
  - mpc8220	Files specific to Freescale MPC8220 CPUs
  - mpc824x	Files specific to Freescale MPC824x CPUs
  - mpc8260	Files specific to Freescale MPC8260 CPUs
  - mpc85xx	Files specific to Freescale MPC85xx CPUs
  - nios	Files specific to Altera NIOS CPUs
  - nios2	Files specific to Altera Nios-II CPUs
  - ppc4xx	Files specific to IBM PowerPC 4xx CPUs
  - pxa		Files specific to Intel XScale PXA CPUs
  - s3c44b0	Files specific to Samsung S3C44B0 CPUs
  - sa1100	Files specific to Intel StrongARM SA1100 CPUs
Wolfgang Denk's avatar
Wolfgang Denk committed
- disk		Code for disk drive partition handling
- doc		Documentation (don't expect too much)
- drivers	Commonly used device drivers
Wolfgang Denk's avatar
Wolfgang Denk committed
- dtt		Digital Thermometer and Thermostat drivers
- examples	Example code for standalone applications, etc.
- include	Header Files
- lib_arm	Files generic to ARM	 architecture
- lib_generic	Files generic to all	 architectures
- lib_i386	Files generic to i386	 architecture
- lib_m68k	Files generic to m68k	 architecture
- lib_mips	Files generic to MIPS	 architecture
- lib_nios	Files generic to NIOS	 architecture
- lib_ppc	Files generic to PowerPC architecture
Wolfgang Denk's avatar
Wolfgang Denk committed
- net		Networking code
- post		Power On Self Test
- rtc		Real Time Clock drivers
- tools		Tools to build S-Record or U-Boot images, etc.

Software Configuration:
=======================

Configuration is usually done using C preprocessor defines; the
rationale behind that is to avoid dead code whenever possible.

There are two classes of configuration variables:

* Configuration _OPTIONS_:
  These are selectable by the user and have names beginning with
  "CONFIG_".

* Configuration _SETTINGS_:
  These depend on the hardware etc. and should not be meddled with if
  you don't know what you're doing; they have names beginning with
  "CFG_".

Later we will add a configuration tool - probably similar to or even
identical to what's used for the Linux kernel. Right now, we have to
do the configuration by hand, which means creating some symbolic
links and editing some configuration files. We use the TQM8xxL boards
as an example here.


Selection of Processor Architecture and Board Type:
---------------------------------------------------

For all supported boards there are ready-to-use default
configurations available; just type "make <board_name>_config".

Example: For a TQM823L module type:

Wolfgang Denk's avatar
Wolfgang Denk committed
	cd u-boot
	make TQM823L_config

For the Cogent platform, you need to specify the cpu type as well;
e.g. "make cogent_mpc8xx_config". And also configure the cogent
directory according to the instructions in cogent/README.


Configuration Options:
----------------------

Configuration depends on the combination of board and CPU type; all
such information is kept in a configuration file
"include/configs/<board_name>.h".

Example: For a TQM823L module, all configuration settings are in
"include/configs/TQM823L.h".


Many of the options are named exactly as the corresponding Linux
kernel configuration options. The intention is to make it easier to
build a config tool - later.


Wolfgang Denk's avatar
Wolfgang Denk committed
The following options need to be configured:

- CPU Type:	Define exactly one of

		PowerPC based CPUs:
		-------------------
		CONFIG_MPC823,	CONFIG_MPC850,	CONFIG_MPC855,	CONFIG_MPC860
	or	CONFIG_MPC5xx
	or	CONFIG_MPC8220
Wolfgang Denk's avatar
Wolfgang Denk committed
	or	CONFIG_MPC824X, CONFIG_MPC8260
	or	CONFIG_MPC85xx
Wolfgang Denk's avatar
Wolfgang Denk committed
	or	CONFIG_IOP480
	or	CONFIG_405GP
	or	CONFIG_405EP
Wolfgang Denk's avatar
Wolfgang Denk committed
	or	CONFIG_440
	or	CONFIG_MPC74xx
	or	CONFIG_750FX
Wolfgang Denk's avatar
Wolfgang Denk committed

		ARM based CPUs:
		---------------
		CONFIG_SA1110
		CONFIG_ARM7
		CONFIG_PXA250

		MicroBlaze based CPUs:
		----------------------
		CONFIG_MICROBLAZE
		Nios-2 based CPUs:
		----------------------
		CONFIG_NIOS2

Wolfgang Denk's avatar
Wolfgang Denk committed

- Board Type:	Define exactly one of

		PowerPC based boards:
		---------------------

		CONFIG_ADCIOP		CONFIG_GEN860T		CONFIG_PCI405
		CONFIG_ADS860		CONFIG_GENIETV		CONFIG_PCIPPC2
		CONFIG_AMX860		CONFIG_GTH		CONFIG_PCIPPC6
		CONFIG_AR405		CONFIG_gw8260		CONFIG_pcu_e
		CONFIG_BAB7xx		CONFIG_hermes		CONFIG_PIP405
		CONFIG_c2mon		CONFIG_hymod		CONFIG_PM826
		CONFIG_CANBT		CONFIG_IAD210		CONFIG_ppmc8260
		CONFIG_CCM		CONFIG_ICU862		CONFIG_QS823
		CONFIG_CMI		CONFIG_IP860		CONFIG_QS850
		CONFIG_cogent_mpc8260	CONFIG_IPHASE4539	CONFIG_QS860T
		CONFIG_cogent_mpc8xx	CONFIG_IVML24		CONFIG_RBC823
		CONFIG_CPCI405		CONFIG_IVML24_128	CONFIG_RPXClassic
		CONFIG_CPCI4052		CONFIG_IVML24_256	CONFIG_RPXlite
		CONFIG_CPCIISER4	CONFIG_IVMS8		CONFIG_RPXsuper
		CONFIG_CPU86		CONFIG_IVMS8_128	CONFIG_rsdproto
		CONFIG_CRAYL1		CONFIG_IVMS8_256	CONFIG_sacsng
		CONFIG_CSB272		CONFIG_JSE		CONFIG_Sandpoint8240
		CONFIG_CU824		CONFIG_LANTEC		CONFIG_Sandpoint8245
		CONFIG_DASA_SIM		CONFIG_lwmon		CONFIG_sbc8260
		CONFIG_DB64360		CONFIG_MBX		CONFIG_sbc8560
		CONFIG_DB64460		CONFIG_MBX860T		CONFIG_SM850
		CONFIG_DU405		CONFIG_MHPC		CONFIG_SPD823TS
		CONFIG_DUET_ADS		CONFIG_MIP405		CONFIG_STXGP3
		CONFIG_EBONY		CONFIG_MOUSSE		CONFIG_SXNI855T
		CONFIG_ELPPC		CONFIG_MPC8260ADS	CONFIG_TQM823L
		CONFIG_ELPT860		CONFIG_MPC8540ADS	CONFIG_TQM8260
		CONFIG_ep8260		CONFIG_MPC8560ADS	CONFIG_TQM850L
		CONFIG_ERIC		CONFIG_MUSENKI		CONFIG_TQM855L
		CONFIG_ESTEEM192E	CONFIG_MVS1		CONFIG_TQM860L
		CONFIG_ETX094		CONFIG_NETPHONE		CONFIG_TTTech
		CONFIG_EVB64260		CONFIG_NETTA		CONFIG_UTX8245
		CONFIG_FADS823		CONFIG_NETVIA		CONFIG_V37
		CONFIG_FADS850SAR	CONFIG_NX823		CONFIG_W7OLMC
		CONFIG_FADS860T		CONFIG_OCRTC		CONFIG_W7OLMG
		CONFIG_FLAGADM		CONFIG_ORSG		CONFIG_WALNUT405
		CONFIG_FPS850L		CONFIG_OXC		CONFIG_ZPC1900
		CONFIG_FPS860L					CONFIG_ZUMA
Wolfgang Denk's avatar
Wolfgang Denk committed

		ARM based boards:
		-----------------

		CONFIG_AT91RM9200DK,		CONFIG_CERF250,		CONFIG_DNP1110,
		CONFIG_EP7312,			CONFIG_H2_OMAP1610,	CONFIG_HHP_CRADLE,
		CONFIG_IMPA7,		CONFIG_INNOVATOROMAP1510,	CONFIG_INNOVATOROMAP1610,
		CONFIG_LART,			CONFIG_LPD7A400		CONFIG_LUBBOCK,
		CONFIG_OSK_OMAP5912,		CONFIG_SHANNON,		CONFIG_P2_OMAP730,
		CONFIG_SMDK2400,		CONFIG_SMDK2410,	CONFIG_TRAB,
		CONFIG_VCMA9
Wolfgang Denk's avatar
Wolfgang Denk committed

		MicroBlaze based boards:
		------------------------

		CONFIG_SUZAKU

Loading
Loading full blame...