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张图片](http://img.e-com-net.com/image/info8/2e6622398e9b4e3cabec60fc9d517153.jpg)
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