User Tools

Site Tools


u-boot_board_info

This is an old revision of the document!


Overview

Explanation of initialization of struct bd_info, in the context of Zedboard.

include/asm-generic/u-boot.h

Non-Zedboard content removed for brevity.

typedef struct bd_info {
        unsigned long   bi_memstart;    /* start of DRAM memory */
        phys_size_t     bi_memsize;     /* size  of DRAM memory in bytes */
        unsigned long   bi_flashstart;  /* start of FLASH memory */
        unsigned long   bi_flashsize;   /* size  of FLASH memory */
        unsigned long   bi_flashoffset; /* reserved area for startup monitor */
        unsigned long   bi_sramstart;   /* start of SRAM memory */
        unsigned long   bi_sramsize;    /* size  of SRAM memory */
#ifdef CONFIG_ARM
        unsigned long   bi_arm_freq; /* arm frequency */
        unsigned long   bi_dsp_freq; /* dsp core frequency */
        unsigned long   bi_ddr_freq; /* ddr frequency */
#endif
...
        unsigned long   bi_bootflags;   /* boot / reboot flag (Unused) */
        unsigned long   bi_ip_addr;     /* IP Address */
        unsigned char   bi_enetaddr[6]; /* OLD: see README.enetaddr */
        unsigned short  bi_ethspeed;    /* Ethernet speed in Mbps */
        unsigned long   bi_intfreq;     /* Internal Freq, in MHz */
        unsigned long   bi_busfreq;     /* Bus Freq, in MHz */
...
        ulong           bi_arch_number; /* unique id for this board */
        ulong           bi_boot_params; /* where this board expects params */
#ifdef CONFIG_NR_DRAM_BANKS
        struct {                        /* RAM configuration */
                phys_addr_t start;
                phys_size_t size;
        } bi_dram[CONFIG_NR_DRAM_BANKS];
#endif /* CONFIG_NR_DRAM_BANKS */
} bd_t;

board_f.c [init_fnc_t]

reserve_board()

/* (permanently) allocate a Board Info struct */
static int reserve_board(void)
{
        if (!gd->bd) {
                gd->start_addr_sp -= sizeof(bd_t);
                gd->bd = (bd_t *)map_sysmem(gd->start_addr_sp, sizeof(bd_t));
                memset(gd->bd, '\0', sizeof(bd_t));
                debug("Reserving %zu Bytes for Board Info at: %08lx\n",
                      sizeof(bd_t), gd->start_addr_sp);
        }
        return 0;
}

setup_machine()

Not set for Zedboard.

static int setup_machine(void)
{
#ifdef CONFIG_MACH_TYPE
        gd->bd->bi_arch_number = CONFIG_MACH_TYPE; /* board id for Linux */
#endif
        return 0;
}
u-boot_board_info.1555252010.txt.gz · Last modified: 2019/04/14 14:26 by rpjday