スキャッタファイルを使用したスタックとヒープの指定

ARM C ライブラリには、関数 __user_setup_stackheap() の複数の実装があり、スキャッタファイルの情報に基づいて適切な実装が自動的に選択されます。

2 つの領域によるメモリモデルを選択するには、スキャッタファイルに ARM_LIB_HEAP および ARM_LIB_STACK という名前の 2 つの特殊な実行領域を定義します。 これらの領域には EMPTY 属性があります。 そのため、ライブラリでは、以下のシンボルの値を使用する、__user_setup_stackheap() のデフォルトではない実装が選択されます。

ARM_LIB_STACK 領域と ARM_LIB_HEAP 領域のどちらか 1 つを指定できます。その際、サイズを割り当てる必要があります。以下に例を示します。

ARM_LIB_HEAP 0x20100000 EMPTY 0x100000-0x8000  ; ヒープは 1 MB の位置から
                                               ; 上位アドレスに向かって展開される
ARM_LIB_STACK 0x20200000 EMPTY -0x8000         ; スタック空間は 2MB の RAM の末尾から
                                               ; 下位アドレスに向かって
                                               ; 32KB 展開される

EMPTY 属性が定義された ARM_LIB_STACKHEAP という単一の実行領域を定義することにより、スタックとヒープの結合領域を使用できます。 その結果、__user_setup_stackheap() では、シンボル Image$$ARM_LIB_STACKHEAP$$Base および Image$$ARM_LIB_STACKHEAP$$ZI$$Limit の値が使用されます。

Note

__user_setup_stackheap() を再実装すると、すべてのライブラリ実装がオーバーライドされます。

Show/hide関連項目

タスク

ARM® プロセッサをターゲットとしたソフトウェア開発』

概念
参照

ARM® C および C++ ライブラリと浮動小数点サポートの使用』

Copyright © 2010-2012 ARM. All rights reserved.ARM DUI 0474GJ
Non-ConfidentialID051612