您的位置:首页 > 其它

关于u-boot中gd变量

2015-06-26 08:35 225 查看
在<TOPDIR>/lib_arm/board.c中

start_armboot函数中,有一个gd变量

gd = (gd_t*)(_armboot_start - CFG_MALLOC_LEN - sizeof(gd_t));

gd在由该文件中的DECLARE_GLOBAL_DATA_PTR申明

DECLARE_GLOBAL_DATA_PTR在<TOPDIR>/include/asm/global_data.h中定义。

#define DECLARE_GLOBAL_DATA_PTR     register volatile gd_t *gd asm ("r8")
声明一个寄存器变量gd占用r8,因此gd不占内存。同时避免编译器把r8分配给其它的变量。所以gd就是r8,用r8来保存内存地址,达到全局使用目的。

gd_t是该文件中定义的一个global_data类型的结构体。结构中使用了bd_t结构
gd_t和bd_t是u-boot中两个重要的数据结构,在初始化操作很多都要靠这两个数据结构来保存或传递。
gd_t: global data数据结构定义,位于文件 include/asm/global_data.h。其成员主要是一些全局的系统初始化参数。
bd_t : board info数据结构定义,位于文件 include/asm/u-boot.h。保存板子参数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  u-boot