1

RAM_HIGH_ADRS は、config.h および makefile で定義されるパラメーターです。私が理解しているように、プログラムの data+text+bss セグメントが RAM に書き込まれるアドレスを定義します。

つまり、たとえば、CPU に 64 Mb の RAM があり、RAM_HIGH_ADRS が 0x00A00000 (10 Mb) に等しい場合、プログラム全体では、テキスト + データ + bss + ヒープ + スタックの保存に関して 54 Mb を使用する必要があります。

私がこれに疑問を呈している理由は、データセグメントを大幅に拡張したプロジェクトに取り組んでいるため、CPUが起動しなくなりました。次に、 RAM_HIGH_ADRS を増やしました。これにより、この時点で CPU が起動できるようになりました。私の理解では、RAM_LOW_ADRS と RAM_HIGH_ADRS の間に書き込まれるのは VxWorks イメージだけなので、これは私を混乱させます。そのため、RAM_HIGH_ADRS を大きくしても、データ セグメントの使用可能なサイズが小さくなるだけです。

4

2 に答える 2

2

Vxworks bootrom を使用してボードを起動している場合は、次のように動作します。

Bootrom は RAM_HIGH_ADRS に配置されます。次に、Bootrom はネットワークから VxWorks カーネル イメージをロードし (または、vxWorks カーネル イメージをフェッチしている場所に基づくその他の場所)、RAM_LOW_ADRS から RAM に配置します。

最初に .text セグメントを配置し、その直後に .rodata、.data、および .bss を配置します。したがって、RAM_LOW_ADRS と RAM_HIGH_ADRS の間には、.text+.rodata_.data+.bss を格納できる十分なスペースがあります。スペースが十分でない場合、ユーザーはあなたが見た症状を見るでしょう。このような場合、.text+.rodata_.data+.bss が RAM_LOW_ADRS と RAM_HIGH_ADRS の間に収まるように、RAM_HIGH_ADRS をより高い値に設定します。

于 2016-01-24T04:26:15.753 に答える
0

vxworks-bsps-6.7.pdf の6 ページから:

高 RAM アドレス。bootrom を使用すると、ブート ローダーは小さな VxWorks カーネル (bootrom) を高い RAM に配置します。RAM_LOW_ADRS..RAM_HIGH_ADRS は、ブート前にネットワークからフェッチされた VxWorks カーネルを格納するために bootrom カーネルによって使用されます。通常、メイン メモリの半分 + 0x3000 に設定します。たとえば、4Mb RAM のシステムでは 0x40203000 です。

于 2016-01-05T13:22:39.683 に答える