系统相关
首页 > 系统相关> > 限制linux内核的内存区域

限制linux内核的内存区域

作者:互联网

我在P1022RDK(P1022 Core)平台上运行ltib Linux.我有512 MB = 0x20000000内存.我希望我的Linux内核使用板载内存的后半部分(即256 MB到512 MB),并希望将前半部分内存保留用于其他目的.

为此,我使用ltib构建Linux内核,并设置以下内核配置.如果我正在以正确的方式做,请建议.

CONFIG_LOWMEM_SIZE = 0x10000000 # 256 MB 
CONFIG_PHYSICAL_START = 0x10000000 # Starting from 256MB (second half of memory)

 

在Uboot上我按以下方式加载内核:

setenv loadaddr 0x11000000 # Kernel base = 0x10000000 + 0x01000000 (offset) 
setenv fdtaddr 0x10c00000 # Kernel base = 0x10000000 + 0x00c00000 (offset) 
bootm $loadaddr - $fdtaddr My kernel Load address is 0x10000000 & kernel entry point is 0x10000000

使用上面的配置/步骤,我的内核在Uboot上停留在以下内容:

Booting kernel from Legacy Image at 11000000 ...

Image Name: Linux-2.6.32.13 
Image Type: PowerPC Linux Kernel Image (gzip compressed) 
Data Size: 3352851 Bytes = 3.2 MB 
Load Address: 10000000 
Entry Point: 10000000 
Verifying Checksum ... OK

Flattened Device Tree blob at 10c00000

Booting using the fdt blob at 0x10c00000 
Uncompressing Kernel Image ... OK

 

它应该在这里解压缩FDT&继续

有什么想法吗?

解决方法:

要向David Schwartz的答案添加详细信息,通过指定内核引导参数来设置内核使用的数量和起始地址,您可以执行您想要的操作.

例如,将以下命令添加到内核引导args:

mem=256M@0x80000000

将指示内核应该使用从0x80000000开始的256M,这是您需要的.

您应该将CONFIG设置恢复为原始值,并验证内核是否将以其默认配置正确启动(没有mem =设置).

您可以先通过指定尝试mem =

mem=256M

这将为您提供从0开始减少的内存区域,前256M未使用.一旦看到它工作,使用带有偏移的256M,如上所述.

还要注意在RAM中通过uBoot加载初始压缩映像的位置,以确保它不会与最终的内核内存区域冲突.

标签:u-boot,linux,memory,kernel
来源: https://codeday.me/bug/20190810/1640719.html