u-boot下的两个重要数据:bd_t和gd_t

来源:互联网 发布:windows文件夹加密 编辑:程序博客网 时间:2024/04/27 12:32

[u-boot: v2013.04]

[Author: Bo Shen <voice.shen@gmail.com>]


众所周知,u-boot中有两个重要数据结构,一个是bd_t,另外一个是gd_t。下面分别介绍这两个数据结构。

1. bd_t 

此数据结构保存board相关的信息。

定义:<arch/arm/include/asm/u-boot.h>

其具体结构如下:

typedef struct bd_info {unsigned intbi_baudrate;/* serial console baudrate */        ulong        bi_arch_number;/* unique id for this board */        ulong        bi_boot_params;/* where this board expects params */unsigned longbi_arm_freq; /* arm frequency */unsigned longbi_dsp_freq; /* dsp core frequency */unsigned longbi_ddr_freq; /* ddr frequency */    struct/* RAM configuration */    {ulong start;ulong size;    }bi_dram[CONFIG_NR_DRAM_BANKS];} bd_t;

2. gd_t

定义:<include/asm-generic/global_data.h>

其具体结构如下:

typedef struct global_data {bd_t *bd;unsigned long flags;unsigned int baudrate;unsigned long cpu_clk;/* CPU clock in Hz!*/unsigned long bus_clk;/* We cannot bracket this with CONFIG_PCI due to mpc5xxx */unsigned long pci_clk;unsigned long mem_clk;#if defined(CONFIG_LCD) || defined(CONFIG_VIDEO)unsigned long fb_base;/* Base address of framebuffer mem */#endif#if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER)unsigned long post_log_word;  /* Record POST activities */unsigned long post_log_res; /* success of POST test */unsigned long post_init_f_time;  /* When post_init_f started */#endif#ifdef CONFIG_BOARD_TYPESunsigned long board_type;#endifunsigned long have_console;/* serial_init() was called */#ifdef CONFIG_PRE_CONSOLE_BUFFERunsigned long precon_buf_idx;/* Pre-Console buffer index */#endif#ifdef CONFIG_MODEM_SUPPORTunsigned long do_mdm_init;unsigned long be_quiet;#endifunsigned long env_addr;/* Address  of Environment struct */unsigned long env_valid;/* Checksum of Environment valid? *//* TODO: is this the same as relocaddr, or something else? */unsigned long dest_addr;/* Post-relocation address of U-Boot */unsigned long dest_addr_sp;unsigned long ram_top;/* Top address of RAM used by U-Boot */unsigned long relocaddr;/* Start address of U-Boot in RAM */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 */const void *fdt_blob;/* Our device tree, NULL if none */void *new_fdt;/* Relocated FDT */unsigned long fdt_size;/* Space reserved for relocated FDT */void **jt;/* jump table */char env_buf[32];/* buffer for getenv() before reloc. */struct arch_global_data arch;/* architecture-specific data */} gd_t;
这其中还包含了一个arch_global_data,对于ARM,这个结构体定义在:<arch/arm/include/asm/global_data.h>



原创粉丝点击