• 【转】UBOOT之五:gd_t和bd_t数据结构简介


    在start_armboot()函数中,gd_tbd_tu-boot中两个重要的数据结构,在初始化操作很多都要靠这两个数据结构来保存或传递。分别定义在./include/asm-arm/global_data.h./include/asm-arm/u-boot.h

          1gd_t: global data数据结构定义,位于文件include/asm-arm/global_data.h。其成员主要是一些全局的系统初始化参数。当使用gd_t时需用宏定义进行声明:DECLARE_GLOBAL_DATA_PTR,指定占用寄存器R8

    /*
    *The following data structure is placed in some memory wich is
    *available very early after boot (like DPRAM on MPC8xx/MPC82xx, or
    *some locked parts of the data cache) to allow for a minimum set of
    *global variables during system initialization (until we have set
    *up the memory controller so that we can use RAM).
    *
    * Keep it*SMALL* and remember to set CFG_GBL_DATA_SIZE > sizeof(gd_t)
    *CFG_GBL_DATA_SIZE
    config文件中定义,start.S中会根据这个值分配栈空间给global_data
    */

    ypedef struct global_data {
    bd_t
    *bd;                                   //struct board_info
    指针,保存板子信息
    unsigned long flags;
                      //
    指示标志,如设备已经初始化标志等
    unsigned long baudrate;
              //
    串口波特率
    unsigned long have_console;
        //
    串口初始化标志
    unsigned long env_addr;           //Address of Environment struct
    ,环境参数地址
    unsigned long env_valid;           //
    环境参数CRC检验有效标志
    unsigned long fb_base;              //frame buffer
    的基址
    #ifdefCONFIG_VFD
    unsigned char vfd_type;
                /*display type */
    #endif
    #if 0
    unsigned long cpu_clk;
                 /* CPU clock in Hz! */
    unsignedlong bus_clk;
    unsigned long ram_size;            
    /*RAM size */
    unsigned long reset_status;
           /*reset status register at boot */
    #endif
    void **jt;
                                        /*jump table */
    } gd_t;

     

    /*
    *Global Data Flags
    */

    #defineGD_FLG_RELOC0x00001        /*Code was relocated to RAM */
    #defineGD_FLG_DEVINIT0x00002     /*Devices have been initialized */
    #define
    GD_FLG_SILENT0x00004       /*Silent mode */
    #define GD_FLG_POSTFAIL 0x00008
      /*Critical POST test failed */

    #define GD_FLG_POSTSTOP 0x00010  /*POST seqeunce aborted */

    #define GD_FLG_LOGINIT 0x00020     /*Log Buffer has been initialized */

    #defineGD_FLG_DISABLE_CONSOLE 0x00040 /*Disable console (in & out) */
    #defineDECLARE_GLOBAL_DATA_PTR register volatile gd_t *gd asm ("r8")

     

    2.bd_t:board info数据结构定义,位于文件include/asm-arm/u-boot.h。保存板子参数。

     

    typedefstruct bd_info {
    int
    bi_baudrate;                    //
    串口波特率
    unsigned long
    bi_ip_addr;     //IP
    地址
    struct environment_s
    *bi_env;
    ulong
    bi_arch_number;         //
    板子ID
    ulong
    bi_boot_params;          //
    启动参数
    struct
                                       //DRAM BANKS
    配置,起始地址与长度
    {
    ulong
    start;
    ulong
    size;
    }bi_dram[CONFIG_NR_DRAM_BANKS];
    } bd_t;

  • 相关阅读:
    TSQL存储过程:获取父级类别图片
    ASP.NET小收集<7>:JS创建FORM并提交
    JS收集<4>:限制输入搜索串
    js编码风格
    学习日志0504
    记于20120508日晚
    NHibernate中的Session yangan
    SQL Server2005排名函数 yangan
    让IE8兼容网页,简单开启兼容模式 yangan
    Log4Net跟我一起一步步 yangan
  • 原文地址:https://www.cnblogs.com/Neddy/p/2336724.html
Copyright © 2020-2023  润新知