限制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