2012-03-09 53 views
2

尋找在與VxWorks的供給的BSP包示出了用於圖像以下存儲器映射:(來自的Pentium4)映射一個VxWorks的圖像投影到RAM(BSP)

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映像之後加載,並且啓動加載程序假定位於映像之後。

任何想法?

回答

1

RAM高/低有點誤用,因爲你已經發現。
它確實應該被稱爲RAM_VXWORKS_ADDR和RAM_BOOT_ADDR(或一些這樣的)。
很多這些名字都是歷史性的。

在99%的情況下,RAM_HIGH> RAM_LOW。但是,根據架構,BSP和目標,可能會出現倒置。

最後,它只是一個加載軟件的地址。只要沒有衝突或重疊,就沒關係。

vxWorks Heap與RAM_LOW/HIGH_ADDR本身無關。這是由BSP所定義和可能運行到物理RAM的頂部(或不) -

VxWorks的堆(以簡化的視圖)從VxWorks映像到由sysMemTop()返回的地址之上運行。

在正常情況下,使用vxWorks加載bootrom加載地址時,bootrom會被覆蓋。在BSP中情況並非如此,因此,由於bootrom未被「回收」,因此您會釋放一些RAM空間。

+0

嗨, 重:「在正常情況下,與VxWorks的加載波紋管的BOOTROM加載地址,各軟件只是被覆蓋」 你的意思是它被改寫爲應用程序正在運行,棧和堆增長? ......而不是在它被複制的時候? – 2015-11-11 23:48:45