u boot or universal bootloader

25
The World Leader in High Performance Signal Processing Solutions Das U-Boot

Upload: satpal-parmar

Post on 24-May-2015

18.564 views

Category:

Technology


9 download

DESCRIPTION

U Boot or Universal Bootloader

TRANSCRIPT

Page 1: U Boot or Universal Bootloader

The World Leader in High Performance Signal Processing Solutions

Das U-Boot

Page 2: U Boot or Universal Bootloader

2

Boot Terminology

Loader Program that moves bits from

non volatile memory to memory and then transfers CPU control to the newly “loaded” bits (executable)

Bootloader / Bootstrap Program that loads the

“first program” (the kernel) Boot PROM

Persistent code that is “already loaded”on power-up

Boot Manager Program that lets you choose

the “first program” to load

Page 3: U Boot or Universal Bootloader

3

What’s a Loader?

A program that moves bits from flash or disk to memory and then transfers control to the newly loaded bits (executable).

cpu

flash

bits

memory

bits

loader

Page 4: U Boot or Universal Bootloader

4

Loading through Das U-boot

SDRAMMemory

SDRAMMemory

RootFile-System

Kernel

ROMROM

Kernel Image

Bootloaderuboot

Root File System

Reset

Bootloaderuboot

CPUCPU

BMODE 00

ByPass PROM

0x20000000

0x1000

Optional

compressed

Page 5: U Boot or Universal Bootloader

5

Das U-Boot The "Universal Bootloader" ("Das U-Boot") is a monitor/MicroOS program.

Started in October of 1999 by Dan Malek, supported by Wolfgang Denk (Denx Engineering) as of July 2000

Free Software: full source code under GPL Hosted on SourceForge: http://sourceforge.net/projects/u-boot ·

Production quality: Used as default boot loader by several board vendors ·

Portable and easy to port and to debug

Many supported architectures: PPC, ARM, MIPS, x86, m68k, NIOS, Microblaze, and BlackfinMore than 216 boards supported by public source tree

Page 6: U Boot or Universal Bootloader

6

Blackfin U-boot features

Page 7: U Boot or Universal Bootloader

7

Where to get U-boot sources

Page 8: U Boot or Universal Bootloader

8

User Interface (1)

U-Boot uses a simple command line interface (CLI), usually over a serial console port.

Two different command interpreters are available:Simple CLI · Bourne compatible shell (HUSH shell from Busybox) ·

Configuration parameters and commands / command sequences (scripts !) can be stored in "environment variables" which can be saved to non-volatile storage (flash, EEPROM, NVRAM, etc.)

Page 9: U Boot or Universal Bootloader

9

User Interface (2) U-Boot supports many different ways to load

and boot an image. Serial Port: "loads" (S-Record), "loadb"

(Kermit binary protocol) Ethernet: "tftp", "bootp", "dhcp", "nfs“ Harddisk, CDROM: "ide read" CompactFlash card etc.: "ide read" USB Mass Storage Device: "usb read" SCSI Disk and CDROM: "scsi read" NAND flash with JFFS2 filesystem: "nboot" Disk on Chip: "doc read" PCI Bus: copy

Commands Environment Variables

Commands Printenv saveenv Askenv setenv run Bootd

Memory Commands Flash Memory

Commands Execution Control

Commands

Network Commands Bootp Cdp dhcp loadb oads Nfs ping rarpboot tftpboot

Information Commands bdinfo coninfo flinfo iminfo imls help

Page 10: U Boot or Universal Bootloader

10

Boot Image

Image:Header + Payload

Header:Creation TimestampData Load AddressEntry Point Address Data CRC ChecksumOperating SystemCPU architectureImage TypeCompression TypeImage Name

Actions:test CPU architecture and OStest checksum (optional)if compressed, uncompresscopy to load addressprepare boot argumentsstart at entry point

Page 11: U Boot or Universal Bootloader

11

Image Types

Standalone Programs

OS Kernel Images

RAMDisk Images

Multi-File Images

Firmware Images

Script files

Page 12: U Boot or Universal Bootloader

12

Configuring U-Boot

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 STAMP board, all configuration settings are in

"include/configs/stamp.h".

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

cd u-boot make stamp_config

For configuration details, check the U-Boot README and the Wiki – docs.blackfin.uclinux.org

Page 13: U Boot or Universal Bootloader

13

Building U-Boot (1/2)

Building U-Boot has been tested in x86 cross environments (running RedHat 6.x and 7.x Linux, SuSE 9.0 and 9.1 Linux on x86).

It is assumed that you have the GNU cross compiling tools available in your path and named with a prefix of “bfin-elf". If this is not the case, you must change the definition of CROSS_COMPILE in Makefile.

Page 14: U Boot or Universal Bootloader

14

Building U-Boot (2/2)

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: cd u-boot make clean; make mrpropermake stamp_configmake all

You should get some working U-Boot images ready for download to / installation on your system: "u-boot.bin" is a raw binary image"u-boot" is an image in ELF binary format"u-boot.srec" is in Motorola S-Record format

Page 15: U Boot or Universal Bootloader

15

U-Boot Source Code

Official U-boot Source Code is at:http://sourceforge.net/projects/u-boot

Unofficial Blackfin Branch is at:http://blackfin.uclinux.org/projects/uboot533

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".

Page 16: U Boot or Universal Bootloader

16

More U-Boot information

The U-Boot project is hosted at Sourceforge: http://sourceforge.net/projects/u-boot

There is a pretty active u-boot-users mailing list.

The Mailing list archive can be viewed at sourceforge.net http://lists.sourceforge.net/lists/listinfo/u-boot-users/

The DENX U-Boot and Linux Guide is a Wiki based documentation documenting U-Boot and its interaction with Linux. It can be viewed (and improved) at www.denx.de. The whole DULG web packed into a single HTML page or a PDF file is also available (PowerPC is the example)

The current README file can be viewed through viewcvs at sourceforge.net

Page 17: U Boot or Universal Bootloader

17

Backup slides

Page 18: U Boot or Universal Bootloader

18

Das U-Boot

IntroductionPorting GuideDirectory Structure

Material in this presentation is taken from the project README file, and from http://www.denx.de/twiki/bin/view/UBootdoc/Presentation and http://www.denx.de/twiki/bin/view/DULG/Manual

Page 19: U Boot or Universal Bootloader

19

Supported Platforms

Architecture ProcessorNumber of

Boards

PPC 5xx 2

  5xxx 6

  8xx 71

  824x 15

  826x 26

  85xx 3

  7xx/74xx 11

  4xx 38

ARM StrongARM 5

  ARM720T 3

  ARM92xT 11

Architecture ProcessorNumber of

Boards

ARM (cont) S3C44B0 1

  AT91RM9200 1

  XScale 8

x86 SC520 2

m68k Coldfire 2

MIPS32 4Kc 2

  Au1x00 3

MIPS64 5Kc 1

NIOS32   3

Microblaze   1

Blackfin BF533/BF535 3

Page 20: U Boot or Universal Bootloader

20

Das U-boot Design Principles

Easy to port to new architectures, new processors, and new boards

Easy to debug: serial console output as soon as possible · Features and commands configurable · As small as possible · As reliable as possible

Page 21: U Boot or Universal Bootloader

21

Image Support

Although U-Boot can support any OS or standalone application, the main focus has always been on Linux during the design of U-Boot.

U-Boot includes many features that so far have been part of some special "boot loader" code within the Linux kernel. Also, any "initrd" images to be used are no longer part of one big Linux image; instead, kernel and "initrd" are separate images.

Page 22: U Boot or Universal Bootloader

22

U-Boot Basic Command Set (1/4)

Information Commands bdinfo - print Board Info structure ¨ coninfo - print console devices and

informations flinfo - print FLASH memory information iminfo - print header information for

application image imls - list all images found in flash help - print online help

Memory Commands base - print or set address offset crc32 - checksum calculation cmp - memory compare cp - memory copy md - memory display mm - memory modify (auto-

incrementing) mtest - simple RAM test mw - memory write (fill) nm - memory modify (constant address) loop - infinite loop on address range

Flash Memory Commands cp - memory copy (program flash) flinfo - print FLASH memory information erase - erase FLASH memory protect - enable or disable FLASH write

protection

Execution Control Commands autoscr - run script from memory bootm - boot application image from

memory bootelf - Boot from an ELF image in

memory bootvx - Boot vxWorks from an ELF image go - start application at address 'addr'

Page 23: U Boot or Universal Bootloader

23

U-Boot Basic Command Set (2/4)

Network Commands bootp - boot image via network using

BOOTP/TFTP protocol cdp - Perform Cisco Discovery Protocol

network configuration dhcp - invoke DHCP client to obtain

IP/boot params loadb - load binary file over serial line

(kermit mode) loads - load S-Record file over serial line nfs - boot image via network using NFS

protocol ping - send ICMP ECHO_REQUEST to

network host rarpboot- boot image via network using

RARP/TFTP protocol tftpboot- boot image via network using

TFTP protocol

Environment Variables Commands printenv- print environment variables saveenv - save environment variables to

persistent storage askenv - get environment variables from

stdin setenv - set environment variables run - run commands in an environment

variable bootd - boot default, i.e., run 'bootcmd'

Page 24: U Boot or Universal Bootloader

24

U-Boot Basic Command Set (3/4)

Filesystem Support (FAT, cramfs, JFFS2, Reiser) chpart - change active partition fsinfo - print information about

filesystems fsload - load binary file from a filesystem

image ls - list files in a directory (default /) fatinfo - print information about filesystem fatls - list files in a directory (default /) fatload - load binary file from a dos

filesystem nand - NAND flash sub-system reiserls- list files in a directory (default /) reiserload- load binary file from a Reiser

filesystem

Special Commands i2c - I2C sub-system doc - Disk-On-Chip sub-system dtt - Digital Thermometer and Themostat eeprom - EEPROM sub-system fpga - FPGA sub-system ide - IDE sub-system kgdb - enter gdb remote debug mode diskboot- boot from IDE device icache - enable or disable instruction cache dcache - enable or disable data cache diag - perform board diagnostics (POST

code) log - manipulate logbuffer pci - list and access PCI Configuraton

Space regdump - register dump commands usb - USB sub-system sspi - SPI utility commands

Page 25: U Boot or Universal Bootloader

25

U-Boot Basic Command Set (4/4)

Miscellaneous Commands bmp - manipulate BMP image data ¨ date - get/set/reset date & time ¨ echo - echo args to console ¨ exit - exit script ¨ kbd - read keyboard status ¨ in - read data from an IO port ¨ out - write datum to IO port ¨ reset - Perform RESET of the CPU ¨ sleep - delay execution for some time ¨ test - minimal test like /bin/sh ¨ version - print monitor version ¨ wd - check and set watchdog ¨ ? - alias for 'help' ¨