3

使用CONFIG_FSL_BOOKE(P1020 RDB) 2.6.31 我需要在原始的某个固定位置(无论在哪里)保留 1MB 的 RAM,这意味着 U-Boot 或 bootmem 分配器不会触及它,因此 RAM 内容可以保留热重启。需要注意的是,我无法将 U-boot 更改为使用CONFIG_PRAM/ mem=

在 arc/powerpc 2.6.31 中编译可重定位内核不是一个选项。memmap在 arch/powerpc/kernel/setup_32.c 中不受支持。

理想情况下,这个区域应该被保留而不是 L1 d-cached,这样它就可以用来存储来自中断上下文的 ramoops。

有没有办法_end在 bootmem 之前移出到 0x600000 以创建一个没有人触及的洞?也就是说,欺骗内核认为_end更远?

在 vmlinux.lds.SI 中尝试了类似的东西:

    . = ALIGN(PAGE_SIZE);
    _end = . ;
    PROVIDE32 (end = .);

变成

    . = ALIGN(PAGE_SIZE);
    _start_unused_ram = .;
    . = ALIGN(0x400000);
    _end = . ;
    PROVIDE32 (end = .);

但是,__bss_stop0x400000 和 0x400000 之间的区域被覆盖。

4

1 回答 1

1

最好的解决方案是将内存区域添加为设备树中的保留区域。

这样,它将在引导期间提前保留,并且不应被内核触及。

于 2012-09-06T02:25:01.943 回答