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 の後にロードされ、VxWorks イメージは RAM_LOW_ADRS にロードされ、ブート ローダーはイメージの後に配置されると想定されています。

何か案は?

4

1 に答える 1

1

あなたが発見したように、RAM High/Low はやや誤った名称です。
実際には、RAM_VXWORKS_ADDR および RAM_BOOT_ADDR (またはそのようなもの) と呼ぶ必要があります。
これらの名前の多くは、本質的に歴史的なものです。

99% のケースで、RAM_HIGH > RAM_LOW です。ただし、アーキテクチャ、BSP、およびターゲットによっては、逆転する場合があります。

結局のところ、ソフトウェアをロードするための単なるアドレスです。矛盾や重複がなければOKです。

vxWorks ヒープは、RAM_LOW/HIGH_ADDR 自体とは何の関係もありません。

vxWorks ヒープ (単純化されたビュー) は、vxWorks イメージの上から sysMemTop() によって返されるアドレスまで実行されます。これは BSP によって定義され、物理 RAM の最上部まで実行される可能性があります (そうでない場合もあります)

通常の状況では、vxWorks が bootrom ロード アドレスの下にロードされると、bootrom は単純に上書きされます。BSP ではそうではなく、ブート ROM が「再利用」されないため、RAM スペースがいくらか失われます。

于 2012-03-09T20:51:48.520 に答える