AR# 50824

14.1 EDK - ソフトウェアの起動時間を増加する NOLOAD 属性の使用

説明

ソフトウェア デザインに大きな初期化されていない (または 0 で初期化された) エレメントが含まれる場合、ソフトウェアの起動に時間がかかりすぎることがあります。

ソリューション

この遅延は、これらのエレメントが初期化されていないか、0 に初期化されると発生します。 この場合、これらはリンカー スクリプトの .bss セクションに配置されます。このセクションはアプリケーションが起動されると常に 0 に初期化されるので、大きなエレメントがあると時間がかかってしまいます。この問題は、これらのエレメントの初期化をディスエーブルする属性を設定すると回避できます。 この属性は、初期化される必要のないエレメントにのみ追加する必要があります。

まず、次のテンプレートのようにリンカー スクリプト (通常タイトルは lscript.ld) に新しいセクションを追加します。

.my_noload_section (NOLOAD) : {
*(.my_noload_section)
} > My_Memory_ADDR

「.my_noload_section」はどのような名前にでもできますが、「My_Memory_ADDR」はメモリ デバイス (BRAM、DDR3 など) にする必要があります。たとえば、リンカー スクリプトの MEMORY またはほかのセクションを参照してください。

リンカー スクリプトに NOLOAD タグを含む新しいセクションが追加されたので、特定のエレメントをこのセクションに割り当てることができるようになりました。これには、次のフォーマットで属性を設定します。

u8 MyElement[Element_Size] __attribute__((section(".my_noload_section")));

属性とリンカー スクリプト間でセクション名が同じになるようにしてください。これにより、エレメントがこの属性で初期化されないようになります。
AR# 50824
日付 11/28/2012
ステータス アクティブ
種類 一般
ツール
IP