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

本文详细介绍了u-boot中两个关键的数据结构:bd_t和gd_t。bd_t主要用于存储板级信息,如串口波特率、ARM频率等;gd_t则包含了全局变量,如启动参数、CPU时钟频率、内存配置等,并且包含了一个与架构相关的arch_global_data结构体。这些数据结构在u-boot启动和运行过程中起着至关重要的作用。
摘要由CSDN通过智能技术生成

[u-boot: v2013.04]

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

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

1. bd_t

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

定义:

其具体结构如下:

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

定义:

其具体结构如下:

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;

这其中还包含了一个arch_global_data,对于ARM,这个结构体定义在:

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值