【求助】uboot中的gd全局数据在内存中分布问题

隔夜月 2013-03-11 10:39:50
有个小问题不理解,想请大家帮忙下
这个是代码:
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区了啊?大家帮忙看看啊,谢谢了
...全文
357 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 2 楼 a475701239 的回复:
我自己弄懂了,哈哈 快来人接分吧 :) :) :)
为什么呢?
隔夜月 2013-03-12
  • 打赏
  • 举报
回复
没人来接分吗?。。。。。
隔夜月 2013-03-12
  • 打赏
  • 举报
回复
我自己弄懂了,哈哈 快来人接分吧 :) :) :)
huangshuyi529 2013-03-12
  • 打赏
  • 举报
回复
既然已经知道了我就不说了
隔夜月 2013-03-11
  • 打赏
  • 举报
回复
请大家帮我看看,我刚开始学,希望大侠们指导些 谢谢了 ;)

21,597

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧