AR# 21639

12.1 EDK - リンカー スクリプトで 3 つの .text ファイル セクションを別々のメモリーに分割する方法

説明

リンカー スクリプトで 3 つの .text ファイル セクションを別々のメモリーに分割するにはどうすればよいでしょうか。

ソリューション


******************************************************************************
*
* メモリー別分割命令リンカー スクリプト
*
* このリンカー スクリプトは異なるメモリー別に 3 つの .text テキスト ファイル セクションを分割します
(内部 BRAM 1 つ、外部 DDR 1 つ)。
速度を高めるため、BRAM 上でクリティカルな命令を実行します。
*
* メモ : オブジェクト ファイルを得るには -save-temps というコンパイラー オプションを必ず設定してください。

*
*
*****************************************************************************
* このプログラムは役立つことを希望して配布されていますが、保証や、また商品性や特定目的に対する適合性の黙視保証は含まれません。

*
*****************************************************************************/

_STACK_SIZE = 1024k;
_HEAP_SIZE = 1024k;

MEMORY
{
ddr : ORIGIN = 0x00000000, LENGTH = 64M /*external DDR SDRAM Memory*/
bram : ORIGIN = 0xFFFF0000, LENGTH = 64K - 4 /*internal Block RAM Memory*/
boot : ORIGIN = 0xfffffffc, LENGTH = 4
}

STARTUP(boot.o)
ENTRY(_boot)
GROUP(libxil.a libc.a)

SECTIONS
{

.vectors :
{
*(.vectors)
} > ddr

/*at least must be one section named .text */
.text : { file1.o(.text) } > bram

/*the name of this section may be whatever*/
.textDDR :
{
file2.o(.text)
file3.o(.text)
} > ddr

.data :
{
*(.data)
*(.got2)
*(.rodata)
*(.fixup)
} > ddr

/* small data area (read/write): keep together! */
.sdata : { *(.sdata) } > ddr

.sbss :
{
. = ALIGN(4);
*(.sbss)
. = ALIGN(4);
} > ddr

__sbss_start = ADDR(.sbss);
__sbss_end = ADDR(.sbss) + SIZEOF(.sbss);

/* small data area 2 (read only) */
.sdata2 : { *(.sdata2) } > ddr

.bss :
{
. = ALIGN(4);
*(.bss)
*(COMMON)
. = ALIGN(4);

__bss_end = .;

/* add stack and align to 16 byte boundary */
. = . + _STACK_SIZE;
. = ALIGN(16);
__stack = .;
_heap_start = .;
. = . + _HEAP_SIZE;
. = ALIGN(16);
_heap_end = .;

} > ddr

__bss_start = ADDR(.bss);
.boot0 :
{
*(.boot0)
_end = .;
} > ddr

.boot : { *(.boot) } > boot

}

このプロシージャーを SDK で使用する場合、SDK はオブジェクト ファイルを自動的に保存するので、-save-temps オプションを使用する必要はありません。


リンカー スクリプトでファイル名を指定するには相対パスを使用してください。たとえば、/src/file1.o(.text)

アンサー レコード リファレンス

マスター アンサー レコード

Answer Number アンサータイトル 問題の発生したバージョン 修正バージョン
34609 EDK 12.x - アンサーのリスト N/A N/A
AR# 21639
日付 03/05/2013
ステータス アクティブ
種類 一般
ツール 詳細 概略