在继续分析之前,先回顾一下当前相关寄存器的值、内存空间的使用情况和相关变量的值的情况。
Registers:
r0 = 0
r9 = 0x42BF_FF60 @ &gd
r13 = &( bl mmu_turn_on ) @ /uboot-root/arch/arm/cpu/slsiap/s5p4418/start.S
sp = 0x42BF_FF60
lr = &( bl board_init_f ) @ /uboot-root/arch/arm/cpu/slsiap/s5p4418/start.S
RAM:
0xC000_0000
-
0x5000_0000(RAM_TOP)
-
0x4FFE_F800
UBOOT(Reserve 478K)
0x4FF7_8000
-
0x4FFF_4000
TLB table
0x4FFF_0000
-
0x4DF9_8000
malloc(Reserve 32768K)
0x4DF7_8000
Board Info(Reserve 80B) = gd->bd
0x4DF7_7FB0
New GD
0x4DF7_7F10
IRQ
0x4DF7_7F00(IRQ_SP)
-
0x4DF7_7EF0(START_ADDR_SP)
UBOOT
0x42C0_0000
GD
0x42BF_FF60
UBoot-Stack
0x4000_0000
gd值:
bd_t *bd
{
unsigned long bi_memstart = 0
phys_size_t bi_memsize = 0
unsigned long bi_flashstart = 0
unsigned long bi_flashsize = 0
unsigned long bi_flashoffset = 0
unsigned long bi_sramstart = 0
unsigned long bi_sramsize = 0
unsigned long bi_bootflags = 0
unsigned long bi_ip_addr = 0
unsigned char bi_enetaddr[6] = 0
unsigned short bi_ethspeed = 0
unsigned long bi_intfreq = 0
unsigned long bi_busfreq = 0
ulong bi_arch_number = 0
ulong bi_boot_params = 0
struct bi_dram[1]
{
ulong start = 0
ulong size = 0
}
}
unsigned long flags = 0
unsigned int baudrate = 115200
unsigned long cpu_clk = 0
unsigned long bus_clk = 0
unsigned long pci_clk = 0
unsigned long mem_clk = 0
unsigned long have_console = 1
unsigned long env_addr = &default_environment[0]
unsigned long env_valid = 1
unsigned long ram_top = 0x5000_0000
unsigned long relocaddr = 0x4FF7_8000
phys_size_t ram_size = 0x1000_0000
unsigned long mon_len = 0x0007_7988
unsigned long irq_sp = 0x4DF7_7F00
unsigned long start_addr_sp = 0x4df7_7EF0
unsigned long reloc_off = 0
struct global_data *new_gd = 0x4df7_7f10
const void *fdt_blob = 0
void *new_fdt = 0
unsigned long fdt_size = 0
void **jt = 0
char env_buf[32] = 0
unsigned long timebase_h = 0
unsigned long timebase_l = 0
struct arch_global_data arch
{
unsigned long timer_rate_hz = 0
unsigned long tbu = 0
unsigned long</