start_armboot函数分析1

(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;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值