当前位置: 代码迷 >> 驱动开发 >> uboot中的gd全局数据在内存中分布有关问题
  详细解决方案

uboot中的gd全局数据在内存中分布有关问题

热度:28   发布时间:2016-04-28 10:28:44.0
【求助】uboot中的gd全局数据在内存中分布问题
本帖最后由 a475701239 于 2013-03-11 22:42:30 编辑
有个小问题不理解,想请大家帮忙下
这个是代码:
gd=(gd_t*)(_armboot_start - CONFIG_SYS_MALLOC_LEN - sizeof(gd_t));

gd->bd = (bd_t*)((char*)gd-sizeof(bd_t));
memset(gd->bd,0,sizeof(bd_t));



gd是结构体
typedef struct global_data
{
bd_t *bd;
unsigned long flags;
.....
}gd_t;

内存分布图

_armboot_start 指向0x33f8_0000

看这段代码的意思是想给结构体gd_t中db成员初始化,但是我不明白的是红色的那句,按照他的计算,怎么感觉 db都已经出了 gb区啊?
gd=(gd_t*)(_armboot_start - CONFIG_SYS_MALLOC_LEN - sizeof(gd_t));
执行完,gd应该指向gd和IRQ之间了吧,那么要访问gd->db 为什么是(bd_t*)((char*)gd-sizeof(bd_t))?这个一减 不是到IRQ区了啊?大家帮忙看看啊,谢谢了
嵌入式,uboot

------解决方案--------------------
既然已经知道了我就不说了