Отображение образа VxWorks в ОЗУ (BSP) - PullRequest
2 голосов
/ 09 марта 2012

Просмотр пакета BSP, поставляемого с VxWorks, показывает следующее отображение памяти для образа: (из 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 и образа VxWorks в RAM_LOW_ADRS, а загрузчик должен быть расположен после образа.

Есть идеи?

1 Ответ

1 голос
/ 10 марта 2012

RAM High / Low, как вы уже обнаружили, несколько ошибочны.
Он действительно должен называться RAM_VXWORKS_ADDR и RAM_BOOT_ADDR (или что-то подобное).
Многие из этих имен носят исторический характер.

В 99% случаев RAM_HIGH> RAM_LOW. Но в зависимости от архитектуры, BSP и цели может произойти инверсия.

В конце концов, это просто адрес для загрузки программного обеспечения. Пока нет конфликтов или совпадений, все в порядке.

Куча vxWorks не имеет ничего общего с RAM_LOW / HIGH_ADDR как таковой.

Куча vxWorks (в упрощенном виде) запускается сверху образа vxWorks по адресу, возвращенному sysMemTop () - который определяется BSP, и может работать до верхней части физической памяти (или нет).

В обычной ситуации, когда vxWorks загружает ниже адрес загрузки bootrom, bootrom просто перезаписывается. Это не относится к вашему BSP, поэтому вы теряете некоторое количество оперативной памяти, так как bootrom не «освобождается».

...