查看随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映像之后加载,并且假设引导加载程序位于映像之后。
有什么想法吗?
答案 0 :(得分:1)
RAM高/低有点像你所发现的用词不当。
它应该被称为RAM_VXWORKS_ADDR和RAM_BOOT_ADDR(或其他一些)
很多这些名字都是历史性的。
在99%的情况下,RAM_HIGH> RAM_LOW。但是,根据架构,BSP和目标,可能存在反转。
最后,它只是一个加载软件的地址。只要没有冲突或重叠,就可以了。
vxWorks Heap本身与RAM_LOW / HIGH_ADDR无关。
vxWorks堆(在简化视图中)从vxWorks映像上方运行到sysMemTop()返回的地址 - 由BSP定义,可能运行到物理RAM的顶部(或不)。
在正常情况下,如果vxWorks加载了bootrom加载地址,bootrom就会被覆盖。在您的BSP中情况并非如此,因此您确实会丢失一些RAM空间,因为bootrom不会被“回收”。