2.5.8. 実行モードに関する注意事項

メインアプリケーションをどのモードで実行するかを検討する必要があります。選択するモードによって、システムの初期化の実装方法が異なります。

起動時にリセットハンドラおよび $Sub$$main の両方で実装する可能性のある多くの機能は、特権モードで実行する場合にしか使用できません。例えば、オンチップメモリの操作や割り込みのイネーブルなどが挙げられます。

アプリケーションを特権モード(例えば、スーパーバイザ)で実行する場合、これは問題になりません。リセットハンドラを終了する前に適切なモードに変更するようにして下さい。

アプリケーションをユーザモードで実行する場合は、必要なタスクを特権モードで実行したにしかユーザモードに変更できません。通常、この変更は $Sub$$main() で行われます。

Note

__user_initial_stackheap() では、アプリケーションモードのスタックをセットアップする必要があります。このため、ユーザモードレジスタを使用する、システムモードのリセットハンドラを終了する必要があります。その後、__user_initial_stackheap() がシステムモードで実行されるため、ユーザモードに入ったときにもアプリケーションのスタックとヒープはセットアップされた状態を維持することができます。

Copyright © 2002-2006 ARM Limited. All rights reserved.ARM DUI 0203GJ
Non-Confidential