1.3.1. 組み込みソフトウェアの開発

ARM アーキテクチャベースのシステム用に記述される多くのアプリケーションは、ROM に保持され、リセット時に実行される組み込みアプリケーションです。組み込みオペレーティングシステムを記述する際、またはオペレーティングシステムに依存せずにリセットから実行される組み込みアプリケーションを記述する際には、以下のような場合に注意する必要があります。

通常、ARM コアでは、リセット時にアドレス 0x0000 から命令の実行を開始します。つまり、組み込みシステムの場合、システムのリセット時に ROM がアドレス 0x0000 に存在している必要があります。しかし、通常 ROM は RAM に比べて低速で、多くの場合メモリ幅は 8 ビットまたは 16 ビットしかありません。これは、例外処理の速度に影響します。アドレス 0x0000 に ROM が存在すると、例外ベクタを変更できません。通常は、ROM を RAM にリマップし、起動後に例外ベクタを ROM から RAM にコピーするという方法を使用します。詳細については、ROM/RAM のリマップを参照して下さい。

リセット後、組み込みアプリケーションまたはオペレーティングシステムでは、以下のようにシステムを初期化する必要があります。

詳細については、初期化シーケンスを参照して下さい。

組み込みシステムでは、複雑なメモリのコンフィグレーションを実装することがよくあります。例えば、組み込みシステムでは、割り込みハンドラやスタックなど、パフォーマンスを重視したコードには高速な 32 ビット RAM を使用し、アプリケーションの RW データには低速な 16 ビット RAM を使用し、通常のアプリケーションコードには ROM を使用することができます。リンカのスキャッタローディングメカニズムを使用すると、複雑なシステムに適した実行可能イメージを作成できます。例えば、スキャッタローディング記述ファイルでは、個々のコード領域とデータ領域のロードアドレスと実行アドレスを指定できます。一連のサンプルと、セミホスティングなど、組み込みアプリケーションに影響する他の問題については、「Chapter 2 組み込みソフトウェアの開発」を参照して下さい。

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