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 are trademarks of Intel Corporation in the US and/or other countries. Other marks and brands may be claimed as the property of others. Intel warrants performance of its FPGA and semiconductor products to current specifications in accordance with Intel's standard warranty, but reserves the right to make changes to any products and services at any time without notice. Intel assumes no responsibility or liability arising out of the application or use of any information, product, or service described herein except as expressly agreed to in writing by Intel. Intel customers are advised to obtain the latest version of device specifications before relying on any published information and before placing orders for products or services. ISO 9001:2008 登録済 www.altera.com 101 Innovation Drive, San Jose, CA 95134
2 ベア メタルの概要 図 1: ベア メタル アプリケーション UG-01165 2015.11.30 ベア メタル アプリケーションは 多くの方法のいずれかで起動することができます 次の 3 つのシナリオでは プリローダーのブート ステージは システム ハードウェアの初期化を完了し ベア メタル イメージを検証またはブート モジュールとして構成した後に起動されます
UG-01165 2015.11.30 ベア メタル開発環境の前提条件 3 典型的なベア メタル アプリケーション - ベア メタル アプリケーションがプリローダーから直接実行される 図 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 ベア メタル開発環境の前提条件 次のツールにインストールする必要があります
4 ベア メタルのコンパイラ Altera SoC EDS USB-Blaster のドライバ UG-01165 2015.11.30 注意 : 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
UG-01165 2015.11.30 ベア メタル開発フロー 5 ベア メタル開発フロー ベア メタル アプリケーションのベースによる 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 ベア メタルプロジェクト管理 を参照してください 関連情報 GCC Bare-Metal Project Management
6 オンチップ RAM の使用シンプルなベア メタルプロジェクト Getting Started with Bare Metal Project Management UG-01165 2015.11.30 オンチップ 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 です
UG-01165 2015.11.30 プロジェクトの作成 7 図 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 のすべてのエディションは それのためのライセンスが含まれ ライセンス管理されていません
8 OCRAM にベア メタル アプリケーションを検索する新規スキャッタ ファイル の作成任意のライセンス情報については アルテラ SoC EDS のユーザー ガイドの ライセンス の章を参照してください 3. Finish を選択します ベア メタル ハローワールド- 01.c のソースコードは エディタ ビューに表示されます 図 7: Bare Metal "Hello World - 01" Code Snippet UG-01165 2015.11.30 OCRAM にベア メタル アプリケーションを検索する新規スキャッタ ファイルの作成 1. スキャッタ ファイルを作成します プロジェクトを右クリックし New > Other... そして Scatter File Editor > Scatter File を選択します スキャッタ ファイルは テキス トファイル内の記述を使用してリンカにイメージのメモリ マップを指定することができます ターゲット メモリ内のプログラムの配置を決定するために ARM コンパイラ リンカによって使用されています
UG-01165 2015.11.30 OCRAM にベア メタル アプリケーションを検索する新規スキャッタ ファイルの作成図 8: スキャッタ ファイルの作成 9 2. プロジェクト名 bare-metal-hello-world-01 を選択し スキャッタ ファイル名を入力 します ( 例えば scatter_ocram.scat)
10 OCRAM にベア メタル アプリケーションを検索する新規スキャッタ ファイルの作成図 9: スキャッタ ファイルの設定 UG-01165 2015.11.30 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 { } }
UG-01165 2015.11.30 OCRAM にベア メタル アプリケーションを検索する新規スキャッタ ファイルの作成ビューには 次のようになります 図 10: Scatter OCRAM Code Snippet 11 注意 : リンカ スクリプトは リンカにアプリケーションをリンクする方法について指示します 注意 : OCRAM ベース アドレス ( 0xFFFF0000) とサイズ (0x10000 ) を定義する 注意 : OCRAM ですべてのアプリケーションのセクションをロードする 注意 : アドレス 0xFFFF8000 から始まるスタックとヒープのための 32 KB(0x8000 ) の最大値に割り当てをする 注意 : パラメータは 簡単に 0xFFE00000 に位置する OCRAM の 256 KB がある Arria 10 デバイスを標的とするために変更することができます 5. メモリ マップがどのように見えるかを示すためにだけスキャッタ ファイルの下に位置する Regions/Sections タブを選択します
12 OCRAM にベア メタル アプリケーションを検索する新規スキャッタ ファイルの作成図 11: スキャッタ ファイル領域 UG-01165 2015.11.30 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 を選択します
UG-01165 2015.11.30 プロジェクトのビルドとデバッグ 13 図 12: スキャッタ ファイルの場所の設定 プロジェクトのビルドとデバッグ 1. 次に プロジェクトを右クリックし プロジェクトのビルド を選択します デバッグ のディレクトリ作成が作成され コンパイルされたオブジェクト モジュールが配置されます
14 プロジェクトのビルドとデバッグ UG-01165 2015.11.30 図 13: Bare Metal "Hello World - 01" Built Done 2. プログラムをダウンロードとデバッグするには Run > Debug Configurations を選択します 3. 右 DS-5 デバッガをクリックして 新しいデバッグ コンフィグレーションを作成するには New を選択します
UG-01165 2015.11.30 プロジェクトのビルドとデバッグ 15 図 14: 新しいデバッグ コンフィギュレーション 4. Connection タブでは Altera > Cyclone V SoC (Single Core) > Bare Metal Debug > Debug Cortex- A9_0 そして Target Connection プルダウンメニューから USB-Blaster の を選択します
16 プロジェクトのビルドとデバッグ UG-01165 2015.11.30 図 15: 新しいデバッグ コンフィギュレーション ターゲット接続の設定 5. Browse をクリックして使用できるベア メタル デバッグ接続を選択します これは 使用可能なデバッグ接続のリストを返します 図 16: 接続ブラウザ
UG-01165 2015.11.30 プロジェクトのビルドとデバッグ 17 6. ハードウェアを選択し Select をクリックします New_Configuration から bare-metalhello-world-config にコンフィギュレーション前を変更し Apply を選択します 図 17: ベア メタル Hello World Config の接続の設定 7. Files タブに移動し ワークスペース をクリックしてダウンロードするアプリケーションを 選択します また 建設されたオブジェクト モジュールの bare-metal-hello-world- 01.axf を選択します これは プロジェクト内の Debug フォルダにある必要があります ロード シンボル が選択されていることを確認して Apply をクリックします
18 プロジェクトのビルドとデバッグ UG-01165 2015.11.30 図 18: Bare Metal Hello World Config のファイルの設定 8. Debugger タブに移動し Run control の下で Debug from symbol が メイン に設定され ていることを確認します
UG-01165 2015.11.30 プロジェクトのビルドとデバッグ 19 図 19: ベア メタルの Hello World Config のデバッガの設定 9. アプリケーションをロードとデバッグするために Debug を選択します これは DS-5 Debug Perspective に変更するクエリを実行します Yes を選択します 図 20: パースペクティブ スイッチの確認 10. これは DS-5 デバッグ パースペクティブに切り替わり 次にアプリケーションをダウンロードと実行し始めます プログラムは メインで停止し そこに待機します Commands ビューで エントリ ポイントが 0xFFFF0000 であることに通知してください ( オンチップ RAM 用のスキャッタ ファイルで指定された開始アドレスである )
20 プロジェクトのビルドとデバッグ UG-01165 2015.11.30 図 21: メインで停止する OCRAM デバッグ 11.Step Over Source Line をクリックして または F6 キーを押します 12. その後 再び ステップ 出力は App Console ビューに表示されます
UG-01165 2015.11.30 プロジェクトのビルドとデバッグ 21 図 22: "App Console" の出力 13. アプリケーションから終了し Continue を選択します 14. bare-metal-hello-world-0.1.c Source ビューの左マージンをダブル クリックしてブレークポイントを作成します Breakpoints ビューが表示されない場合 選択して開きます View > Show View > Breakpoints.
22 プリローダー UG-01165 2015.11.30 図 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 プロジェクトにプリローダーのインポート を参照してください
UG-01165 2015.11.30 デフォルトのプリローダーのードおよび実行 23 このプロセスは プリローダーをダウンロードして実行するために 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 つだけが表示されます ( 図示のように )
24 デフォルトのプリローダーのードおよび実行 UG-01165 2015.11.30 図 25: 接続ブラウザ 図 26: RunPreloaderDefault の接続の設定 5. Files タブを選択し プリローダー イメージの ( u-boot-spl ) を参照するには File System を使用します
UG-01165 2015.11.30 デフォルトのプリローダーのードおよび実行 25 プリローダー イメージは 典型的に次の場所にあります <SoC EDS installation folder>\ embedded\examples\hardware\cv_soc_devkit_ghrd\software\preloader\ubootsocfpga\spl\u-boot-spl. 注意 : Load symbols のオプションのチェックを外します 図 27: RunPreloaderDefault ファイルの設定 6. Debugger タブで Run Control の下に エントリ ポイントからのデバッグ を選択し 以下のコマンドを有効にするには Execute debugger commands を選択します Run Pause 1s Interrupt Quit
26 DS-5 プロジェクトへのプリローダーのインポート UG-01165 2015.11.30 図 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 をクリックします
UG-01165 2015.11.30 プリローダーのインポート 27 図 29: ファイル システムのインポート 2. 例えば プリローダーの実行 (U- ブート -SPL) を参照またはディレクトリへのフルパスを入 力します <SoC EDS installation path>\embedded\examples\hardware\cv_soc_devkit_ ghrd\software\preloader\uboot-socfpga\spl. 3. ファイル名の横にあるチェックボックスをオンにし Finish を選択します
28 プリローダーのインポート UG-01165 2015.11.30 図 30: u-boot-spl のインポート 4. 新しくインポートされたファイルは Project Explorer に表示されていることを確認します
UG-01165 2015.11.30 新しいデバッグ コンフィギュレーションおよびデバッグ プリローダーの作成 29 図 31: Project Explorer での u-boot-spl ファイル 新しいデバッグ コンフィギュレーションおよびデバッグ プリローダーの作成 1. ターゲット接続プルダウン メニューから USB-Blaster を選択し Browse をクリックして使用可能なベア メタルデバッグ接続を選択します
30 新しいデバッグ コンフィギュレーションおよびデバッグ プリローダーの作成 UG-01165 2015.11.30 図 32: Run Preloader Hello の接続の設定 2. Files タブで Workspace を選択し プロジェクトそしてプリローダー ファイル u-bootspl を閲覧します 3. Load Symbols の横にあるチェック ボックスをオフにします
UG-01165 2015.11.30 新しいデバッグ コンフィギュレーションおよびデバッグ プリローダーの作成 31 図 33: Run Preloader Hello のファイル設定 4. Debugger タブで Run Control の下に Debug from Entry Point を選択し 以下のコマンドを有効にするには Execute debugger commands を選択します Run Pause 1s Interrupt Quit
32 新しいデバッグ コンフィギュレーションおよびデバッグ プリローダーの作成 UG-01165 2015.11.30 図 34: Run Preloader Hello のデバッガ設定 5. 照会あれば DS-5 Debug パースペクティブに切り替えるには Apply Debug そして Yes を選択します 図 35: パースペクティブ切り替えの確認 6. DS-5 AE は 同様に 簡単なベア メタルの例が走った方法に オンチップ RAM にプリローダーをロードして実行する必要があります これは SDRAM メモリ コントローラを初期化し 停止そして待機します 表示は次のようになります
UG-01165 2015.11.30 SDRAM メモリ内の Hello World の例のダウンロードとデバッグ 33 図 36: Run Preloader Hello のデバッグ ビュー この Run Controll は 現在プリローダーを起動するために使用することができます この方法は 特定の DS-5 プロジェクトにプリローダーの画像を対応付けていますが それは他のプロジェクトで使用することができます しかし プリローダー イメージが含まれているプロジェクトを覚えておくことが重要です それは同様に 簡単なベアメタルの例が実行されたどのように オンチップ RAM にプリローダーをロードして実行する必要があります これは SDRAM メモリ コントローラをコンフィギュレーションし 停止します その後 SDRAM メモリに "Hello World" の例をダウンロードして実行することができます Hello World の例については 以前に作成したのと同じデバッグ コンフィギュレーションを使用することができます SDRAM メモリ内の Hello World の例のダウンロードとデバッグ 1. Run > Debug Configurations を選択します 同じデバッグ設定を選択します
34 SDRAM メモリ内の Hello World の例のダウンロードとデバッグ UG-01165 2015.11.30 図 37: Bare Metal "Hello World" Config デバッガ 2. 起動するように Debug を選択します 図 38: メインで SDRAM 停止からの Hello World の実行
UG-01165 2015.11.30 SDRAM メモリ内の Hello World の例のダウンロードとデバッグ 35 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 5. プログラムの実行を終了する Continue を選択します
36 SDRAM メモリ内の Hello World の例のダウンロードとデバッグ UG-01165 2015.11.30 図 40: Bare Metal "Hello World" App Console End 6. 再実行するには Debug Control ビューのリストからデバッグ接続を選択します この場合には bare-metal-hello-world-01 です そして 黄色の矢印をクリックします これは 再び同じデバッグ設定を実行します ( またメインから実行します ) 7. このアプリケーションを終了しているときは それをターゲットから切断することができます 切断するには Debug Connection を右クリックして Disconnect from Target をクリックしてください
UG-01165 2015.11.30 SDRAM メモリ内の Hello World の例のダウンロードとデバッグ 37 図 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 アプリケーション用に作成されたデバッグ設定を使用して デモを再実行します
38 SDRAM の代わりにオンチップ RAM から実行するには プロジェクトを変更しま す 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 { } } UG-01165 2015.11.30 注意 : HWLibs プロジェクトが割り込みサポートが必要な場合 スキャッタ ファイルの先頭に VECTOR セクションを追加する必要があります 例えば : SDRAM 0x00100000 0x40000000 {
UG-01165 2015.11.30 新しいスキャッタ ファイルを作成する SDRAM へのベア メタル アプリケーションの検索 VECTORS +0 { * (VECTORS, +FIRST) } APP_CODE +0 { * (+RO, +RW, +ZI) } ARM_LIB_STACKHEAP +0 EMPTY (0x40000000 - ImageLimit(APP_CODE)) ; Application heap and stack { } } 39 これは "<SoC EDS installation path>\embedded\examples\software に HWLibs 例のほとんどで SDRAM から実行プロジェクトのための標準的なスキャッタ ファイルです プロジェクトで alt_interrupt_armcc.s をコンパイルとリンクしなければならないことに注意してください ARMCC ツール チェインが自動的にプログラムの開始時にベクトルを提供しないため これが必要とされています 注意 : 図 42: SDRAM Scatter File Code Snippet 単純な Hello World のプロジェクトを実行しているので このセクションでは ベクタ セクションが含まれていません 4. 新しいスキャッタ ファイルは Project Explorer ビューに表示されていることを確認します
40 新しいスキャッタ ファイルを作成する SDRAM へのベア メタル アプリケーションの検索図 43: Project Explorer での SDRAM Scatter ファイル UG-01165 2015.11.30 5. プロジェクトで新しいスキャッタ ファイルを関連付けます プロジェクトを右クリックし Properties > C/C++ Build > Settings > ARM Linker 5 > Image Layout を選択します 6. 新しいスキャッタ ファイルを参照します 7. あるいは 閲覧の代わりに 次のようなパスを入力します :${workspace_loc}\bare-metalhello-world-01\scatter_sdram.scat) また Apply と OK を選択します
UG-01165 2015.11.30 新しいスキャッタ ファイルを作成する SDRAM へのベア メタル アプリケーションの検索図 44: SDRAM スキャッタ ファイルの場所の設定 41 8. プロジェクトを右クリックし 新しいスキャッタ ファイルで再構築するには Build Project を選択します アプリケーションをダウンロードして実行する前に作成した同じデバッグ設定を使用します プログラムは メインで停止し そこに待機します Commands ビューで エントリ ポイントは 0x02000000 ある注目してください これは SDRAM のスキャッタ ファイルで指定された開始アドレスです
42 オンチップ RAM から実行するシンプルなベア メタル プロジェクトを作成する別の方法図 45: SDRAM の開始アドレスで停止するプログラム UG-01165 2015.11.30 オンチップ 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 の開発キットで実行することができます
UG-01165 2015.11.30 メイク ベースの例でのインポート ビルドおよびデバッグ 43 図 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 ファブリックに
44 プロジェクトのインポート UG-01165 2015.11.30 ペリフェラルを制御することができることをテストするために LED を点滅します この例では ARM コンパイラを使用してコンパイルします プロジェクトのインポート 1. DS-5 の下で File > Import... を選択します 2. 表示されたダイアログボックスで ワークスペースに既存のプロジェクト を選択し Next をクリックします 図 47: 既存のプロジェクトのインポート 3. Select archive file と示されているように インストールのソフトウェア例ディレクトリを参 照し選択します
UG-01165 2015.11.30 プロジェクトのビルド 45 図 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 を選択します これは 次のことを実行するメイク ベースのビルドを開始します
46 プロジェクトのデバッグ 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 デバッグのコンフィギュレーション UG-01165 2015.11.30 2. 次 Connections フィールドに Browse を選択し 使用可能な接続から 使用しているハードウェア ( アルテラの USB ブラスタまたは DSTREAM) を選択し Select をクリックします
UG-01165 2015.11.30 プロジェクトのデバッグ 47 図 50: 接続ブラウザ 3. Apply を選択し プロセッサを構成するソフトウェアをロードし デフォルトとして メイン のシンボルで停止 それを実行するデバッグセッションを開始するために Debug をクリックします 図 51: メインで停止デバッグ 4. コードの実行を開始するために ボタンをクリックします コードが完了するまで実行す る必要があります その他のオプション ( ) は Debug Control ウィンドウにもあります App Console ウィンドウには 正しい結果が表示されるはずです
48 メイク ベースのプロジェクトから派生した DS-5 ARM HWLIBs プロジェクト UG-01165 2015.11.30 図 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
UG-01165 2015.11.30 プロジェクトの作成 49 図 53: 新しい ARMCC FPGA Managed Make プロジェクトの作成 関連情報 43 ページのメイク ベースの例でのインポート ビルドおよびデバッグ
50 ファイルのコピー ファイルのコピー先に進む前に HWLibs FPGA ARMCC プロジェクトがインポートされ 正常にコンパイルされていることを確認してください コンパイルされたプロジェクトは 以前に メイクファイルで自動生成され FPGA のオブジェクト コード ファイルを作成します はじめる前に アルテラ SoC EDS サンプル プロジェクトからすべての C コードをコピーします ;(.c 拡張とのファイル ) alt_interrupt_armcc.s スキャッタ ファイルおよび FPGA オブジェクト コード (soc_system_dc.o) 1. ファイルを選択して 右クリックし Change File をクリックします UG-01165 2015.11.30
UG-01165 2015.11.30 ビルド設定のコンフィギュレーション 51 図 54: SoC EDS サンプル プロジェクトからコピーするファイル 2. 新しいプロジェクト (armcc_fpga_managed_make) を右クリックし Paste を選択します 画像に表示されるファイルはすべて 新しいプロジェクトにコピーされている必要があります 次のセクションでビルド システムを設定した後 C コードは 自動的に FPGA のオブジェクト ファイルで構築とリンクされてます ビルド設定のコンフィギュレーション 構築する準備をします
52 ARM C コンパイラの設定 DS-5 の Project Explorer ウィンドウでプロジェクトを右クリックし Properties を選択し C/C++ Build に移動してから Settings を選択します 図 55: ARMCC FPGA Managed Make の設定 UG-01165 2015.11.30 コンパイラ アセンブラ リンカの設定の変更が必要です ARM C コンパイラの設定 セクションの手順に従ってください 関連情報 ARM C Compiler Settings ARM C コンパイラの設定 1. Target で ターゲット CPU を Cortex-A9 に設定して Disable unaligned accesses ボ ックスをオンにします
UG-01165 2015.11.30 ARM C コンパイラの設定 53 図 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 インクルードのパス設定 5. Source Language を選択し Source language mode を -c99 に設定します
54 ARM アセンブラの設定 UG-01165 2015.11.30 図 59: ARMCC ソース言語の設定 Optimizations Debugging Warnings and Errors および Miscellaneous の設定はデフォルト値のままにしておきます ARM アセンブラの設定 以下に一致するように Target の設定を変更します 図 60: ARM アセンブラのターゲット設定 ARM リンカの設定 1. Target セクションの Cortex-A9 として Target CPU(--cpu) を定義します
UG-01165 2015.11.30 ARM リンカの設定 55 図 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 のオブジェクト ファイルの位置を参照します
56 ARM リンカの設定 UG-01165 2015.11.30 図 63: ARM リンカのその他の設定
UG-01165 2015.11.30 プロジェクトのビルド 57 図 64: ARM リンカのその他の設定 - パート 2 6. Apply そして OK をクリックし 設定とリターンを適用ます プロジェクトのビルド 作成したプロジェクトを右クリックし Build Project オプションにプルダウンします これは プロジェクトのデフォルト ビルド ディレクトリ内のプロジェクトのビルドを開始します プロジェクトの実行 / デバッグ デバッグ コンフィギュレーションの作成 1. プロジェクトを右クリックし Debug As > Debug Configurations オプションにプルダウンします これは Debug Configurations ダイアログ ボックスが開きます 2. 新しいコンフィギュレーションを作成し 以下に示されるように デバッグ ハードウェアをセットアップします
58 デバッグ コンフィギュレーションの作成 UG-01165 2015.11.30 図 65: ARMCC FPGA Managed Make Debug の接続設定 3. Browse をクリックして使用できるベア メタルデバッグ接続を選択します これは 使用可能なデバッグ接続のリストをリターンします
UG-01165 2015.11.30 デバッグ コンフィギュレーションの作成 59 図 66: 接続ブラウザ 4. OK をクリックし 右上の Files タブに移動します Workspace... を選択し プロジェクトの Debug サブディレクトリに AXF ファイルを探します 図 67: ARMCC FPGA Managed Make Files の設定 5. Apply をクリックし デバッグ セッションを開始するために Debug をクリックします
60 最小限のプリローダー UG-01165 2015.11.30 最小限のプリローダー 最小限のプリローダー (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 を選択します
UG-01165 2015.11.30 最小限のプリローダー プロジェクト例 61 図 68: 既存のプロジェクトのインポート 2. <SoC EDS installation path>\embedded\examples\software から Altera-SoCFPGA- HardwareLib-MPL.tar プロジェクトを選択して Finish をクリックして プロジェクトをインポートします
62 最小限のプリローダー プロジェクト例 UG-01165 2015.11.30 図 69: インポート MPL プロジェクト ファイル 3. Project Explorer タブから すべてのプロジェクト ファイルが存在していることを確認しま す
UG-01165 2015.11.30 付録 : トラブルシューティング 63 図 70: MPL プロジェクト ファイルのリスト ビルドおよびデバッグの詳細については メイク ベースの例でインポート ビルドとデバッグ セクションを参照してください 関連情報 43 ページのメイク ベースの例でのインポート ビルドおよびデバッグ 付録 : トラブルシューティング デバッグ ケーブルが機能しません USB-Blaster II のドライバがインストールされていること また機能していることを確認してください 一般的には 開発キットのインストール手順に従い 推奨例のいくつかを通過すると この問題を解決するのに十分に良好です FPGA は正常にプログラムされていない この問題が発生した場合 開発キットの詳細を参照しますが 通常これはミスマッチ MSEL( プログラミング モード ) によるものです 一時ディレクトリ書き込み可能ではありません 珍しいが それは Eclipse ベースの DS-5 デバッガが書き込み可能な 時には未書き込み可能であることに依存している一時的なディレクトリ用可能です また デバッグ セッションを開始するときに奇妙な 許可が拒否されました の問題が実行する場合 使用する環境 (tmp TMP temp TEMP) 内のすべての一時ディレクトリを検索します その後 変更したり 書き込み可能なディレクトリに設定します