uboot内存空间分布

config.mk:
TEXT_BASE = 0x63f80000


u-boot.lds:
ENTRY(_start)


MEMORY
{
    ram_ro : org = 0x63f80000, l = 512K
    ram_rw : org = 0x64000000, l = 1024K
}


SECTIONS
{
. = ALIGN(4);
.text :
{
 cpu/arm1176/start.o (.text)
 *(.text)
} > ram_ro
. = ALIGN(4);
.rodata : { *(.rodata) } > ram_ro
.rodata.str1.4 : { *(.rodata.str1.4) } > ram_ro
. = ALIGN(4);
.data : { *(.data) } > ram_rw
. = ALIGN(4);
.got : { *(.got) } > ram_rw
.got.plt : { *(.got.plt) } > ram_rw
.glue_7 : { *(.glue_7) } > ram_rw
.glue_7t : { *(.glue_7t) } > ram_rw


. = .;
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) } > ram_rw
__u_boot_cmd_end = .;


. = ALIGN(4);
__bss_start = .;
.bss : { *(.bss) } > ram_rw
_end = .;
}


config.h:
#define CONFIG_SYS_PHY_UBOOT_BASE       (PHYS_SDRAM_1 + 0x03f80000)
#define CONFIG_ENV_SIZE         0x20000


start.s:
.globl _start
_start: b reset
_TEXT_BASE:
.word TEXT_BASE
_TEXT_PHY_BASE:
    .word CONFIG_SYS_PHY_UBOOT_BASE
.globl _armboot_start
_armboot_start:
.word _start
.globl _bss_start
_bss_start:
.word __bss_start
.globl _bss_end
_bss_end:
.word _end
reset:
/*
* set the cpu to SVC32 mode
*/
mrs r0, cpsr
bic r0, r0, #0x3f
orr r0, r0, #0xd3
msr cpsr, r0
adr r1, mmu_disable_phys

mmu_disable_phys:
clear_bss:
ldr r0, _bss_start /* find start of bss segment        */
ldr r1, _bss_end /* stop here                        */
mov r2, #0 /* clear                            */


clbss_l:
str r2, [r0] /* clear loop...                    */
add r0, r0, #4
cmp r0, r1
ble clbss_l


ldr pc, _start_armboot


_start_armboot:
.word start_armboot

uboot内存空间分布_第1张图片

U-Boot 2009.08 (Jan 10 2014 - 14:37:07)
_armboot_start:63F80000,_bss_start:64014398,_bss_end:64060A1D
Version:V1.1
RAM Configuration:
Bank #0: 60000000 128 MB
gd_t len:36,bd_t len:28
LCD panel info: 800 x 480, 16 bit/pix,addr:0x64061000
Reserving 752k for LCD Framebuffer at: 63fa5000
drv_lcd_init lcd_base:0x64061000
[LCD] Initializing LCD frambuffer at 64061000

### main_loop: bootcmd="disk readboot 0x60007FC0; bootm 0x60007FC0"

[RUN_COMMAND] flag:0x0,cmd[63f40014]="disk readboot 0x60007FC0; bootm 0x60007FC0"
[PROCESS_SEPARATORS] disk readboot 0x60007FC0; bootm 0x60007FC0

token: "disk readboot 0x60007FC0"

Read uImage!
.kernel size is 3732992 bytes(3MB)

.................................................

token: " bootm 0x60007FC0"
++++do_bootm,argc:2,argv0:bootm,argv1:0x60007FC0

*  kernel: cmdline image address = 0x60007fc0

## Booting kernel from Legacy Image at 60007fc0 ...
   Image Name:   Linux-2.6.32.9
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    3732928 Bytes =  3.6 MB
   Load Address: 60008000
   Entry Point:  60008000
   kernel data at 0x60008000, len = 0x0038f5c0 (3732928)
## No init Ramdisk
   ramdisk start = 0x00000000, ramdisk end = 0x00000000
   Loading Kernel Image ... OK
OK
   kernel loaded at 0x60008000, end = 0x603975c0
images.os.start = 0x60007FC0, images.os.end = 0x603975c0
images.os.load = 0x60008000, load_end = 0x603975c0

## Transferring control to Linux (at address 60008000) ...

Starting kernel ...

以下为kernel信息:

Uncompressing Linux................................................................................................................................................................................................................................................ done, booting the kernel.
Linux version 2.6.32.9 (6666@none-release build) (gcc version 4.4.1 (Sourcery G++ Lite 2010q1-202) ) #5 PREEMPT Thu May 30 14:53:50 CST 2013
CPU: ARMv6-compatible processor [410fb767] revision 7 (ARMv6TEJ), cr=00c5387f
CPU: VIPT nonaliasing data cache, VIPT nonaliasing instruction cache
Machine: 7777

你可能感兴趣的:(linux系统)