This manual is a Quick Reference for U-Boot commands
on the Lite5200B Development Platform. Each
command overview gives a description, directions for
usage, and an execution example.
A list of U-Boot commands can be accessed while in the
U-Boot prompt. Type help for a complete listing of
available commands for the development platform.
This manual is excerpted from the Denx UBOOT manual as described below. Primarily it has been made
specific to the Lite5200B board and has been reformatted. It is subject to GPL copyright restrictions as
described below and at the URL given below. You have the freedom to distribute copies of this document
in any format or to create a derivative work of it and distribute it provided that you:
•Distribute this document or the derivative work at no charge at all. It is not permitted to sell this
document or the derivative work or to include it into any package or distribution that is not freely
available to everybody.
•Send your derivative work (in the most suitable format such as sgml) to the author.
•License the derivative work with this same license or use GPL.
•Include a copyright notice and at least a pointer to the license used.
•Give due credit to previous authors and major contributors.
Use the information in this document at your own risk. Freescale disavows any potential liability for the
contents of this document. Use of the concepts, examples, and/or other content of this document is entirely
at your own risk. All copyrights are owned by their owners, unless specifically noted otherwise. Use of a
term in this document should not be regarded as affecting the validity of any trademark or service mark.
Naming of particular products or brands should not be seen as endorsements.
U-Boot Quick Reference, Rev. 0
Freescale Semiconductor2
List of Commands
4List of Commands
4.1AUTOSCR
Run script from memory:
autoscr [addr] - run script starting at addr - A valid autoscr header must be present
The autoscr command allows “shell” scripts to run under U-Boot. To create a U-Boot script image,
commands are written to a text file. Then the mkimage tool [of a suitable compiler] is used to convert this
text file into a U-Boot image using the image type script. This image can be loaded like any other image
file. Autoscr runs the commands in this image.
base - print address offset for memory commands
base off - set address offset for memory commands to 'off'
Use the base command (short: ba) to print or set a "base address" used as an address offset for all memory
commands; the default value of the base address is 0, so all addresses you enter are used unmodified.
However, when you repeatedly have to access a certain memory region (like the internal memory of some
embedded PowerPC processors) it can be very convenient to set the base address to the start of this area
and then use only the offsets:
The bdinfo command (short: bdi) prints the information that U-Boot passes about the board such as
memory addresses and sizes, clock frequencies, MAC address, etc. This type of information is generally
passed to the Linux kernel.
bmp info <imageAddr> - display image info
bmp display <imageAddr> [x y] - display image at x,y
4.5BOOTD
Boot default, i.e., run 'bootcmd'.
The bootd (short: boot) executes the default boot command, i.e. what happens when you don't interrupt
the initial countdown. This is a synonym for the run bootcmd command.
4.6BOOTM
Boot application image from memory:
bootm [addr [arg ...]] - boot application image stored in memory passing arguments 'arg
...'; when booting a Linux kernel,‘arg' can be the address of an initrd image
The bootm command is used to start operating system images. From the image header it gets information
about the type of the operating system, the file compression method used (if any), the load and entry point
addresses, etc. The command will then load the image to the required memory address, uncompressing it
on the fly if necessary. Depending on the OS it will pass the required boot arguments and start the OS at
it's entry point. The first argument to bootm is the memory address (in RAM, ROM or flash memory)
where the image is stored, followed by optional arguments that depend on the OS.
For Linux, exactly one optional argument can be passed. If it is present, it is interpreted as the start address
of a initrd ramdisk image (in RAM, ROM or flash memory). In this case the bootm command consists of
three steps: first the Linux kernel image is uncompressed and copied into RAM, then the ramdisk image
is loaded to RAM, and finally control is passed to the Linux kernel, passing information about the location
and size of the ramdisk image.
To boot a Linux kernel image without a initrd ramdisk image, the following command can be used:
=> bootm $(kernel_addr)
If a ramdisk image is used, type:
=> bootm $(kernel_addr) $(ramdisk_addr)
Both examples imply that the variables used are set to correct addresses for a kernel and a initrd ramdisk
image.
When booting images that have been loaded to RAM (for instance using TFTP download) you have to be
careful that the locations where the (compressed) images were stored do not overlap with the memory
needed to load the uncompressed kernel. For instance, if you load a ramdisk image at a location in low
memory, it may be overwritten when the Linux kernel gets loaded. This will cause undefined system
crashes.
U-Boot Quick Reference, Rev. 0
Freescale Semiconductor5
List of Commands
4.7BOOTP
Boot image via network using bootp/tftp protocol:
bootp [loadAddress] [bootfilename]
4.8CMP
Memory compare:
cmp [.b, .w, .l] addr1 addr2 (count)
The cmp command tests of the contents of two memory areas and determines whether or not the contents
of the two memory areas are identical or not. The command will either test the whole area as specified by
the 3rd (count) argument or stop at the first difference if the count argument is not specified.
The following example demonstrates comparing the memory ranges 0x100000 - 0x10002F to 0x400000 0x40002F. The contents of the two memory ranges are shown below.
word at 0x00100004 (0x50ff4342) != word at 0x40000004 (0x50504342)
Total of 1 word were the same
=>
Like most memory commands the cmp command accesses the memory in different sizes: 32 bit (long
word), 16 bit (word) or 8 bit (byte) data. If invoked just as cmp the default size (32 bit or long words) is
used; the same can be selected explicitly by typing cmp.l instead. To access memory as 16 bit (word data),
use the variant cmp.w; to access memory as 8 bit (byte data) use cmp.b. Please note that the count
argument specifies the number of data items to process, i.e. the number of long words or words or bytes to
compare.
4.9CONINFO
Print console devices and information.
The coninfo command (short: conin) displays information about the available console I/O devices.
=> conin
List of available devices:
serial 80000003 SIO stdin stdout stderr
=>
The output contains the device name, flags, and the current usage. For example, the output “serial
80000003 SIO stdin stdout stderr” means that the serial device is a system device (flag 'S') which
U-Boot Quick Reference, Rev. 0
Freescale Semiconductor6
List of Commands
provides input (flag 'I') and output (flag 'O') functionality and is currently assigned to the 3 standard I/O
streams stdin, stdout, and stderr.
4.10CP
Memory copy:
cp [.b, .w, .l] source target count
- copy memory
The memory copy command copies data in memory, starting at the “source” address to the “target”
address. The “count” field specifies then number of bytes, words or long words to be copied depending
upon the extension field of the cp command. If a “.b” extension is used, the count field specifies the
number of bytes. Likewise, if a “.w” or “.l” extension is used, the count field respectively specifies the
number of words or long words.
The cp command is used as a FLASH programming command.
The cp command can copy data from one memory element to another memory element. The source can
be RAM/ROM/FLASH/EPROM or any other type of memory. The destination or target memory is usually
RAM; however the target memory can also be FLASH or other type of programmable, non-volatile
memory. If the destination for the data is FLASH or other type of programmable, non-volatile memory,
the U-Boot monitor program will determine the type of memory used as the destination and choose the
appropriate programming algorithm.
The following is a typical sequence to program FLASH memory on the Media5200 Board using U-Boot.
As you can see, the CRC32 checksum was not only printed, but also stored at address 0x100000.
4.12DCACHE
Enable or disable data cache:
dcache [on, off]
- enable or disable data (writethrough) cache
4.13DHCP
Invoke dhcp client to obtain ip/boot params.
4.14DISKBOOT
Boot from ide device.
diskboot loadAddr dev:part
4.15ECHO
Echo args to console:
echo [args..] - echo args to console;
\c suppresses newline
The echo command echoes the arguments to the console:
=> echo The quick brown fox jumped over the lazy dog.
The quick brown fox jumped over the lazy dog.
=>
4.16EEPROM
Eeprom sub-system:
eeprom read addr off cnt
eeprom write addr off cnt
- read/write `cnt' bytes at EEPROM offset `off
4.17ERASE
Erase flash memory:
reset - No help available.
erase start end
- erase FLASH from addr 'start' to addr 'end'
erase N:SF[-SL]
- erase sectors SF-SL in FLASH bank # N
erase bank N
- erase FLASH bank # N
erase all
- erase all FLASH banks
U-Boot Quick Reference, Rev. 0
Freescale Semiconductor8
4.18FATINFO
Print information about filesystem:
fatinfo <interface> <dev[:part]> - print information about filesystem from 'dev' on
'interface'
=>
4.19FATLOAD
Load binary file from a dos filesystem:
fatload <interface> <dev[:part]> <addr> <filename> [bytes] - load binary file 'filename'
from 'dev' on 'interface'to address 'addr' from dos filesystem
=>
4.20FATLS
List files in a directory (default /):
fatls <interface> <dev[:part]> [directory]
List of Commands
4.21FLINFO
Print flash memory information:
flinfo
- print information for all FLASH memory banks
flinfo N
- print information for FLASH memory bank # N
=>
The command flinfo (short: fli) can be used to get information about the available flash memory (see Flash
Memory Commands below).
- start application at address 'addr'
passing 'arg' as arguments
U-Boot has support for so-called standalone applications. These are programs that do not require the
complex environment of an operating system to run. Instead they can be loaded and executed by U-Boot
directly, utilizing U-Boot's service functions like console I/O or malloc() and free().
This can be used to dynamically load and run special extensions to U-Boot like special hardware test
routines or bootstrap code to load an OS image from some filesystem. The go command is used to start
such standalone applications. The optional arguments are passed to the application without modification.
4.23HELP
Print online help:
help [command ...]
- show help information (for 'command')
'help' prints online help for the monitor commands.
Without arguments, it prints a short usage message for all commands.
To get detailed help information for specific commands you can type
'help' with one or more command names as arguments.
The help command (short: h or ?) prints online help. Without any arguments, the help command prints a
list of all U-Boot commands that are available in your configuration of U-Boot. You can get detailed
information for a specific command by typing its name as argument to the help command:
ide part [dev] - print partition table of one or all IDE devices
ide read addr blk# cnt
ide write addr blk# cnt - read/write `cnt' blocks starting at block `blk#' to/from
memory address `addr'
4.27ILOOP
Infinite loop on address range:
iloop chip address[.0, .1, .2] [# of objects]
- loop, reading a set of addresses
List of Commands
4.28IMD
I2C memory display:
imd chip address[.0, .1, .2] [# of objects]
- i2c memory display
4.29IMINFO
Print header information for application image:
iminfo addr [addr ...]
- print header information for application image starting at
address 'addr' in memory; this includes verification of the
image contents (magic number, header and payload checksums)
Iminfo (short: imi) is used to print the header information for images like Linux kernels or ramdisks. It
prints (among other information) the image name, type and size and verifies that the CRC32 checksums
stored within the image are OK.
=> imi 100000
## Checking Image at 00100000 ...
Image Name: Linux-2.4.4
Created: 2002-04-07 21:31:59 UTC
Image Type: PowerPC Linux Kernel Image (gzip compressed)
Data Size: 605429 Bytes = 591 kB = 0 MB
Load Address: 00000000
Entry Point: 00000000
Verifying Checksum ... OK
U-Boot Quick Reference, Rev. 0
Freescale Semiconductor11
List of Commands
The exact operation of this command can be controlled by the settings of
some U-Boot environment variables.
4.30IMLS
List all images found in flash:
imls
- Prints information about all images found at sector
boundaries in flash.
4.31IMM
I2C memory modify (auto-incrementing):
imm chip address[.0, .1, .2]
- memory modify, auto increment address
4.32IMW
Memory write (fill):
imw chip address[.0, .1, .2] value [count]
- memory write (fill)
NOTE
4.33INM
Memory modify (constant address):
inm chip address[.0, .1, .2]
- memory modify, read and keep address
4.34IPROBE
Probe to discover valid I2C chip addresses.
4.35ITEST
Return true/false on integer compare
itest [.b, .w, .l, .s] [*]value1 <op> [*]value2
4.36LOADB
Load binary file over serial line (kermit mode)
loadb [ off ] [ baud ]
- load binary file over serial line with offset 'off' and baudrate 'baud'
With kermit you can download binary data via the serial line. Here we show how to download uImage, the
Linux kernel image. Configuring the "kermit" command and then type:
U-Boot Quick Reference, Rev. 0
Freescale Semiconductor12
=> loadb 100000
## Ready for binary (kermit) download ...
Ctrl-\c
(Back at denx.denx.de)
---------------------------------------------------C-Kermit 7.0.197, 8 Feb 2000, for Linux
Copyright (C) 1985, 2000,
Trustees of Columbia University in the City of New York.
Type ? or HELP for help.
Kermit> send /bin /tftpboot/pImage
...
Kermit> connect
Connecting to /dev/ttyS0, speed 115200.
The escape character is Ctrl-\ (ASCII 28, FS)
Type the escape character followed by C to get back,
or followed by ? to see other options.
## Checking Image at 00100000 ...
Image Name: Linux-2.4.4
Created: 2002-07-02 22:10:11 UTC
Image Type: PowerPC Linux Kernel Image (gzip compressed)
Data Size: 550196 Bytes = 537 kB = 0 MB
Load Address: 00000000
Entry Point: 00000000
Verifying Checksum ... OK
List of Commands
4.37LOADS
Load S-Record file over serial line:
loads [ off ]
- load S-Record file over serial line with offset 'off'
4.38LOOP
Infinite loop on address range:
loop [.b, .w, .l] address number_of_objects
- loop on a set of addresses
The loop command reads in a tight loop from a range of memory. This is intended as a special form of a
memory test, since this command tries to read the memory as fast as possible. This command will never
terminate. There is no way to stop it but to reset the board!
The mm is a method to interactively modify memory contents. It will display the address and current
contents and then prompt for user input. If you enter a legal hexadecimal number, this new value will be
written to the address. Then the next address will be prompted. If you don't enter any value and just press
Enter, then the contents of this address will remain unchanged. The command stops as soon as you enter
any data that is not a hex number:
This tests writes to memory, thus modifying the memory contents. It will fail when applied to ROM or
flash memory. This command may crash the system when the tested memory range includes areas that are
needed for the operation of the U-Boot firmware (like exception vector code, or U-Boot's internal program
code, stack or heap memory areas).
4.42MW
Memory write (fill):
mw [.b, .w, .l] address value [count]
- write memory
The mw is a way to initialize (fill) memory with some value. When called without a count argument, the
value will be written only to the specified address. When used with a count, then a whole memory areas
will be initialized with this value:
The nm command (non-incrementing memory modify) can be used to interactively write different data
several times to the same address. This can be useful for instance to access and modify device registers:
- modify, auto increment CFG address
pci write[.b, .w, .l] b.d.f address value
- write to CFG address
4.46PING
Send icmp echo_request to network host:
ping pingAddress
U-Boot Quick Reference, Rev. 0
Freescale Semiconductor16
List of Commands
4.47PRINTENV
Print environment variables:
printenv
- print values of all environment variables
printenv name ...
- print value of environment variable 'name'
The printenv command prints one, several or all variables of the U-Boot environment. When arguments
are given, these are interpreted as the names of environment variables which will be printed with their
values:
Without arguments, printenv prints all a list with all variables in the environment and their values, plus
some statistics about the current usage and the total size of the memory available for the environment.
- protect FLASH from addr 'start' to addr 'end'
protect on N:SF[-SL]
- protect sectors SF-SL in FLASH bank # N
protect on bank N
- protect FLASH bank # N
protect on all
- protect all FLASH banks
protect off start end
- make FLASH from addr 'start' to addr 'end' writable
protect off N:SF[-SL]
- make sectors SF-SL writable in FLASH bank # N
protect off bank N
- make FLASH bank # N writable
protect off all
- make all FLASH banks writable
=>
The protect command is another complex one. It is used to set certain parts of the flash memory to
read-only mode or to make them writable again. Flash memory that is "protected" (= read-only) cannot be
written (with the cp command) or erased (with the erase command). Protected areas are marked as (RO)
(for "read-only") in the output of the flinfo command:
The actual level of protection depends on the flash chips used on your hardware, and on the
implementation of the flash device driver for this board. In most cases U-Boot provides just a simple
software-protection, i.e. it prevents you from erasing or overwriting important stuff by accident (like the
U-Boot code itself or U-Boot's environment variables), but it cannot prevent you from circumventing these
U-Boot Quick Reference, Rev. 0
Freescale Semiconductor19
List of Commands
restrictions - a nasty user who is loading and running his own flash driver code cannot and will not be
stopped by this mechanism. Also, in most cases this protection is only effective while running U-Boot, i.e.
any operating system will not know about "protected" flash areas and will happily erase these if requested
to do so.
4.49RARPBOOT
Boot image via network using RARP/TFTP protocol:
rarpboot [loadAddress] [bootfilename]
4.50REGINFO
Print register information.
4.51RESET
Perform reset of the cpu.
The reset command reboots the system.
4.52RUN
RUn commands in an environment variable:
run var [...] - run the commands in the environment variable(s) 'var'
You can use U-Boot environment variables to store commands and even sequences of commands. To
execute such a command, you use the run command:
=> setenv test echo This is a test\;printenv ipaddr\;echo Done.=> printenv test
test=echo This is a test;printenv ipaddr;echo Done.
=> run test
This is a test ipaddr=10.0.0.99
Done.
=>
You can call run with several variables as arguments, in which case these commands will be executed in
sequence:
=> setenv test2 echo This is another Test\;printenv serial#\;echo Done.
=> printenv test test2
test=echo This is a test;printenv ipaddr;echo Done.
test2=echo This is another Test;printenv serial#;echo Done.
=> run test test2
This is a test
ipaddr=10.0.0.99
Done.
This is another Test
serial#=TQM860LDDBA3-P50.203 10226122 4
Done.
=>
If a U-Boot variable contains several commands (separated by semicolon), and one of these commands
fails when you "run" this variable, the remaining commands will be executed anyway. If you execute
U-Boot Quick Reference, Rev. 0
Freescale Semiconductor20
List of Commands
several variables with one call to run, any failing command will cause "run" to terminate, i.e. the remaining
variables are not executed.
4.53SAVEENV
Save environment variables to persistent storage.
All changes you make to the U-Boot environment are made in RAM only. They are lost as soon as you
reboot the system. If you want to make your changes permanent you have to use the saveenv command to
write a copy of the environment settings to persistent storage, from where they are automatically loaded
during startup:
- set environment variable 'name' to 'value ...'
setenv name
- delete environment variable 'name'
To modify the U-Boot environment you have to use the setenv command. When called with exactly one
argument, it will delete any variable of that name from U-Boot's environment, if such a variable exists.
Any storage occupied for such a variable will be automatically reclaimed:
=> printenv foo
foo=This is an example value.
=> setenv foo
=> printenv foo
## Error: "foo" not defined
=>
When called with more arguments, the first one will again be the name of the variable, and all following
arguments will (concatenated by single space characters) form the value that gets stored for this variable.
New variables will be automatically created, existing ones overwritten.
=> printenv bar
## Error: "bar" not defined
=> setenv bar This is a new example.
=> printenv bar
bar=This is a new example.
=>
Remember standard shell quoting rules when the value of a variable shall contain characters that have a
special meaning to the command line parser (like the $ character that is used for variable substitution or
U-Boot Quick Reference, Rev. 0
Freescale Semiconductor21
List of Commands
the semicolon which separates commands). Use the backslash (\) character to escape such special
characters.
There is no restriction on the characters that can be used in a variable name except the restrictions imposed
by the command line parser (like using backslash for quoting, space and tab characters to separate
arguments, or semicolon and newline to separate commands). Even strange input like "=-/|()+=" is a
perfectly legal variable name in U-Boot.
A common mistake is to write
setenv name=value
instead of
setenv name value
There will be no error message, which lets you believe everything went OK, but it didn't: instead of setting
the variable name to the value you tried to delete a variable with the name name=value. This is probably
not what you intended. Always remember that name and value have to be separated by space and/or tab
characters.
4.55SLEEP
Delay execution for some time:
sleep N - delay execution for N seconds (N is _decimal_ #)
The sleep command pauses execution for the number of seconds given as the argument:
=> date ; sleep 5 ; date
Date: 2002-04-07 (Sunday) Time: 23:15:40
Date: 2002-04-07 (Sunday) Time: 23:15:45
=>
4.56TFTPBOOT
Boot image via network using TFTP protocol:
tftpboot [loadAddress] [bootfilename]
4.57USB
USB sub-system:
usb reset - reset (rescan) USB controller
usb stop [f] - stop USB [f]=force stop
usb tree - show USB device tree
usb info [dev] - show available USB devices
usb scan - (re-)scan USB bus for storage devices
usb device [dev] - show or set current USB storage device
usb part [dev] - print partition table of one or all USB storage devices
usb read addr blk# cnt - read `cnt' blocks starting at block `blk#'
U-Boot Quick Reference, Rev. 0
Freescale Semiconductor22
List of Commands
to memory address `addr'
4.58USBBOOT
Boot from USB device:
usbboot loadAddr dev:part
4.59VERSION
Print monitor version:
You can print the version and build date of the U-Boot image running on your system using the version
command (short: vers):
=> version
U-Boot 1.1.3 (Apr 25 2006 - 22:09:33)
=>
U-Boot Quick Reference, Rev. 0
Freescale Semiconductor23
How to Reach Us:
Home Page:
www.freescale.com
E-mail:
support@freescale.com
USA/Europe or Locations Not Listed:
Freescale Semiconductor
Technical Information Center, CH370
1300 N. Alma School Road
Chandler, Arizona 85224
+1-800-521-6274 or +1-480-768-2130
support@freescale.com
Freescale Semiconductor Japan Ltd.
Headquarters
ARCO Tower 15F
1-8-1, Shimo-Meguro, Meguro-ku,
Tokyo 153-0064
Japan
0120 191014 or +81 3 5437 9125
support.japan@freescale.com
Asia/Pacific:
Freescale Semiconductor Hong Kong Ltd.
Technical Information Center
2 Dai King Street
Tai Po Industrial Estate
Tai Po, N.T., Hong Kong
+800 2666 8080
support.asia@freescale.com
For Literature Requests Only:
Freescale Semiconductor Literature Distribution Center
P.O. Box 5405
Denver, Colorado 80217
1-800-441-2447 or 303-675-2140
Fax: 303-675-2150
LDCForFreescaleSemiconductor@hibbertgroup.com
Information in this document is provided solely to enable system and software
implementers to use Freescale Semiconductor products. There are no express or
implied copyright licenses granted hereunder to design or fabricate any integrated
circuits or integrated circuits based on the information in this document.
Freescale Semiconductor reserves the right to make changes without further notice to
any products herein. Freescale Semiconductor makes no warranty, representation or
guarantee regarding the suitability of its products for any particular purpose, nor does
Freescale Semiconductor assume any liability arising out of the application or use of any
product or circuit, and specifically disclaims any and all liability, including without
limitation consequential or incidental damages. “Typical” parameters that may be
provided in Freescale Semiconductor data sheets and/or specifications can and do vary
in different applications and actual performance may vary over time. All operating
parameters, including “Typicals”, must be validated for each customer application by
customer’s technical experts. Freescale Semiconductor does not convey any license
under its patent rights nor the rights of others. Freescale Semiconductor products are
not designed, intended, or authorized for use as components in systems intended for
surgical implant into the body, or other applications intended to support or sustain life,
or for any other application in which the failure of the Freescale Semiconductor product
could create a situation where personal injury or death may occur. Should Buyer
purchase or use Freescale Semiconductor products for any such unintended or
unauthorized application, Buyer shall indemnify and hold Freescale Semiconductor and
its officers, employees, subsidiaries, affiliates, and distributors harmless against all
claims, costs, damages, and expenses, and reasonable attorney fees arising out of,
directly or indirectly, any claim of personal injury or death associated with such
unintended or unauthorized use, even if such claim alleges that Freescale
Semiconductor was negligent regarding the design or manufacture of the part.
Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc.
All other product or service names are the property of their respective owners.
The PowerPC name is a trademark of IBM Corp. and is used under license.