2015.11.30
UG-01165 更新情報 フィードバック
概要
このガイドでは、 アルテラ®のSoCエンベデッド・デザイン・スイートのユーザー・ガイドに含
まれる ARM® DS-5 Altera Edition を使用するベア・メタル・プロジェクトの作成とデバッグの方
法の例を提供します。
アルテラ SoC EDS は、アルテラ SoC デバイス上のエンベデッド・ソフトウェア開発のための包 括的なツール・スイートです。これは、ハードウェア抽象化ライブラリ(HWLibs)、ARM DS-5 アルテラ版(DS-5 AE)、ツール・チェイン、およびベア・メタルの開発環境の例が含まれていま す。 DS-5 AE はアルテラの SoC ターゲット・ボード上で DS-5 IDE 内のベア・メタルのアプリケーシ ョンを作成、構成、および実行することを可能にする便利なツールセットです。 詳細については、 アルテラのSoCエンベデッド・デザイン・スイートのユーザー・ガイドの 「SoC エンベデッド・デザイン・スイートの概要」および「ARM DS-5 アルテラ版」のセクショ ンを参照してください。 このガイドの例を参照する際に、それぞれ SoC開発キットのユーザー・ガイドおよび USB-Blaster のユーザー・ガイドなどの追加のガイドラインを参照してください。 関連情報
• Altera SoC Embedded Design Suite User Guide
• Cyclone V SoC Development Kit User Guide
• Arria V SoC Development Kit User Guide
• Arria 10 SoC Development Kit User Guide
• USB Blaster Download Cable User Guide
ベア・メタルの概要
オペレーティング・システム(OS)なしで実行することを意図するファームウェア・アプリケ ーションは、ベア・メタル・アプリケーションと呼ばれます。 OS によって管理されているユー ザー・アプリケーションと比較して、ベア・メタル・アプリケーションは、システムのハードウ ェアに直接インタフェースすることができ、OS なしで実行します。
© 2016 Intel Corporation. All rights reserved. Intel, the Intel logo, Altera, Arria, Cyclone, Enpirion, MAX, Megacore, NIOS, Quartus and Stratix words and logos
図 1: ベア・メタル・アプリケーション ベア・メタル・アプリケーションは、多くの方法のいずれかで起動することができます。次の 3 つのシナリオでは、プリローダーのブート・ステージは、システム・ハードウェアの初期化を完 了し、ベア・メタル・イメージを検証またはブート・モジュールとして構成した後に起動されま す。 Altera Corporation ベア・メタルのユーザー・ガイド フィードバック
• 典型的なベア・メタル・アプリケーション - ベア・メタル・アプリケーションがプリローダ ーから直接実行される 図 2: 典型的なベア・メタル・アプリケーション • RTOS ベア・メタル・アプリケーション - ベア・メタル・アプリケーションが RTOS から実行 される 図 3: RTOS ベア・メタル・アプリケーション • ブートローダベア・メタル・アプリケーション - ベア・メタル・アプリケーションはブート ローダーから実行される 図 4: ブートローダ・ベア・メタル・アプリケーション
アルテラのSoCエンベデッド・デザイン・スイート(SoC EDS)ユーザー・ガイドは、ベア・メ
タル・アプリケーションの開発を簡素化するために HW 抽象化のアプリケーション・プログラ ミング・インターフェース(API)を提供します。
関連情報
• AN 709 HPS SoC Boot Guide
ブート・ステージの詳細について。
• 60 ページの最小限のプリローダー・プロジェクト例
ブート・モジュールとして構築されたベア・メタルのアプリケーションの詳細について。 • Altera SoC Embedded Design Suite User Guide
ベア・メタル開発環境の前提条件
• Altera SoC EDS
• USB-Blaster のドライバ
注意: USB-Blaster は、ボードに接続する必要があり、アルテラ SoC EDS のライセンス・ファイ ルに、正しく設定する必要があります。
アルテラ SoC EDS は、完全なベア・メタルのソフトウェア開発環境のために、以下のコンポー ネントが用意されています。
• ARM DS-5 アルテラ版 • ARM コンパイラ 5
• GNU Compiler Collection (GCC)ベア・メタル・コンパイラ • HWLib
• Mkpimage ツール(ブート ROM で必要) • Mkimage ツール(ブート ROM で必要) • SD カード・イメージ・ ツール
• Golden Hardware Reference Design (GHRD)
詳細については、 アルテラのSoCエンベデッド・デザイン・スイートのユーザー・ガイドの
「SoC エンベデッド・デザイン・スイートの概要」および「ARM DS-5 アルテラ版」のセクショ ンを参照してください。
関連情報
Altera SoC Embedded Design Suite User Guide
ベア・メタルのコンパイラ
アルテラ SoC EDS に同梱されているベア・メタルのコンパイラは、 Mentor Graphics® Sourcery™
Code Bench Lite Edition です。コンパイラは GCC ベースの arm-altera-eabi ポートです。ARM プ ロセッサをターゲットとし、ベア・メタルでも動作します。また、スタンダードの ARM エンベ デッド・アプリケーション・バイナリ・インタフェース(EABI)表記法を使用しています。ベ ア・メタルのコンパイラは、アルテラ SoC EDS インストールの一部としてインストールされて います。 ベア・メタルのコンパイラの 2 種類があります: • ARM Compiler
• GNU Compiler Collection (GCC)
GCC は無料の DS-5 アルテラ版で提供されている一方、ARM コンパイラは、ライセンスが必要 であり、フル ARM DS-5 版(すべての ARM プロセッサ用)でサポートされています。
ベア・メタルのコンパイラの詳細については、 アルテラのSoCエンベデッド・デザインのユー
ザー・ガイドの「ベア・メタルのコンパイラ」の章を参照してください。
関連情報
Altera SoC Embedded Design User Guide
Altera Corporation ベア・メタルのユーザー・ガイド
ベア・メタル開発フロー
ベア・メタル・アプリケーションのベースによる SoC ベースの開発は、FPGA 生成デザイン・ツ ールおよびアプリケーションを構築し、デバッグするための Altera SoC EDS パッケージ・ツール の使用から依存状態に関係します。 典型的なベア・メタル開発の流れを以下に示します: 図 5: 典型的なベア・メタルのフロー
DS-5 AE
によるベア・メタルのプロジェクトの作成および管理
ベア・メタルのアプリケーション・プロジェクトは、DS-5 AE を使用して作成され、ARM また は GCC コンパイラでコンパイルすることができます。アプリケーションは、オンチップ RAM (OCRAM)や外部メモリから実行するために作成することができます。次のセクションでは、ARM コンパイラを使用して、Cyclone V SoC の開発キットの「Hello World」というシンプルなベア・メタル・プロジェクトを作成、ビルド、ロードおよびデバッグ する方法を案 内します。 • OCRAM から実行す • SDRAM から実行する 注意: GCC コンパイラでは、GCC コンパイラを使用してコンパイル既存のベア・メタルプロジ ェクトの例をインポートすることができ、または手動でシンプルな C プロジェクトを作 成するには、「GCC ベア・メタルプロジェクト管理」を参照してください。 関連情報
• Getting Started with Bare Metal Project Management
オンチップ RAM の使用シンプルなベア・メタルプロジェクト
次のセクションでは、ロードを構築し、ARM コンパイラを使用して OCRAM から実行するため の単純な「Hello World」のアプリケーション・プロジェクトをデバッグし、作成しています。
関連情報
Altera SoC Embedded Design Suite User Guide
プロジェクトの作成
はじめる前にWindows では、ARM DS-5 ツールを開くには、Windows > All Programs > ARM DS-5 > Eclipse for DS-5 を選択します。開始する前に、ワークスペースを選択します。選択されていない場合、DS-5 の右上のタブにある C/C++ Perspective に変更します。
1. File > New > C Project を選択して、新しい C プロジェクトを作成します。
2. Project Type で「Hello World ANSI C Project」を選択して、Toolchains で「ARM Compiler 5 (DS-5 built-in)」を選択して、Project Name フィールドにユニークなプロジェクト名を入力します。 例えば、bare-metal-hello-world-01 です。
Altera Corporation ベア・メタルのユーザー・ガイド
図 6: 選択したタイプの C プロジェクトの作成
注意: DS-5 は、ベア・メタル・アプリケーションをコンパイルするための ARM コンパイラ の 2 つのバージョンが供給されています。 ARM コンパイラ 5 は、ARMv8 以外のすべ ての ARM アーキテクチャをサポートしています。 ARM コンパイラ 6 は、アーキテク チャの ARMv8 および ARMv7-A、またアーキテクチャの ARMv7-R、ARMv7-M と ARMv6-M のアルファ・サポートをサポートしています。アルテラ SoC FPGA は、ARM コンパイラ 5 が必要です。
ARM コンパイラの両方のバージョンは、DS-5 のすべてのエディションは、それのため のライセンスが含まれ、ライセンス管理されていません。
任意のライセンス情報については、 アルテラSoC EDSのユーザー・ガイドの「ライセ ンス」の章を参照してください。
3. Finish を選択します。
ベア・メタル・ハローワールド- 01.cのソースコードは、エディタ・ビューに表示されます。
図 7: Bare Metal "Hello World - 01" Code Snippet
OCRAM
にベア・メタル・アプリケーションを検索する新規スキャッタ・ファイルの作成
1. スキャッタ・ファイルを作成します。プロジェクトを右クリックし、「New > Other...、そして 「Scatter File Editor > Scatter File」を選択します。
スキャッタ・ファイルは、テキス・トファイル内の記述を使用してリンカにイメージのメモ リ・マップを指定することができます。ターゲット・メモリ内のプログラムの配置を決定す るために、ARM コンパイラ、リンカによって使用されています。 の作成 Altera Corporation ベア・メタルのユーザー・ガイド フィードバック
図 8: スキャッタ・ファイルの作成
2. プロジェクト名、 bare-metal-hello-world-01を選択し、スキャッタ・ファイル名を入力
します(例えば、scatter_OCRAM.scat)
図 9: スキャッタ・ファイルの設定
3. Finish を選択します。
新しいファイルは自動的にプロジェクト・エクスプローラー]ビューに表示されます。
4. Cyclone V または Arria V デバイスをターゲットとする場合scatter_OCRAM.scatエディタ
ビューで、次のように入力します。 OCRAM 0xFFFF0000 0x10000 { APP_CODE + 0 { * (+ RO , + RW , + ZI ) }
ARM_LIB_STACKHEAP 0xFFFF8000 EMPTY 0x8000 ; Application heap and stack { }
}
の作成
Altera Corporation ベア・メタルのユーザー・ガイド
ビューには、次のようになります。 図 10: Scatter OCRAM Code Snippet
注意: リンカ・スクリプトは、リンカにアプリケーションをリンクする方法について指示し ます。 注意: • OCRAM ベース・アドレス( 0xFFFF0000)とサイズ(0x10000 )を定義する 注意: • OCRAM ですべてのアプリケーションのセクションをロードする 注意: • アドレス0xFFFF8000から始まるスタックとヒープのための 32 KB(0x8000 )の最大 値に割り当てをする
注意: パラメータは、簡単に0xFFE00000に位置する OCRAM の 256 KB がある Arria 10 デバイ
スを標的とするために変更することができます。
5. メモリ・マップがどのように見えるかを示すためにだけスキャッタ・ファイルの下に位置す る Regions/Sections タブを選択します。
図 11: スキャッタ・ファイル領域
6. 変更を保存するには、 File > Save を選択します。
7. スキャッタ・ファイルは、プロジェクトで作成された後、プロジェクトのプロパティに関連
することが必要です。 Project Explorer]ビューでプロジェクト名を選択し、Properties
を選択し、右クリックします。
8. C/C++ Build > Settings > Tool Settings > ARM Linker 5 > Image Layout を選択します。
9. Scatter file (--scatter)テキスト・フィールドでは、プロジェクト・フォルダにある新しく作成 されたスキャッタ・ファイルを検索します。
10.Apply そして OK を選択します。
の作成
Altera Corporation ベア・メタルのユーザー・ガイド
図 12: スキャッタ・ファイルの場所の設定
プロジェクトのビルドとデバッグ
1. 次に、プロジェクトを右クリックし、「プロジェクトのビルド」を選択します。
「デバッグ」のディレクトリ作成が作成され、コンパイルされたオブジェクト・モジュールが 配置されます。
図 13: Bare Metal "Hello World - 01" Built Done
2. プログラムをダウンロードとデバッグするには、Run > Debug Configurations を選択します。 3. 右 DS-5 デバッガをクリックして、新しいデバッグ・コンフィグレーションを作成するには、
New を選択します。
Altera Corporation ベア・メタルのユーザー・ガイド
図 14: 新しいデバッグ・コンフィギュレーション
4. Connection タブでは、Altera > Cyclone V SoC (Single Core) > Bare Metal Debug > Debug Cortex-A9_0 そして Target Connection プルダウンメニューから「USB-Blaster の」を選択します。
図 15: 新しいデバッグ・コンフィギュレーション・ターゲット接続の設定 5. Browse をクリックして使用できるベア・メタル・デバッグ接続を選択します。 これは、使用可能なデバッグ接続のリストを返します。 図 16: 接続ブラウザ Altera Corporation ベア・メタルのユーザー・ガイド フィードバック
6. ハードウェアを選択し、Select をクリックします。 「New_Configuration」から「bare-metal-hello-world-config」にコンフィギュレーション前を変更し、Apply を選択します。
図 17: ベア・メタル Hello World Config の接続の設定
7. Files タブに移動し、「ワークスペース」をクリックしてダウンロードするアプリケーションを
選択します。また、建設されたオブジェクト・モジュールの
bare-metal-hello-world-01.axfを選択します。
これは、プロジェクト内の Debug フォルダにある必要があります。 「ロード・シンボル」が 選択されていることを確認して 、Apply をクリックします。
図 18: Bare Metal Hello World Config のファイルの設定
8. Debugger タブに移動し、 Run control の下で、 Debug from symbol が 「メイン」に設定され ていることを確認します。
Altera Corporation ベア・メタルのユーザー・ガイド
図 19: ベア・メタルの Hello World Config のデバッガの設定
9. アプリケーションをロードとデバッグするために Debug を選択します 。
これは、DS-5 Debug Perspectiveに変更するクエリを実行します Yes を選択します。 図 20: パースペクティブ・スイッチの確認 10.これは、DS-5デバッグ・パースペクティブに切り替わり、次にアプリケーションをダウンロ ードと実行し始めます。 プログラムは、メインで停止し、そこに待機します。Commandsビューで、エントリ・ポイ ントが 0xFFFF0000 であることに通知してください(オンチップ RAM 用のスキャッタ・ファ イルで指定された開始アドレスである)。
図 21: メインで停止する OCRAM デバッグ
11.Step Over Source Line をクリックして、または F6 キーを押します。 12.その後、再び「ステップ」。
出力は、App Consoleビューに表示されます。
Altera Corporation ベア・メタルのユーザー・ガイド
図 22: "App Console"の出力
13.アプリケーションから終了し Continue を選択します。
14.bare-metal-hello-world-0.1.cSourceビューの左マージンをダブル・クリックしてブレ
ークポイントを作成します。 Breakpointsビューが表示されない場合、選択して開きます。
図 23: デバッグ・ブレークポイントの設定
プリローダー
プリローダーは、起動中のメモリ・コントローラを含むボードの一部のコンポーネントを構成す るブート・ストラップ・プログラムです。ボード上のフラッシュ・デバイスのいずれかに焼かれ た場合、それは通常、自動的に実行されます。 テストの目的のために、またはプリローダーが Flash に焼かれている前に、プリローダーは、 DS-5 からそれをダウンロードと実行することによって実行することができます。デフォルトのプリローダーのードおよび実行
プリローダーを実行するためのいくつかのオプションがあります。 • それは、DS-5 コマンド・スクリプト経由で実行することができます。 • これは、DS-5 プロジェクトにインポートし、他のベア・メタル・アプリケーションと同様に 起動することができます。• これは、DS-5 のプロジェクトから独立して DS-5 Run Control (Debug Control)によって起動す ることができます。 このセクションでは、プリローダーが Cyclone V SoC 開発キットのための DS-5 プロジェクトか ら独立して起動する方法を示しています。DS-5 プロジェクトにプリローダーを任意にインポー トするには、「DS-5 プロジェクトにプリローダーのインポート」を参照してください。 Altera Corporation ベア・メタルのユーザー・ガイド フィードバック
このプロセスは、プリローダーをダウンロードして実行するために、DS-5 の Run Configuration (Debug Configuration)を使用しています。
1. 開始するには、新しい Debug Configuration を作成します。 > Debug Configurations を実行し ます 。
2. DS-5 Debugger を選択して、「type filter text」フィールドの上に配置されている New アイコン をクリックしてください。
これは「New_configuration」という名前の新 しい Debug Configuration を作成します。 「RunPreloaderDefault」のような Name フィールドに名前を変更します。
3. Connection タブで、 Altera > Cyclone V SoC (Single Core) > Bare Metal Debug > Debug Cortex-A9 を選択し、Target Connection のプルダウン・メニューから「USB-Blaster の」を選択しま す。 図 24: RunPreloaderDefault ターゲット接続の設定 4. 物理的なデバッグ接続を選択するには、 Connections フィールドの次に、特定のデバッグ・ ハードウェアの接続を選択するには Browse をクリックします。 注意: 1 つしか接続デバッガがない場合、リストには 1 つだけが表示されます(図示のよう に)。
図 25: 接続ブラウザ
図 26: RunPreloaderDefault の接続の設定
5. Files タブを選択し、プリローダー・イメージの(“u-boot-spl”)を参照するには、「File System…」 を使用します。
Altera Corporation ベア・メタルのユーザー・ガイド
プリローダー・イメージは、典型的に次の場所にあります。<SoC EDS installation folder>\ embedded\examples\hardware\cv_soc_devkit_ghrd\software\preloader\uboot-socfpga\spl\u-boot-spl.
注意: 「Load symbols」のオプションのチェックを外します。 図 27: RunPreloaderDefault ファイルの設定
6. Debugger タブで、 Run Control の下に「エントリ・ポイントからのデバッグ」を選択し、以 下のコマンドを有効にするには、 Execute debugger commands を選択します。
• Run • Pause 1s • Interrupt • Quit
図 28: RunPreloaderDefault のデバッガの設定
7. 照会あれば、DS-5 デバッグ・パースペクティブに切り替えるには、Apply、Debug、そして 「Yes」選択します。
関連情報
DELETEImporting Preloader into a DS-5 Project
DS-5
プロジェクトへのプリローダーのインポート
「ロードとデフォルトのプリローダーの実行」の章に記載されているように、デフォルトのプリ ローダーを直接ロードと実行する代わりに、ワークスペース内のプロジェクトにプリローダーの 実行可能ファイル(u-boot-spl)をインポートし、 Workspace をクリックすることにより(次のセ クションに示すように)、それを閲覧することができます 。これは、デフォルトのプリローダー にへの変更からプロジェクトを分離します。 プリローダーのインポート はじめる前に これを行うには、まずプロジェクトにプリローダーをインポートする必要があります。 1. プロジェクトを右クリックし、Import を選択します。そして、General > File System を選択し、Next をクリックします。
Altera Corporation ベア・メタルのユーザー・ガイド
図 29: ファイル・システムのインポート
2. 例えば、プリローダーの実行(U-ブート-SPL)を参照またはディレクトリへのフルパスを入 力します。<SoC EDS installation path>\embedded\examples\hardware\cv_soc_devkit_ ghrd\software\preloader\uboot-socfpga\spl.
図 30: u-boot-spl のインポート
4. 新しくインポートされたファイルは、Project Explorer に表示されていることを確認します。
Altera Corporation ベア・メタルのユーザー・ガイド
図 31: Project Explorer での u-boot-spl ファイル
新しいデバッグ・コンフィギュレーションおよびデバッグ・プリローダーの作成
1. ターゲット接続プルダウン・メニューから「USB-Blaster」を選択し、Browse をクリックして 使用可能なベア・メタルデバッグ接続を選択します。
図 32: Run Preloader Hello の接続の設定
2. Files タブで、 Workspace を選択し、プロジェクトそしてプリローダー・ファイル
“u-boot-spl”を閲覧します。
3.「Load Symbols」の横にあるチェック・ボックスをオフにします。
Altera Corporation ベア・メタルのユーザー・ガイド
図 33: Run Preloader Hello のファイル設定
4. Debugger タブで、 Run Control の下に「Debug from Entry Point」を選択し、以下のコマンド を有効にするには、 Execute debugger commands を選択します。
• Run • Pause 1s • Interrupt • Quit
図 34: Run Preloader Hello のデバッガ設定 5. 照会あれば、DS-5 Debugパースペクティブに切り替えるには、Apply、Debug、そして 「Yes」を選択します。 図 35: パースペクティブ切り替えの確認 6. DS-5 AEは、同様に 、簡単なベア・メタルの例が走った方法に、オンチップ RAM にプリロ ーダーをロードして実行する必要があります。これは、SDRAM メモリ・コントローラを初期 化し、停止そして待機します。 表示は次のようになります。 Altera Corporation ベア・メタルのユーザー・ガイド フィードバック
図 36: Run Preloader Hello のデバッグ・ビュー この Run Controll は、現在プリローダーを起動するために使用することができます。 この方 法は、特定の DS-5 プロジェクトにプリローダーの画像を対応付けていますが、それは他のプ ロジェクトで使用することができます。しかし、プリローダー・イメージが含まれているプ ロジェクトを覚えておくことが重要です。 それは同様に、簡単なベアメタルの例が実行されたどのように、オンチップ RAM にプリロー ダーをロードして実行する必要があります。これは、SDRAM メモリ・コントローラをコンフ ィギュレーションし、停止します。
その後、SDRAM メモリに"Hello World"の例をダウンロードして実行することができます。 Hello World の例については、以前に作成したのと同じデバッグ・コンフィギュレーションを 使用することができます。
SDRAMメモリ内の「Hello World」の例のダウンロードとデバッグ
1. Run > Debug Configurations を選択します。 同じデバッグ設定を選択します。
図 37: Bare Metal "Hello World" Config デバッガ
2. 起動するように Debug を選択します 。
図 38: メインで SDRAM 停止からの「Hello World」の実行
Altera Corporation ベア・メタルのユーザー・ガイド
Commandsビューでは、エントリ・ポイントが今マップされた SDRAM の始まりであるS: 0x02000000であることを表示するにあなたは気づくべきです。
3. 次のソース行にプログラム・カウンタの進行状況を表示するには、「Step Over Source Line」ア イコンをクリックします。または、F6 を押下します。
4. App Consoleビュー内の「!!!の Hello World!!!」メッセージを見るために、もう一度それをク リックします 。
App Consoleビューが現在選択されていない場合には、文字メッセージがあることを示す
ために太字で強調されています。出力を表示するには、 App Consoleビューを選択します。
図 39: Bare Metal "Hello World" App Console
図 40: Bare Metal "Hello World" App Console End
6. 再実行するには、 Debug Controlビューのリストからデバッグ接続を選択します。この場
合には、「bare-metal-hello-world-01」です。そして、黄色の矢印をクリックします。 これは、再び同じデバッグ設定を実行します(またメインから実行します)。
7. このアプリケーションを終了しているときは、それをターゲットから切断することができま す。切断するには、Debug Connection を右クリックして、「Disconnect from Target」をクリッ クしてください。
Altera Corporation ベア・メタルのユーザー・ガイド
図 41: Bare Metal "Hello World" App Console Disconnected Debug Controlビューから切り離さデバッグ接続を削除する必要はありません。それは一 度だけ実行する必要があるので、それを除去することができます。 注意: 切断されたデバッグ接続を削除しない場合は、 Debug Controlビューから選択し、 その上の Connect to Target アイコンをクリックして設定を再起動することができま す。 ボードを再起動した場合、SDRAM でアプリケーションを実行する前に、メモリ・コントロー ラを設定するには、プリローダーを実行する必要があることを忘れないでください。これを 行う 1 つの簡単な方法は、 Debug Controlビューで切断されたデバッグ接続を維持するこ とです。そして、それを選択し、「ターゲットに接続」をクリックしてください。これは、以 前の打ち上げを再生します。 8. 完全にこのアプリケーションを終了しているときは、 Debug Controlビューから削除する ことができます。接続は、それらを除去するために切断されなければなりません。切断する には、 Debug Connection を選択し、「Disconnect from Target」をクリックしてください。切断 されたら、「Remove Connection」または「Remove All Connections」を選択することができま す。
9. Debug Controlビューからデバッグ接続を除去した後、プリローダーのために作成された デバッグ設定を使用して、プリローダーを再実行します。 「Hello World」アプリケーション 用に作成されたデバッグ設定を使用して、デモを再実行します。
SDRAM
の代わりにオンチップ RAM から実行するには、プロジェクトを変更しま
す。
単純な「Hello World」アプリケーションを作成し、アルテラの SoC のオンチップ RAM をダウン ロードとデバッグするプロセスを完了した後、次のステップでは、オンチップ RAM の代わりに SDRAM で実行する同じプロジェクトを設定することです。 任意の SDRAM を使用するには、SDRAM コントローラを構成する必要があります。これは、プ リローダーをロードして実行することによって行われます。 ロードとプリローダーの実行の詳細については、「Preloader」を参照してください。 関連情報 22 ページのプリローダー
新しいスキャッタ・ファイルを作成する 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.
1. SDRAM のスキャッタ・ファイルを作成します。 File > New > Others...の下に Scatter File Editor > Scatter File を選択します。
2. Next をクリックし、scatter_SDRAM.scat で新しいスキャッタ・ファイルのファイル名を入力 し、Finish をクリックします。 3. 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 { す。 Altera Corporation ベア・メタルのユーザー・ガイド フィードバック
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
4. 新しいスキャッタ・ファイルは、Project Explorer ビューに表示されていることを確認します。
図 43: Project Explorer での SDRAM Scatter ファイル
5. プロジェクトで新しいスキャッタ・ファイルを関連付けます。プロジェクトを右クリックし、 Properties > C/C++ Build > Settings > ARM Linker 5 > Image Layout を選択します。
6. 新しいスキャッタ・ファイルを参照します。 7. あるいは、閲覧の代わりに、次のようなパスを入力します: ${workspace_loc}\bare-metal-hello-world-01\scatter_SDRAM.scat)。また、Apply と OK を選択します。 ョンの検索 Altera Corporation ベア・メタルのユーザー・ガイド フィードバック
図 44: SDRAM スキャッタ・ファイルの場所の設定 8. プロジェクトを右クリックし、新しいスキャッタ・ファイルで再構築するには、 Build Project を選択します。アプリケーションをダウンロードして実行する前に作成した同じデバッグ設 定を使用します。 プログラムは、メインで停止し、そこに待機します。 Commands ビューで、エントリ・ポイ ントは0x02000000、ある注目してください。これは、SDRAM のスキャッタ・ファイルで指定 された開始アドレスです。 ョンの検索
図 45: SDRAM の開始アドレスで停止するプログラム
オンチップ RAM から実行するシンプルなベア・メタル・プロジェクトを作成す
る別の方法
OCRAM から実行シンプルなベア・メタルプロジェクトを作成するには、ARM DS-5 環境にアル テラ SoC EDS ツールに含まれているベア・メタルの例をインポートすることもできます。単純 な「Hello World」のベア・メタル・プロジェクトでは、<SoC EDS installation path>\embedded \examples\software”から次のいずれかをインポートすることができます。
• Altera-SoCFPGA-HelloWorld-Baremetal-ARMCC.tar(ARM コンパイラを使用することにより) • Altera-SoCFPGA-HelloWorld-Baremetal-GNU.tar(GNU CC コンパイラを使用することにより) 注意: 上記のベア・メタル・プロジェクトの例に、Arria 10、の Arria V または Cyclone V SoC の
開発キットで実行することができます。
別の方法
Altera Corporation ベア・メタルのユーザー・ガイド
図 46: エンベデッド・ソフトウェアのデザイン・リストの例
これらの例は、プロジェクトが Makefile の設定や構成に基づいてコンパイルされる make-based の例です。「Simple Bare-Metal Project Using On-Chip-RAM」セクションに示すように簡単なベア・ メタル・プロジェクトを作成することにより、 m akefile が自動生成される managed-make のプ ロジェクトを作成しています。 プロジェクトをインポート、ビルドおよびデバッグする方法の詳細については、「メイク・ベー スの例でインポート、ビルドとデバッグ」セクションを参照してくださいすることができます。 関連情報 • 43 ページのメイク・ベースの例でのインポート、ビルドおよびデバッグ • 6 ページのオンチップ RAM の使用シンプルなベア・メタルプロジェクト
メイク・ベースの例でのインポート、ビルドおよびデバッグ
アルテラ SoC EDS メイクベースの例のインポート、ビルド、およびデバッグは、ARM DS-5 環境 にアルテラ SoC EDS ツールに含まれている例のインポートとデバッグをカバーしています。 次のセクションに含まれているメイク・ベースの例は、Cyclone V の SoC 開発キット上の Golden Hardware Reference Design (GHRD) FPGA イメージをロードし、HPS が FPGA ファブリックに
ペリフェラルを制御することができることをテストするために、LED を点滅します。この例で は、ARM コンパイラを使用してコンパイルします。
プロジェクトのインポート
1. DS-5 の下で、File > Import...を選択します。 2. 表示されたダイアログボックスで、「ワークスペースに既存のプロジェクト」を選択し、Next をクリックします。 図 47: 既存のプロジェクトのインポート3.「Select archive file」と示されているように、インストールのソフトウェア例ディレクトリを参 照し選択します。
Altera Corporation ベア・メタルのユーザー・ガイド
図 48: エンベデッド・ソフトウェアのデザイン例のリスト
注意: ファイルは、<SoC EDS installation path>\embedded\examples\softwareで確認できま す。使用状況に応じて参照するための他の例をインポートすることができます。 4. “Altera-SoCFPGA-HardwareLib-FPGA-CV-ARMCC.tar.gz”のアーカイブを選択し、Open を選択 します。 5. Finish をクリックして、Quartus II プロジェクトを完了します。
プロジェクトのビルド
これでプロジェクトがインポートされていることになります。現在のツール・チェイン(ARM コンパイラ 5(DS-5 内蔵))は、ツール・チェイン・エディタで正しく選択されていることを確 認してください。これは、以下の手順で行うことができます。 1. プロジェクトを右クリックし、「Properties」を選択します。 2. C/C++ Build > Tool Chain Editor を選択します。プロジェクトを右クリックし、「Build Project」を選択します。これは、次のことを実行するメ イク・ベースのビルドを開始します。
1. • プロジェクトに HWLibs からの追加のソースファイルをコピーします。 • スタンダードのアルテラのツールと objcopy をを使用して、FPGA イメージのオブジェク ト・ファイルを作成します。 • AXF 実行ファイル(ELF 互換)にすべてをコンパイルしてリンクします。 注意: 発生することの詳細については、プロジェクトの一部である Makefile を参照します。 プロジェクトに含まれるのは適切に ARM コアを初期化するために使用されるキーアイテムの 数です。 • ARM ツールがはるかに簡単にリンクするために使用するスキャッタ・ファイル(scatter.scat) 注意: GNU リンカの構文 • デバッグ・フローを制御する DS スクリプト・ファイル(debug-hosted.ds) • プリローダーをロードと実行 • プロジェクトの実行可能な(HWLIB.axf)をロードし、「メイン」のシンボルで停止 • この例の詳細を説明するreadme.txtファイル
プロジェクトのデバッグ
1. 図のように、プロジェクトを右クリックし、Debug > Debug As > Debug Configurations を選択 します。 図 49: 「Altera-SoCFPGA-HardwareLib-FPGA-CV-ARMCC-Debug」デバッグのコンフィギュレーション 2. 次 Connections フィールドに、Browse を選択し、使用可能な接続から、使用しているハード ウェア(アルテラの USB ブラスタまたは DSTREAM)を選択し、Select をクリックします。 Altera Corporation ベア・メタルのユーザー・ガイド フィードバック
図 50: 接続ブラウザ 3. Apply を選択し、プロセッサを構成するソフトウェアをロードし、デフォルトとして「メイ ン」のシンボルで停止、それを実行するデバッグセッションを開始するために、Debug をク リックします。 図 51: メインで停止デバッグ 4. コードの実行を開始するために ボタンをクリックします。コードが完了するまで実行す る必要があります。その他のオプション( )はDebug Controlウ ィンドウにもあります。 App Consoleウィンドウには、正しい結果が表示されるはずです。
図 52: App Console に表示されるアプリケーションの終了
メイク・ベースのプロジェクトから派生した DS-5 ARM HWLIBs プロジ
ェクト
このセクションでは、SoC EDS が付属し、管理されるメイク・プロジェクトに変換するメイク・ ファイル・ベースのサンプルプロジェクトを取ります。 Eclipse の「Managed Make」は IDE(こ の場合は DS-5)が任意の Makefile を生成し、維持するの世話をすることを意味します。 この方法を使用するときは、GUI からプロジェクト設定を変更することができます。 注意: アプリケーションにリンクされる C オブジェクト・コードに FPGA SOF ファイルを変換す るような一般的な手順を自動化することはできません。 メイク・ファイルがあるので、管理されるメイク・プロジェクトには、コマンド・ラインからコ ンパイルすることができます。したがって、ビルド自動化されたコマンドを使用して行うことが できます。
プロジェクトの作成
はじめる前に プロジェクトの作成を開始する前に、「メイク・ベースの例でインポート、ビルドとデバッグ」 セクションおよび正常にコンパイルされるサンプル・プロジェクトを理解することを確認してく ださい。1. File > New > C Project を選択して、新しい「managed make」プロジェクトを作成します。 2. 示すように、好みの名前を付け、表示されたダイアログ・ボックスに入力します。たとえば、
armcc_fpga_managed_make
Altera Corporation ベア・メタルのユーザー・ガイド
図 53: 新しい ARMCC FPGA Managed Make プロジェクトの作成
関連情報
ファイルのコピー
先に進む前に HWLibs FPGA ARMCC プロジェクトがインポートされ、正常にコンパイルされて いることを確認してください。コンパイルされたプロジェクトは、以前に、メイクファイルで自 動生成され、FPGA のオブジェクト・コード・ファイルを作成します。 はじめる前に アルテラ SoC EDS サンプル・プロジェクトからすべての C コードをコピーします;(.c 拡張との ファイル)、alt_interrupt_armcc.s、スキャッタ・ファイルおよび FPGA オブジェクト・コード (soc_system_dc.o) 1. ファイルを選択して、右クリックし、Change File をクリックします。 Altera Corporation ベア・メタルのユーザー・ガイド フィードバック
図 54: SoC EDS サンプル・プロジェクトからコピーするファイル 2. 新しいプロジェクト(armcc_fpga_managed_make)を右クリックし、Paste を選択します。 画像に表示されるファイルはすべて、新しいプロジェクトにコピーされている必要がありま す。 次のセクションでビルド・システムを設定した後、C コードは、自動的に FPGA のオブジェ クト・ファイルで構築とリンクされてます。
ビルド設定のコンフィギュレーション
構築する準備をします。DS-5 のProject Explorerウィンドウでプロジェクトを右クリックし、Properties を選択し、 C/C++ Build に移動してから Settings を選択します。
図 55: ARMCC FPGA Managed Make の設定
コンパイラ、アセンブラ、リンカの設定の変更が必要です。 「ARM C コンパイラの設定」セク ションの手順に従ってください。
関連情報
ARM C Compiler Settings
ARM Cコンパイラの設定
1.「 Target 」で、ターゲット CPU を「Cortex-A9」に設定して、「Disable unaligned accesses」ボ ックスをオンにします。
Altera Corporation ベア・メタルのユーザー・ガイド
図 56: ARMCC ターゲット設定 2. FPGA をコンフィギュレーションするための責任のコードが HPS に DMA を使用しているこ とを確実にするプリプロセッサマクロ"ALT_FPGA_ENABLE_DMA_SUPPORT = 1"を追加しま す。 図 57: ARMCC プリプロセッサ設定 3. Cyclone V デバイス・ファミリを設定するためにプリプロセッサのマクロ「soc_cv_av」を追加 します。 4. 次の(「Includes」)のカテゴリを選択します。そして、Build Settings に含めるのパスを追加す るには右に「+」ボタンをクリックします。 図 58: ARMCC インクルードのパス設定
図 59: ARMCC ソース言語の設定
「Optimizations」、「Debugging」、「Warnings and Errors」、および「Miscellaneous」の設定はデ フォルト値のままにしておきます。
ARMアセンブラの設定
以下に一致するように、「Target」の設定を変更します。 図 60: ARM アセンブラのターゲット設定
ARMリンカの設定
1. Target セクションの「Cortex-A9」として「Target CPU(--cpu)」を定義します。
Altera Corporation ベア・メタルのユーザー・ガイド
図 61: ARM リンカのターゲット設定 2.「alt_interrupt_vector」などのイメージのエントリ・ポイント(--entry)として定義され、「Image Layout」セクションでのスキャッタ・ファイル(--scatter)の位置を追加してください。 図 62: ARM リンカの画像レイアウトの設定 3. デフォルト値で、「Libraries」、「Optimization」、「Additional Information」、および「Warnings and Errors」はデフォルト値のままにしておきます。 4. Miscellaneous 設定セクションで、FPGA のオブジェクト・ファイルを追加します。 5. Add...アイコンをクリックし、「armcc_fpga_managed_make」のワークスペースの下に FPGA の
図 63: ARM リンカのその他の設定
Altera Corporation ベア・メタルのユーザー・ガイド
図 64: ARM リンカのその他の設定 - パート 2 6. Apply そして OK をクリックし、設定とリターンを適用ます。
プロジェクトのビルド
作成したプロジェクトを右クリックし、「Build Project」オプションにプルダウンします。これ は、プロジェクトのデフォルト・ビルド・ディレクトリ内のプロジェクトのビルドを開始しま す。プロジェクトの実行/デバッグ
デバッグ・コンフィギュレーションの作成
1. プロジェクトを右クリックし、Debug As > Debug Configurations オプションにプルダウンしま す。
これは、 Debug Configurations ダイアログ・ボックスが開きます。
2. 新しいコンフィギュレーションを作成し、以下に示されるように、デバッグ・ハードウェア をセットアップします。
図 65: ARMCC FPGA Managed Make Debug の接続設定
3. Browse をクリックして使用できるベア・メタルデバッグ接続を選択します。これは、使用可 能なデバッグ接続のリストをリターンします。
Altera Corporation ベア・メタルのユーザー・ガイド
図 66: 接続ブラウザ
4. OK をクリックし、右上の Files タブに移動します。 「Workspace...」を選択し、プロジェクト の Debug サブディレクトリに AXF ファイルを探します。
図 67: ARMCC FPGA Managed Make Files の設定
最小限のプリローダー
最小限のプリローダー(MPL)は、General Public License(GPL)のプリローダーのための代替で す。これは BSD ライセンスを使用し、自由に配布し、そのライセンスの条件に応じて変更する ことができます。 MPL は、アルテラの GPL、Preloader によってサポートされる機能のサブセッ トをサポートしています。 MPL は、PLL を初期化し、信号をリセットし、IOCSR およびピン多重化をコンフィギュレーシ ョンします。そして、その他の構成ベースのプリローダー・ジェネレータ・ファイルの設定を実 行します。必要な場合、ブート・ソースから FPGA をロードすることができます。次に、そのイ メージに RAM と手制御へのブート・ソースからのセカンダリ・イメージを読み出します。 MPL のこのバージョンは、QSPI、SD/MMC および FPGA からの起動をサポートしています。 注意: NAND ブートがサポートされていません。 MPL は、その機能のほとんどのアルテラ HWLib ドライバを使用しています。また、メモリ・マ ップの定義と基本的なリードおよびライトのコマンドのために、アルテラ HWLib 南カルフォル ニアのフォルダを使用しています。
MPL は ARMCC と GNU GCC コンパイラの両方をサポートしています。 MPL は、Cyclone V SoC と Arria V SoC デバイスの両方をサポートしています。 注意: Arria 10 SoC デバイスがサポートされていません。 次のセクションのサンプル・プロジェクトは、Cyclone V SoC のためのものです。適切なファイ ル名を選択するために、必要に応じて例を変更してください。
最小限のプリローダー・プロジェクト例
はじめる前にアルテラ SoC EDS に設けられた最小限のプリローダー(MPL)プロジェクトは、アルテラ SoC EDS HWLIB を使用した非 GPL プリローダーです。 MPL をビルドするには、ARM コンパイラ・ ツールチェーンや GCC のいずれかが v14.1 よりも大きくなければなりません。
「Importing an Existing Bare Metal Project into DS-5」章の手順を使用して、MPL のプロジェクトを インポートします。
1. File > Import の下の General > Existing Projects into Workspace を選択します。
Altera Corporation ベア・メタルのユーザー・ガイド
図 68: 既存のプロジェクトのインポート
2. <SoC EDS installation path>\embedded\examples\softwareから
Altera-SoCFPGA-HardwareLib-MPL.tar プロジェクトを選択して、Finish をクリックして、プロジェクトをイン ポートします。
図 69: インポート MPL プロジェクト・ファイル
3. Project Explorer タブから、すべてのプロジェクト・ファイルが存在していることを確認しま す。
Altera Corporation ベア・メタルのユーザー・ガイド
図 70: MPL プロジェクト・ファイルのリスト ビルドおよびデバッグの詳細については、「メイク・ベースの例でインポート、ビルドとデバ ッグ」セクションを参照してください。 関連情報 43 ページのメイク・ベースの例でのインポート、ビルドおよびデバッグ