インテルのみ表示可能 — GUID: lro1424311574262
Ixiasoft
1.6.3.1. 新しいスキャッタ・ファイルを作成するSDRAMへのベア・メタル・アプリケーションの検索
DS-5 ARMコンパイラのプロジェクトでは、メモリ・マップの必要な部分のコードを検索するために使用されるアドレスを指定するスキャッタ・ファイルです。
このステップにおいて、同じ「Hello World」アプリケーションを使用しますが、オンチップのRAMの代わりにそれをSDRAMメモリに配置してください。
SDRAMを使用するには、SDRAMメモリ・コントローラを設定するには、プリローダーを実行する必要があります。SDRAMからのプロジェクトの実行を開始する前に、SDRAMが設定されていない場合、次のエラー・メッセージが表示されます。
ERROR(CMD16-TAD274-NAL22):
! Failed to load "bare metal-hello-world-01.axf"
! Failed to write 4,896 bytes to address S:0x02000000 while writing block of 4,096 bytes to address S:0x02000000
! General error on memory or register access.
- SDRAMのスキャッタ・ファイルを作成します。 File > New > Others...の下にScatter File Editor > Scatter Fileを選択します。
- Nextをクリックし、scatter_SDRAM.scatで新しいスキャッタ・ファイルのファイル名を入力し、Finishをクリックします。
- scatter_SDRAM.scatエディタ・ビューで、次のように入力します。
SDRAM 0x02000000 0x02000000 ; 32M SDRAM { APP_CODE + 0 { * (+ RO , + RW , + ZI ) } ARM_LIB_STACKHEAP 0x03000000 EMPTY 0x0x01000000 ; Application heap and stack { } }
注:HWLibsプロジェクトが割り込みサポートが必要な場合、 スキャッタ・ファイルの先頭に「VECTOR」セクションを追加する必要があります。例えば:
SDRAM 0x00100000 0x40000000 { VECTORS +0 { * (VECTORS, +FIRST) } APP_CODE +0 { * (+RO, +RW, +ZI) } ARM_LIB_STACKHEAP +0 EMPTY (0x40000000 - ImageLimit(APP_CODE)) ; Application heap and stack { } }
これは、 "<SoC EDS installation path>\embedded\examples\software」にHWLibs例のほとんどでSDRAMから実行プロジェクトのための標準的なスキャッタ・ファイルです。プロジェクトで「alt_interrupt_armcc.s」をコンパイルとリンクしなければならないことに注意してください。 ARMCCツール・チェインが自動的にプログラムの開始時にベクトルを提供しないため、これが必要とされています。注: 単純な「Hello World」のプロジェクトを実行しているので、このセクションでは、ベクタ・セクションが含まれていません。図 42. SDRAM Scatter File Code Snippet - 新しいスキャッタ・ファイルは、Project Explorerビューに表示されていることを確認します。
図 43. Project ExplorerでのSDRAM Scatterファイル
- プロジェクトで新しいスキャッタ・ファイルを関連付けます。プロジェクトを右クリックし、Properties > C/C++ Build > Settings > ARM Linker 5 > Image Layoutを選択します。
- 新しいスキャッタ・ファイルを参照します。
- あるいは、閲覧の代わりに、次のようなパスを入力します:${workspace_loc}\bare-metal-hello-world-01\scatter_SDRAM.scat)。また、ApplyとOKを選択します。
図 44. SDRAMスキャッタ・ファイルの場所の設定
- プロジェクトを右クリックし、新しいスキャッタ・ファイルで再構築するには、 Build Projectを選択します。アプリケーションをダウンロードして実行する前に作成した同じデバッグ設定を使用します。
プログラムは、メインで停止し、そこに待機します。 Commandsビューで、エントリ・ポイントは0x02000000、ある注目してください。これは、SDRAMのスキャッタ・ファイルで指定された開始アドレスです。図 45. SDRAMの開始アドレスで停止するプログラム