主题 : 【求助】SDRAM重映射 复制链接 | 浏览器收藏 | 打印
为智能化控制的发展不断努力着!
级别: 侠客
UID: 9957
精华: 0
发帖: 52
金钱: 260 两
威望: 52 点
综合积分: 104 分
注册时间: 2009-10-19
最后登录: 2014-11-18
楼主  发表于: 2012-03-19 12:35

 【求助】SDRAM重映射

1.在mini2440中,linux系统运行时,SDRAM映射到什么地址处?
2.是用户空间还是内核空间?
3.在用户空间和内核空间都可以动态申请内存,是如何实现的呢?

谢谢
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
1楼  发表于: 2012-03-20 19:28
1.在mini2440中,linux系统运行时,SDRAM映射到什么地址处?

这是由Linux内核决定的,SDRAM可能映射到4G地址空间的任何位置,ARM Linux上完整的memory layout参考http://www.arm.linux.org.uk/developer/memory.txt

2.是用户空间还是内核空间?

都有可能。通常虚拟地址0xC0000000(CONFIG_PAGE_OFFSET)以下的属于用户空间,以上部分属于内核空间

3.在用户空间和内核空间都可以动态申请内存,是如何实现的呢?

在用户空间,通过进程堆(Heap). 在内核空间,取决于内存申请的方式。具体信息参考Linux Device Driver 第三版的第八章"Allocating Memory"
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
为智能化控制的发展不断努力着!
级别: 侠客
UID: 9957
精华: 0
发帖: 52
金钱: 260 两
威望: 52 点
综合积分: 104 分
注册时间: 2009-10-19
最后登录: 2014-11-18
2楼  发表于: 2012-03-22 15:00

 回 1楼(kasim) 的帖子

        查了些资料,自己的理解是:物理内存都被映射到了内核空间的起始部分,每当有进程启动的时候,内核空间都会为其分配物理内存,分配的空间再次映射到了用户空间。当用户空间用malloc等申请空间时,先从最初为应用程序分配的堆里申请,如果空间不够在通过系统调用在内核空间再申请物理内存。
       个人理解,欢迎探讨哈。