2

查看随 VxWorks 提供的 BSP 包显示了以下映像的内存映射:(来自 Pentium4)

Parameter RAM_HIGH_ADRS {
    NAME        Bootrom Copy region
    DEFAULT     (INCLUDE_BOOT_APP)::(0x00008000) \
                 0x00108000
}

Parameter RAM_LOW_ADRS {
    NAME        Runtime kernel load address
    DEFAULT     (INCLUDE_BOOT_RAM_IMAGE)::(0x00508000) \
                (INCLUDE_BOOT_APP)::(0x00108000) \
                0x00308000
}

但这对我来说看起来很奇怪,怎么可能RAM_LOW_ADRS > RAM_HIGH_ADRS?据我所知,引导加载程序应该在 RAM_HIGH_ADRS 和 RAM_LOW_ADRS 的 VxWorks 映像之后加载,并且引导加载程序应该位于映像之后。

有任何想法吗?

4

1 回答 1

1

正如您所发现的那样,RAM 高/低有点用词不当。
它确实应该被称为 RAM_VXWORKS_ADDR 和 RAM_BOOT_ADDR(或类似的名称)。
许多这些名字本质上是历史性的。

在 99% 的情况下,RAM_HIGH > RAM_LOW。但是,根据架构、BSP 和目标,可能会出现反转。

最后,它只是一个加载软件的地址。只要没有冲突或重叠,就可以了。

vxWorks 堆本身与 RAM_LOW/HIGH_ADDR 无关。

vxWorks 堆(在简化视图中)从 vxWorks 映像上方运行到 sysMemTop() 返回的地址 - 该地址由 BSP 定义并且可能运行到物理 RAM 的顶部(或不运行)。

在正常情况下,随着 vxWorks 在 bootrom 加载地址下方加载,bootrom 只会被覆盖。在您的 BSP 中情况并非如此,因此您确实会释放一些 RAM 空间,因为 bootrom 没有“回收”。

于 2012-03-09T20:51:48.520 回答