(1)局部变量定义
#定义一个二重函数指针(typedef int (init_fnc_t) (void);)
init_fnc_t **init_fnc_ptr;
char *s;
int mmc_exist = 0;
#if !defined(CFG_NO_FLASH) || defined (CONFIG_VFD) || defined(CONFIG_LCD)
ulong size;
#endif
#if defined(CONFIG_VFD) || defined(CONFIG_LCD)
unsigned long addr;
#endif
#if defined(CONFIG_BOOT_MOVINAND)
uint *magic = (uint *) (PHYS_SDRAM_1);
#endif
/* Pointer is writable since we allocated a register for it */
#ifdef CONFIG_MEMORY_UPPER_CODE /* by scsuh */
ulong gd_base;
gd_base = CFG_UBOOT_BASE + CFG_UBOOT_SIZE - CFG_MALLOC_LEN - CFG_STACK_SIZE - sizeof(gd_t);
#ifdef CONFIG_USE_IRQ
gd_base -= (CONFIG_STACKSIZE_IRQ+CONFIG_STACKSIZE_FIQ);
#endif
(2)gd_t
#定义一个gd_t类型 的全局指变量,将这个变量放在r8寄存器中
#define DECLARE_GLOBAL_DATA_PTR register volatile gd_t *gd asm ("r8")
#gd_t定义了很多全局变量,这些变量是uboot要使用的
typedef struct global_data {
#bd_t是一个结构体里面存放的是开饭板的板级信息
bd_t *bd;
#定义一个存放标志位的变量
unsigned long flags;
#波特率变量
unsigned long baudrate;
#控制台变量
unsigned long have_console; /* serial_init() was called */
#重定位偏移量变量
unsigned long reloc_off; /* Relocation Offset */
#环境变量相关的变量
unsigned long env_addr; /* Address of Environment struct */
#判断环境变量是否使用的变量
unsigned long env_valid; /* Checksum of Environment valid? */
#缓存起始地址变量
unsigned long fb_base; /* base address of frame buffer */
#ifdef CONFIG_VFD
unsigned char vfd_type; /* display type */
#endif
#if 0
unsigned long cpu_clk; /* CPU clock in Hz! */
unsigned long bus_clk;
phys_size_t ram_size; /* RAM size */
unsigned long reset_status; /* reset status register at boot */
#endif
void **jt; /* jump table */
} gd_t;
(3)bd_t
typedef struct bd_info {
#波特率变量
int bi_baudrate; /* serial console baudrate */
#IP地址变量
unsigned long bi_ip_addr; /* IP Address */
#net地址变量
unsigned char bi_enetaddr[6]; /* Ethernet adress */
#环境变量指针
struct environment_s *bi_env;
#开发板机器码
ulong bi_arch_number; /* unique id for this board */
#启动参数地址变量
ulong bi_boot_params; /* where this board expects params */
struct /* RAM configuration */
{
ulong start;
ulong size;
} bi_dram[CONFIG_NR_DRAM_BANKS];
#bi_dram保存开发板的DRAM信息
#ifdef CONFIG_HAS_ETH1
/* second onboard ethernet port */
unsigned char bi_enet1addr[6];
#endif
} bd_t;