You are on page 1of 4

(Bootloader) CPU

Bootloader DENX Bootloader UBOOT U-BOOT AT91RM9200


BootloaderU-BOOT
Abstract Boot Load Program (Bootloader) is the first running program after powering up an Embedded Board.
Bootloader performs the specific hardware initialization and sets up the memory space map and other tasks
before the Embedded Operating System kernel image executes. After that , it provides the boot parameters for the
kernel and starts up the kernel. U-Boot is a powerful Bootloader. This paper analyses the U-Boot section the codes
of startup process in detail in an Embedded System board based on the AT91RM9200 CPU.
Keywords embedded system, Bootloader, U-BOOT

1.
Linux PC
Linux

Linux Bootloader

U-BOOT
Bootloader

ARM MIPS [1]

1.

Bootloader
CPU
Bootloader

2.

Bootloader
, 1 [2]
BootLoader

3. Bootloader
Bootloader

Bootloader

RAM
1

2
Boot Loader
Boot Loader
Boot
Loader
RAM
Boot Loader Flash

Flash

Boot Loader

3.
4.

5.

RAM RAM

Linux2.4.x

Linux Bootloader
ATAG_COREATAG_MEMATAG_
RAMDISKATAG_INITRD

boot

4. Bootloader
Bootloader
Bootloader
Single StageMultiStage Bootloader

Bootloader
stage 1 stage 2 [3]
CPU stage1

stage2 C

4.1. Stage1
1.

2
3
4

(1)
(2) CPU
(3) RAM
(4) LED UART
(5) stage2 RAM
stage2 RAM
SP C
stage2 C

4.2. Stage2
1.
2.

Flash
RAM

CPU

CPU /
Cache
stage2 RAM
SP
stage2

shell

shell

2. BootLoader

3
4.3. Boot loader
Bootloader 2

5. U-BOOT

6.2. U-BOOT
U-BOOT boot
CPU 2 AT91RM9200

U-Boot DENX
CPU Bootloader , PowPC,ARM
MIPSm68 K ,
U2Boot GPL () ,
U-BOOT 1

/board/
at91rm9200dk

1. U-BOOT

/cpu/ at91rm9200

NFSUSB

FLASH SDRAM
EEPROMLCDUSBPCI
FLASHSDRAM
CPU

2.U-BOOT

/common

/drivers
/fs
/include

6. U-BOOT

AT91RM9200
at91rm9200dk.c, flash.c
SDRAMFLASH
cpu

start.S

cmd_boot.c
cmd_bootm.c

include/configs/at91rm9200dk.h
at91rm9200

6.1.

6.3. U-Boot

AT91RM9200 Atmel
ARM920T

180MHz
LINUX SDRAM
Burst FlashEthernet MAC
10/100 Base-TUSB2.0 12Mbit/sSPI
TWI 4 USART 3 SSC
AT91RM9200

1. FLASH SPANSION
2M S29GL064M
2. SDRAM HYUNDAI
32M HY57V281620
3. DAVICOM DM9161
4.
5. 18MHzCPU 180M

U-Boot
stage1 stage2 stage1
/cpu/ at91rm9200/start.S stage2 C
,/lib_arm/board.c
start-armboot()
6.4.
board\ at91rm9200dk\ u-boot.lds
start
.text
:
{
cpu/at91rm9200/start.o (.text)
*(.text)
}
start cpu\ at91rm9200\ start.S

.globl _start
_start:b
reset
ldr pc, _undefined_instruction /*arm

reset/* reset
mrs r0,cpsr
/*
bic r0,r0,#0x1f /* CPRS CPU
orr r0,r0,#0x13 /* SVC32
/* Cache RAM
/* RAM
/* BOOT RAM

copy_loop
ldmia r0!,{r3-r10} /*r0= flash
stmia r!,{r3-r10} /*r1=
cmp r0,r2
/*r2=
ble copy_loop
ldr r0, _armboot_end /* sp
/*
add r0, r0, #CONFIG_STACKSIZE
sub sp, r0, #12
ldr pc,_start_armboot /* C
/*_start_armboot
C lib_arm/board.c

start_armboot () main_loop ()

7.
Bootloader
UBOOT

AT91RM9200 U-BOOT

[1] The Denx U-Boot and Linux Guide.


Http://www.denx.de/twiki/bin/view/DULG/Mannu
al, 2004-08-12.
[2] . Bootloader
[EB/OL].http://www900.ibm.com/developmentworks/cn/linux/1btloodex.2003-12.
[3] .
SkyEye ARM
. : , 2004,
136-201
[4] .. :
,2003.