使用CONFIG_FSL_BOOKE
(P1020 RDB)2.6.31,我需要在某个固定位置(无论在哪里)保留1MB的RAM,这是原始的,这意味着U-Boot或bootmem分配器不会接触它,这样RAM内容就可以在热重启后幸存下来。需要注意的是,我不能将U-boot更改为使用CONFIG_PRAM
/mem=
。
在arc/powepc 2.6.31中,编译可重定位内核不是一个选项。arch/powepc/kernel/setup_32.c.中不支持memmap
理想情况下,这个区域应该被保留,而不是L1d-cached,这样它就可以用来存储中断上下文中的ramoop。
有没有办法在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之间的区域被覆盖。
最好的解决方案是在设备树中添加内存区域作为保留区域。
这样,它将在引导过程中提前保留,并且不应该被内核触及。