加入收藏 | 设为首页 | 会员中心 | 我要投稿 开发网_开封站长网 (http://www.0378zz.com/)- 科技、AI行业应用、媒体智能、低代码、办公协同!
当前位置: 首页 > 教程 > 正文

u-boot下的两个关键数据:bd_t和gd_t

发布时间:2021-11-21 17:39:06 所属栏目:教程 来源:互联网
导读:[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 其具体结构

[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 int bi_baudrate; /* serial console baudrate */
        ulong        bi_arch_number; /* unique id for this board */
        ulong        bi_boot_params; /* where this board expects params */
 unsigned long bi_arm_freq; /* arm frequency */
 unsigned long bi_dsp_freq; /* dsp core frequency */
 unsigned long bi_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_TYPES
 unsigned long board_type;
#endif
 unsigned long have_console; /* serial_init() was called */
#ifdef CONFIG_PRE_CONSOLE_BUFFER
 unsigned long precon_buf_idx; /* Pre-Console buffer index */
#endif
#ifdef CONFIG_MODEM_SUPPORT
 unsigned long do_mdm_init;
 unsigned long be_quiet;
#endif
 unsigned 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;

(编辑:开发网_开封站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读