主题 : linux内存管理,将2G的内存分出512M作为块设备,写个驱动自己管理,别1.5G由内核管理 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 83699
精华: 0
发帖: 11
金钱: 55 两
威望: 11 点
综合积分: 22 分
注册时间: 2012-12-11
最后登录: 2017-09-13
楼主  发表于: 2012-12-13 15:46

 linux内存管理,将2G的内存分出512M作为块设备,写个驱动自己管理,别1.5G由内核管理

如题:假如PC机(arm也可)有2G内存,要求修改linux内核使内核只管理0—1.5G物理内存,然后将1.5G—2G物理内存作为块设备写一个驱动,然后映射到内核,实现单独管理;


暂时考虑到两个问题:1 ,怎么修改内核(或者是boot)使它在原本有2G硬件内存上只管理前1.5G从而保留另一部分,
                                          2,完成将剩下512M内存驱动?

第一次接触这方面东西,有点找不方向,求高人指点,那怕是一点思路也好,谢谢!!


  新人,新手,如有不专业请轻喷!
自由,自强,共享,共创。
级别: 论坛版主
UID: 12573
精华: 27
发帖: 8838
金钱: 46490 两
威望: 9298 点
综合积分: 18216 分
注册时间: 2010-01-09
最后登录: 2019-07-16
1楼  发表于: 2012-12-13 15:56
奇人奇想,估计只能自各研究了
新手如何向我们反馈有效的信息,以便解决问题,见此贴:
http://www.arm9home.net/read.php?tid-14431.html

[注]: 此处签名链接仅为指引方向,而非解答问题本身.
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
2楼  发表于: 2012-12-13 16:49
1 ,怎么修改内核(或者是boot)使它在原本有2G硬件内存上只管理前1.5G从而保留另一部分,

可以通过在内核命令行上指定"mem=1536M"或者通过ATAG_MEM(ARM平台)告诉内核只管理从物理内存起始地址开始的1.5G内存

2,完成将剩下512M内存驱动?

好问题,看起来这里需要一个简单的块设备驱动。可以通过ioremap()将剩余的512M空间映射进内核空间进行操作。也许你可以看一下内核中ramdisk驱动的实现?
"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: 83699
精华: 0
发帖: 11
金钱: 55 两
威望: 11 点
综合积分: 22 分
注册时间: 2012-12-11
最后登录: 2017-09-13
3楼  发表于: 2012-12-13 17:29

 回 2楼(kasim) 的帖子

        非常感谢您的回贴,两方面知识我都有所涉猎,但没有实际做过,现有Mirco2440开发板一块,有过uboot移植,及linux移植方面知识(之前仅仅是做学习,玩个几块板子,都有文档技持,所以你懂的--)目前所了解,要实现只管理1.5G,好像要先改uboot相关配置,然后改内核配置,因为还是在前期收集相关知识,没有动手实践,所以不知道原本2G的RAM硬件配置,改了相关参数后(因跟硬件配置大小不符)能不能正常工作。其二就是,另外的512M内存,是否可以当成一般的设备从而简单的写个块设备驱动实现内存映射。


如有新进展或问题,我会及时发贴,希望您能跟进,如有思路,请勿吝惜,求各位大侠指点,在此表示感谢,