#
-# (C) Copyright 2000 - 2008
+# (C) Copyright 2000 - 2009
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
#
# See file CREDITS for list of people who contributed to this
Directory Hierarchy:
====================
+- api Machine/arch independent API for external apps
- board Board dependent files
- common Misc architecture independent functions
- cpu CPU specific files
- disk Code for disk drive partition handling
- doc Documentation (don't expect too much)
- drivers Commonly used device drivers
-- dtt Digital Thermometer and Thermostat drivers
- examples Example code for standalone applications, etc.
+- fs Filesystem code (cramfs, ext2, jffs2, etc.)
- include Header Files
- lib_arm Files generic to ARM architecture
- lib_avr32 Files generic to AVR32 architecture
- lib_generic Files generic to all architectures
- lib_i386 Files generic to i386 architecture
- lib_m68k Files generic to m68k architecture
+- lib_microblaze Files generic to microblaze architecture
- lib_mips Files generic to MIPS architecture
- lib_nios Files generic to NIOS architecture
+- lib_nios2 Files generic to NIOS2 architecture
- lib_ppc Files generic to PowerPC architecture
+- lib_sh Files generic to SH architecture
- lib_sparc Files generic to SPARC architecture
- libfdt Library files to support flattened device trees
- net Networking code
* Adds the "fdt" command
* The bootm command automatically updates the fdt
- OF_CPU - The proper name of the cpus node.
- OF_SOC - The proper name of the soc node.
+ OF_CPU - The proper name of the cpus node (only required for
+ MPC512X and MPC5xxx based boards).
+ OF_SOC - The proper name of the soc node (only required for
+ MPC512X and MPC5xxx based boards).
OF_TBCLK - The timebase frequency.
OF_STDOUT_PATH - The path to the console device
This define fills in the correct boot CPU in the boot
param header, the default value is zero if undefined.
+ CONFIG_OF_IDE_FIXUP
+
+ U-Boot can detect if an IDE device is present or not.
+ If not, and this new config option is activated, U-Boot
+ removes the ATA node from the DTS before booting Linux,
+ so the Linux IDE driver does not probe the device and
+ crash. This is needed for buggy hardware (uc101) where
+ no pull down resistor is connected to the signal IDE5V_DD7.
+
- vxWorks boot parameters:
bootvx constructs a valid bootline using the following
CONFIG_CMD_DATE * support for RTC, date/time...
CONFIG_CMD_DHCP * DHCP support
CONFIG_CMD_DIAG * Diagnostics
- CONFIG_CMD_DOC * Disk-On-Chip Support
CONFIG_CMD_DS4510 * ds4510 I2C gpio commands
CONFIG_CMD_DS4510_INFO * ds4510 I2C info command
CONFIG_CMD_DS4510_MEM * ds4510 I2C eeprom/sram commansd
CONFIG_CMD_DS4510_RST * ds4510 I2C rst command
CONFIG_CMD_DTT * Digital Therm and Thermostat
CONFIG_CMD_ECHO echo arguments
+ CONFIG_CMD_EDITENV edit env variable
CONFIG_CMD_EEPROM * EEPROM read/write support
CONFIG_CMD_ELF * bootelf, bootvx
CONFIG_CMD_SAVEENV saveenv
CONFIG_CMD_KGDB * kgdb
CONFIG_CMD_LOADB loadb
CONFIG_CMD_LOADS loads
+ CONFIG_CMD_MD5SUM print md5 message digest
+ (requires CONFIG_CMD_MEMORY and CONFIG_MD5)
CONFIG_CMD_MEMORY md, mm, nm, mw, cp, cmp, crc, base,
loop, loopw, mtest
CONFIG_CMD_MISC Misc functions like sleep etc
(requires CONFIG_CMD_I2C)
CONFIG_CMD_SETGETDCR Support for DCR Register access
(4xx only)
+ CONFIG_CMD_SHA1 print sha1 memory digest
+ (requires CONFIG_CMD_MEMORY)
CONFIG_CMD_SOURCE "source" command Support
CONFIG_CMD_SPI * SPI serial bus support
CONFIG_CMD_USB * USB support
CONFIG_LBA48
Set this to enable support for disks larger than 137GB
- Also look at CONFIG_SYS_64BIT_LBA ,CONFIG_SYS_64BIT_VSPRINTF and CONFIG_SYS_64BIT_STRTOUL
+ Also look at CONFIG_SYS_64BIT_LBA.
Whithout these , LBA48 support uses 32bit variables and will 'only'
support disks up to 2.1TB.
Define this to use i/o functions instead of macros
(some hardware wont work with macros)
- CONFIG_DRIVER_SMC911X
+ CONFIG_SMC911X
Support for SMSC's LAN911x and LAN921x chips
- CONFIG_DRIVER_SMC911X_BASE
+ CONFIG_SMC911X_BASE
Define this to hold the physical address
of the device (I/O space)
- CONFIG_DRIVER_SMC911X_32_BIT
+ CONFIG_SMC911X_32_BIT
Define this if data bus is 32 bits
- CONFIG_DRIVER_SMC911X_16_BIT
+ CONFIG_SMC911X_16_BIT
Define this if data bus is 16 bits. If your processor
automatically converts one 32 bit word to two 16 bit
- words you may also try CONFIG_DRIVER_SMC911X_32_BIT.
+ words you may also try CONFIG_SMC911X_32_BIT.
- USB Support:
At the moment only the UHCI host controller is
MPC5200 USB requires additional defines:
CONFIG_USB_CLOCK
for 528 MHz Clock: 0x0001bbbb
+ CONFIG_PSC3_USB
+ for USB on PSC3
CONFIG_USB_CONFIG
for differential drivers: 0x00001000
for single ended drivers: 0x00005000
+ for differential drivers on PSC3: 0x00000100
+ for single ended drivers on PSC3: 0x00004100
CONFIG_SYS_USB_EVENT_POLL
May be defined to allow interrupt polling
instead of using asynchronous interrupts
allows for a "silent" boot where a splash screen is
loaded very quickly after power-on.
+ CONFIG_SPLASH_SCREEN_ALIGN
+
+ If this option is set the splash image can be freely positioned
+ on the screen. Environment variable "splashpos" specifies the
+ position as "x,y". If a positive number is given it is used as
+ number of pixel from left/top. If a negative number is given it
+ is used as number of pixel from right/bottom. You can also
+ specify 'm' for centering the image.
+
+ Example:
+ setenv splashpos m,m
+ => image at center of screen
+
+ setenv splashpos 30,20
+ => image at x = 30 and y = 20
+
+ setenv splashpos -10,m
+ => vertically centered image
+ at x = dspWidth - bmpWidth - 9
+
- Gzip compressed BMP image support: CONFIG_VIDEO_BMP_GZIP
If this option is set, additionally to standard BMP
Defines a default value for the IP address of a TFTP
server to contact when using the "tftboot" command.
+ CONFIG_KEEP_SERVERADDR
+
+ Keeps the server's MAC address, in the env 'serveraddr'
+ for passing to bootargs (like Linux's netconsole option)
+
- Multicast TFTP Mode:
CONFIG_MCAST_TFTP
clock chips. See common/cmd_i2c.c for a description of the
command line interface.
- CONFIG_I2C_CMD_TREE is a recommended option that places
- all I2C commands under a single 'i2c' root command. The
- older 'imm', 'imd', 'iprobe' etc. commands are considered
- deprecated and may disappear in the future.
-
CONFIG_HARD_I2C selects a hardware I2C controller.
CONFIG_SOFT_I2C configures u-boot to use a software (aka
therefore be cleared to 0 (See, eg, MPC823e User's Manual
p.16-473). So, set CONFIG_SYS_I2C_SLAVE to 0.
+ CONFIG_SYS_I2C_INIT_MPC5XXX
+
+ When a board is reset during an i2c bus transfer
+ chips might think that the current transfer is still
+ in progress. Reset the slave devices by sending start
+ commands until the slave device responds.
+
That's all that's required for CONFIG_HARD_I2C.
If you use the software i2c interface (CONFIG_SOFT_I2C)
CONFIG_SYS_I2C_NOPROBES
This option specifies a list of I2C devices that will be skipped
- when the 'i2c probe' command is issued (or 'iprobe' using the legacy
- command). If CONFIG_I2C_MULTI_BUS is set, specify a list of bus-device
- pairs. Otherwise, specify a 1D array of device addresses
+ when the 'i2c probe' command is issued. If CONFIG_I2C_MULTI_BUS
+ is set, specify a list of bus-device pairs. Otherwise, specify
+ a 1D array of device addresses
e.g.
#undef CONFIG_I2C_MULTI_BUS
example, some LED's) on your board. At the moment,
the following checkpoints are implemented:
-- Automatic software updates via TFTP server
- CONFIG_UPDATE_TFTP
- CONFIG_UPDATE_TFTP_CNT_MAX
- CONFIG_UPDATE_TFTP_MSEC_MAX
-
- These options enable and control the auto-update feature;
- for a more detailed description refer to doc/README.update.
-
Legacy uImage format:
Arg Where When
-150 common/cmd_nand.c Incorrect FIT image format
151 common/cmd_nand.c FIT image format OK
+- Automatic software updates via TFTP server
+ CONFIG_UPDATE_TFTP
+ CONFIG_UPDATE_TFTP_CNT_MAX
+ CONFIG_UPDATE_TFTP_MSEC_MAX
+
+ These options enable and control the auto-update feature;
+ for a more detailed description refer to doc/README.update.
+
+- MTD Support (mtdparts command, UBI support)
+ CONFIG_MTD_DEVICE
+
+ Adds the MTD device infrastructure from the Linux kernel.
+ Needed for mtdparts command support.
+
+ CONFIG_MTD_PARTITIONS
+
+ Adds the MTD partitioning infrastructure from the Linux
+ kernel. Needed for UBI support.
+
Modem Support:
--------------
to a block boundary, and CONFIG_ENV_SIZE must be a multiple of
the NAND devices block size.
+- CONFIG_NAND_ENV_DST
+
+ Defines address in RAM to which the nand_spl code should copy the
+ environment. If redundant environment is used, it will be copied to
+ CONFIG_NAND_ENV_DST + CONFIG_ENV_SIZE.
+
- CONFIG_SYS_SPI_INIT_OFFSET
Defines offset to the initial SPI buffer area in DPRAM. The
- CONFIG_SYS_FAULT_MII_ADDR:
MII address of the PHY to check for the Ethernet link state.
-- CONFIG_SYS_64BIT_VSPRINTF:
- Makes vsprintf (and all *printf functions) support printing
- of 64bit values by using the L quantifier
-
-- CONFIG_SYS_64BIT_STRTOUL:
- Adds simple_strtoull that returns a 64bit value
-
- CONFIG_NS16550_MIN_FUNCTIONS:
Define this if you desire to only have use of the NS16550_init
and NS16550_putc functions for the serial driver located at
some other boot loader or by a debugger which
performs these initializations itself.
+- CONFIG_PRELOADER
+
+ Modifies the behaviour of start.S when compiling a loader
+ that is executed before the actual U-Boot. E.g. when
+ compiling a NAND SPL.
Building the Software:
======================
$ CROSS_COMPILE=ppc_4xx-
$ export CROSS_COMPILE
+Note: If you wish to generate Windows versions of the utilities in
+ the tools directory you can use the MinGW toolchain
+ (http://www.mingw.org). Set your HOST tools to the MinGW
+ toolchain and execute 'make tools'. For example:
+
+ $ make HOSTCC=i586-mingw32msvc-gcc HOSTSTRIP=i586-mingw32msvc-strip tools
+
+ Binaries such as tools/mkimage.exe will be created which can
+ be executed on computers running Windows.
+
U-Boot is intended to be simple to build. After installing the
sources you must configure U-Boot for one specific board type. This
is done by typing:
cp - memory copy
cmp - memory compare
crc32 - checksum calculation
-imd - i2c memory display
-imm - i2c memory modify (auto-incrementing)
-inm - i2c memory modify (constant address)
-imw - i2c memory write (fill)
-icrc32 - i2c checksum calculation
-iprobe - probe to discover valid I2C chip addresses
-iloop - infinite loop on address range
-isdram - print SDRAM configuration information
+i2c - I2C sub-system
sspi - SPI utility commands
base - print or set address offset
printenv- print environment variables
configuration from the BOOTP server, but not try to
load any image using TFTP
- autoscript - if set to "yes" commands like "loadb", "loady",
- "bootp", "tftpb", "rarpboot" and "nfs" will attempt
- to automatically run script images (by internally
- calling "source").
-
- autoscript_uname - if script image is in a format (FIT) this
- variable is used to get script subimage unit name.
-
autostart - if set to "yes", an image loaded using the "bootp",
"rarpboot", "tftpboot" or "diskboot" commands will
be automatically started (by internally calling
average for all boards 752 bytes for the whole U-Boot image,
624 text + 127 data).
-On Blackfin, the normal C ABI (except for P5) is followed as documented here:
+On Blackfin, the normal C ABI (except for P3) is followed as documented here:
http://docs.blackfin.uclinux.org/doku.php?id=application_binary_interface
- ==> U-Boot will use P5 to hold a pointer to the global data
+ ==> U-Boot will use P3 to hold a pointer to the global data
On ARM, the following registers are used:
list, October 2002]
-int main (int argc, char *argv[])
+int main(int argc, char *argv[])
{
sighandler_t no_more_time;
- signal (SIGALRM, no_more_time);
- alarm (PROJECT_DEADLINE - toSec (3 * WEEK));
+ signal(SIGALRM, no_more_time);
+ alarm(PROJECT_DEADLINE - toSec (3 * WEEK));
if (available_money > available_manpower) {
- pay consultant to port U-Boot;
+ Pay consultant to port U-Boot;
return 0;
}
Subscribe to u-boot mailing list;
- if (clueless) {
- email ("Hi, I am new to U-Boot, how do I get started?");
- }
+ if (clueless)
+ email("Hi, I am new to U-Boot, how do I get started?");
while (learning) {
Read the README file in the top level directory;
- Read http://www.denx.de/twiki/bin/view/DULG/Manual ;
+ Read http://www.denx.de/twiki/bin/view/DULG/Manual;
+ Read applicable doc/*.README;
Read the source, Luke;
+ /* find . -name "*.[chS]" | xargs grep -i <keyword> */
}
- if (available_money > toLocalCurrency ($2500)) {
- Buy a BDI2000;
- } else {
+ if (available_money > toLocalCurrency ($2500))
+ Buy a BDI3000;
+ else
Add a lot of aggravation and time;
- }
-
- Create your own board support subdirectory;
- Create your own board config file;
-
- while (!running) {
- do {
- Add / modify source code;
- } until (compiles);
- Debug;
- if (clueless)
- email ("Hi, I am having problems...");
+ if (a similar board exists) { /* hopefully... */
+ cp -a board/<similar> board/<myboard>
+ cp include/configs/<similar>.h include/configs/<myboard>.h
+ } else {
+ Create your own board support subdirectory;
+ Create your own board include/configs/<myboard>.h file;
+ }
+ Edit new board/<myboard> files
+ Edit new include/configs/<myboard>.h
+
+ while (!accepted) {
+ while (!running) {
+ do {
+ Add / modify source code;
+ } until (compiles);
+ Debug;
+ if (clueless)
+ email("Hi, I am having problems...");
+ }
+ Send patch file to the U-Boot email list;
+ if (reasonable critiques)
+ Incorporate improvements from email list code review;
+ else
+ Defend code as written;
}
- Send patch file to Wolfgang;
return 0;
}