使用CONFIG_FSL_BOOKE
(P1020 RDB)2.6.31我需要在原始的某个固定位置(无所谓)保留1MB的RAM,这意味着它不会被U-Boot或bootmem触及分配器,以便RAM内容在热重启后继续存在。需要注意的是,我无法更改U-boot以使用CONFIG_PRAM
/ mem=
。
编译可重定位内核不是arc / powerpc 2.6.31中的一个选项。 arch / powerpc / kernel / setup_32.c不支持memmap
。
理想情况下,此区域应保留,而不是L1 d-cached,以便它可用于存储来自中断上下文的ramoops。
有没有办法在bootmem之前将_end
移到0x600000以创建一个没有被任何人触及的洞?也就是说,欺骗内核认为_end
更远了?
在vmlinux.lds.S中我试过了类似的东西:
. = ALIGN(PAGE_SIZE);
_end = . ;
PROVIDE32 (end = .);
已更改为
. = ALIGN(PAGE_SIZE);
_start_unused_ram = .;
. = ALIGN(0x400000);
_end = . ;
PROVIDE32 (end = .);
但是,__bss_stop
和0x400000之间的区域被覆盖。
答案 0 :(得分:1)
最佳解决方案是将内存区域添加为设备树中的保留区域。
这样它将在启动时提前保留,内核不应该触及。