2.4.6. スタックとヒープの配置

スキャッタローディングでは、コードと静的に割り当てられたデータの位置をイメージ内で指定する方法を提供しています。このセクションでは、アプリケーションのスタックとヒープを配置する方法について説明します。

アプリケーションのスタックとヒープは、C ライブラリの初期化中にセットアップされます。スタックとヒープの位置は、スタックとヒープのセットアップを実行するルーチンを再実装することによってカスタマイズできます。ARM C ライブラリでは、__user_initial_stackheap() がこのルーチンに相当します。

Figure 2.9 は、再実装された __user_initial_stackheap() を使用する C ライブラリ初期化プロセスを示しています。

Figure 2.9. __user_initial_stackheap() のターゲット変更

__user_initial_stackheap() のターゲット変更

__user_initial_stackheap() は、C または ARM アセンブラ言語でコーディングできます。このルーチンは以下のパラメータを返す必要があります。

イメージのスキャッタローディングを行う場合は、__user_initial_stackheap() を再実装する必要があります。再実装しないと、リンカによって以下のエラーが表示されます。

Error: L6218E: Undefined symbol Image$$ZI$$Limit (referred from sys_stackheap.o)
Copyright © 2002-2006 ARM Limited. All rights reserved.ARM DUI 0203GJ
Non-Confidential