UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 21205

7.1 EDK、GNU - [Generate Linker Script] で生成された bss_stack がスタックとヒープの 2 倍以上になる

説明

キーワード : EDK, 7.1, bss, stack, heap, linker, script, section, size, twice, double, スタック, ヒープ, リンカ スクリプト, セクション, 2 倍

重要度 : 標準

概要 :
EDK 7.1 の MicroBlaze システムで [Generate Linker Script] オプションを使用すると、スタックとヒープが bss_stack というセクションに割り当てられます。

しかし、bss_stack セクションは、必要となるスタックおよびヒープの 2 倍以上になっています。 これはなぜですか。

ソリューション

システム内のスタックとヒープはこの大きさである必要がありますが、 bss_stack セクションは必要とされる大きさよりも約 2 倍大きくなります。 bss_stack セクションは、必要となるスタックとヒープの大きさとほぼ同じでなければなりません。

この問題を回避するには、リンカ スクリプトから bss_stack セクションを削除します。 スタックとヒープを .bss セクションに記述してください。

これには、次の構文で .bss を変更します。

.bss : {
. = ALIGN(4);
__bss_start = .;
*(.bss)
*(COMMON)
. = ALIGN(4);
__bss_end = .;
} > relevant_memory_region

これを次のように変更します。

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

. = ALIGN(8);
_heap = .;
_heap_start = _heap;
. += _HEAP_SIZE;
. += _STACK_SIZE;
. = ALIGN(8);
_stack = .;
__stack = _stack;

} > relevant_memory_region
AR# 21205
日付 04/13/2007
ステータス アーカイブ
種類 一般
このページをブックマークに追加