51 phys_size_t ram_size; /* RAM size */ 52 unsigned long reset_status; /* reset status register at boot */ 53 #endif 54 void **jt; /* jump table */ 55 } gd_t; 67 #define DECLARE_GLOBAL_DATA_PTR register volatile gd_t *gd asm ("r8") 这个声明告诉编译器使用寄存器r8来存储gd...
51 phys_size_t ram_size; /* RAM size */ 52 unsigned long reset_status; /* reset status register at boot */ 53 #endif 54 void **jt; /* jump table */ 55 } gd_t; 67 #define DECLARE_GLOBAL_DATA_PTR register volatile gd_t *gd asm ("r8") 这个声明告诉编译器使用寄存器r8来存储gd...
phys_size_t ram_size;/* RAM size */ unsigned long mon_len;/* monitor len */ unsigned long irq_sp;/* irq stack pointer */ unsigned long start_addr_sp;/* start_addr_stackpointer */ unsigned long reloc_off; struct global_data *new_gd;/* relocated global data */ #ifdef CONFIG_DM ...
data = addr + sizeof(image_header_t);/越过uboot的头,定位到uboot的净荷开始/ fn = ntohl(hdr->ih_load);/*定位位于hdr->ih_load位置的起止程序,并执行之。这个程序就是start/ (fn)(gd->ram_size); 可见,bootstrap中会定位并剥掉uboot的image_header_t的头,这样就会调位到start。 下面,分析_st...
phys_size_t ram_size;/* RAM size */ unsigned long mon_len;/* monitor len */ unsigned long irq_sp;/* irq stack pointer */ unsigned long start_addr_sp;/* start_addr_stackpointer */ unsigned long reloc_off; struct global_data *new_gd;/* relocated global data */ ...
#if!defined(CONFIG_X86)&&!defined(CONFIG_ARM)&&!defined(CONFIG_ARM64)gd=new_gd;#endif #ifdefCONFIG_NEEDS_MANUAL_RELOCfor(i=0;i<ARRAY_SIZE(init_sequence_r);i++)init_sequence_r[i]+=gd->reloc_off;#endifif(initcall_run_list(init_sequence_r))hang();/* NOTREACHED - run_main_loop()...
env_init():设置gd的成员变量 init_baudrate():设置波特率 dram_init():设置gd->ram_size= 0x04000000(64MB) 代码语言:javascript 复制 addr=CONFIG_SYS_SDRAM_BASE+gd->ram_size;// addr=0x34000000// CONFIG_SYS_SDRAM_BASE: SDRAM基地址,为0X30000000// gd->ram_size: 等于0x04000000#if!(defined(...
gd->ram_size = 0x8000000; #endif 返回0; } int dram_init_banksize (void) { /*组0声明 DDR 低电平区域中可用的内存*/ gD->bD->bi_dram[0].start = CONFIG_SYS_SDRAM_base; gD->bD->bi_dram[0].size = 0x20000000; gd->ram_size = 0x20000000; ...
} gd_t; 这个数据结构是系统初始化的最小全局变量值,主要在 boot 引导的早期使用,直到我们设置好内存控制器并能够访问 RAM。注意,保证CFG_GBL_DATA_SIZE大于sizeof(gd_t)。 对于其中的变量,我们进行重点分析。bd_t *bd;这句话中,结构体bd_t的内容如下: ...
1. 硬件可能会升级,但uboot并不能保证跟硬件同步升级,比如uboot是在EMMC上的,所以并不太关注SD卡...