Nios® II プロセッサー・ベアメタル・デベロッパー・センター
Nios II プロセッサー・ベアメタル・デベロッパー・センターのページは、オペレーティング・システム (OS) またはリアルタイム・オペレーティング・システム (RTOS) なしでベアメタル開発を開始するのに役立ちます。
概要
ベアメタル開発では、オペレーティング・システム (OS) やリアルタイム・オペレーティング・システム (RTOS) のないソフトウェア・ランタイム環境を使用します。ベアメタル開発を支援するために、インテルはインテル® FPGA 内の Nios® II プロセッサー向けのハードウェア抽象化レイヤー (HAL) ライブラリーを提供しています。このライブラリーを FPGA 内の Nios® II プロセッサー・システムのデバイス・ドライバー・パッケージとして使用し、システムの周辺機器への一貫したインターフェイスを提供できます。
以下のリンクは、インテル® FPGA でのベアメタル開発の開始に役立ちます。初めてのユーザーの場合は、リソースに直線的に従うことを推奨します。
1.前提条件
マイ・インテルのアカウントを作成
- マイ・インテルのページから、マイ・インテルのアカウントを作成します。
- マイ・インテルのアカウントにより、サービスリクエストの申請、トレーニング・コースへの登録、ソフトウェアのダウンロード、リソースへのアクセスなどが可能になります。
デザイン検討事項
ベアメタルを開発する理由
- ベアメタルのアプローチを使用することには次のような利点があります。
- ハードウェアの完全制御
- 高効率
- 最小サイズ (フラッシュおよびメモリー・フットプリントの両方)
- 他のソースコードやライブラリーへの依存なし
- 検証およびコードカバレッジ分析の容易さ
次のような場合、ベアメタル開発を検討しても良いかもしれません。
- マルチタスクやマルチスレッド動作を必要としない
- ボード立ち上げを実行しており、各周辺機器に個々に集中する必要がある
- すべでにベアメタルとして開発された既存のレガシーコードを再利用している
ベアメタルの検討事項
Nios® II プロセッサー向けのベアメタル・アプリケーションを開発するには、アプリケーションが CPU サブシステムで利用可能なリソースの効率的な使用を可能にすることを確認するためのランタイム機能の開発に慣れている必要があります。必要なものの例は、次の通りです。
- ハードウェア・プラットフォームに関する深い知識
- CPU サブシステムを、シングルコアのみを使用する一般的なベアメタル・アプリケーションとして完全に活用する場合、コアとキャッシュ・サブシステム間のプロセスを管理するためのランタイム機能の開発
- プロセスの管理とスケジュール、プロセス間の通信を処理し、アプリケーション内のイベントを同期するための機能の開発
スケジュールされたプロジェクトに、上記のポイントを理解するために必要な労力を割くことができない場合、商用 Linux* または RTOS ソリューションを使用することを推奨します
ベアメタル代替方法
上記の検討事項を考慮すると、オペレーティング・システムを使用して、最小限の労力で Nios® II プロセッサーからの最大限のパフォーマンスを実現することが理にかなっていることがよくあります。
以下の表は、Linux OS と RTOS 間の基本的な比較を示します。
基準 |
Linux OS |
RTOS |
---|---|---|
主な違い |
Linux OS におけるタスクのスケジューリングは、優先順位に基づいていないため、すべてのスレッドは公平に処理されます。この公平性のポリシーにより、コンピューティング全体の高いスループットを可能にしますが、ディスパッチに無限のレイテンシーが発生するという短所を伴います。Linux でのレイテンシーのスケジューリングは、通常スケジュールおよび実行するスレッド数の増加とともに累積します。 |
RTOS は優先順位ベースのシステムであり、先制的なタスク・スケジューリングを提供して、イベントや割り込みへの時宜を得た的確なレスポンスを確保します。優先順位の高い、タイム・クリティカルなスレッドは、より優先順位の低いスレッドに優先して実行します。RTOS のスレッドには、レイテンシーの制約があります。プロセスまたはスレッドは、指定された制限時間内に実行します。 |
アプリケーション |
コンピューティング全体の高いスループットを必要とし、タイム・クリティカルでないアプリケーションに最適です。 |
高速かつ予測可能なレスポンスを必要とするアプリケーションに最適です。 |
リソース |
大幅な CPU リソースと大容量のメモリー・フットプリントを必要とします。 |
軽量で、少量のメモリー・フットプリントを必要とします。 |
コーディングの実践 |
一般的に、厳しいコーディング・ポリシーへの準拠はありません。 |
コードは継続的に一貫して実行する必要があるため、厳しいコーディング・ポリシーへ準拠します。 |
Linux OS
Nios® II プロセッサー向けのメモリー・マネジメント・ユニット (MMU) の導入により、Linux プロバイダーの選択の幅が広がりました。商用サポート、業界リーダーから無償のオープンソース配布に至るまで、インテルのエンベデッド Linux パートナーは、Linux プロジェクト向けの適切なサポートを提供します。
- RocketBoards.org - コミュニティー対応オープンソースの Linux 配布については、Nios® II Linux ユーザーマニュアルを参照してください。
- LinuxLink by Timesys - [ボード] のフィルタータブの [メーカー] からインテル® FPGA を選択します。
- Wind River - [ボード・サポート・パッケージ] の [ハードウェア・ベンダー] からインテル® FPGA を選択します。
- System Level Solutions (SLS) - [ダウンロード] タブで、希望する [ボード・サポート・パッケージ] を選択します。
RTOS
シンプルな RTOS を使用することは簡単です。これらの機能を自分で書き込む代わりに、すでに実装されている機能の C ライブラリーを使用することと同様です。一部の RTOS はすべての周辺機器向けの完全なサポートを提供しますが、サブセット向けのみのサポートを提供するものもあります。選択した RTOS が周辺機器のサブセットのみのサポートを提供している場合、HAL コードが必要な追加のサポートを提供します。詳細については、Nios® II プロセッサー・エコシステムのウェブページを参照してください。
Nios® II エンベデッド・デザイン・スイート (EDS) のインストールには、MicroC/OS-II RTOS とフル ANSI C ソースコードの無料評価が含まれています。詳細については、Micrium MicroC/OS-II リアルタイム・オペレーティング・システムのウェブページを参照してください。
デザインフロー図
以下の図は、一般的な Nios® II プロセッサー・システムの開発フローを示しています。
Nios® II プロセッサー開発フローは、次の 3 つの要素で構成されています。
- ハードウェア設計
- ソフトウェア・デザイン
- ハードウェアソフトウェア両方に関連するシステムデザイン
インテル® Nios® II プロセッサー・システムの開発は、システムコンセプトの開発と、システム要件分析の実施から開始します。次に、プラットフォーム・デザイナーでシステムを作成し、.sopcinfo ファイルを生成します。プラットフォーム・デザイナーには、インテル® Nios® II プロセッサー・コア、標準コンポーネント、カスタム命令、周辺論理が含まれます。システムの生成後、ハードウェアとソフトウェアのフローが開始できます。
Nios® II プロセッサー・ハードウェア開発については、以下を行う必要があります。
- プラットフォーム・デザイナー・システムをインテル® Quartus® Prime 開発ソフトウェア・プロジェクトに統合します。
- ピン位置を割り当てます。
- タイミング要件とその他のデザインの制約を構成します。
- ハードウェア・デザインをコンパイルした後、.sof ファイルを対象とするボードにダウンロードします。
インテル® Nios® II プロセッサー・ソフトウェア開発については、以下を行う必要があります。
- Nios® II Software Build Tools (SBT) for Eclipse でソフトウェアを開発します。Nios® II ソフトウェアには、HAL、周辺機器のドライバー、ユーザー C/C++ アプリケーション・コード、カスタム・ライブラリーが含まれます。
- アプリケーションとボード・サポート・パッケージ (BSP) を構築した後、.elf ファイルを、対象とするボードの Nios® II プロセッサー・システムにダウンロードします。これで、インテル® Nios® II プロセッサー・システムは、テストとデバッグの準備ができた状態です。
テスト中にソフトウェアが仕様を満たしていないことが分かった場合は、ソフトウェア・フローの最初に戻り、アプリケーション・コード、ドライバー、BSP を確認して、エラーを修正し、インテル® Nios® II プロセッサー・システムが正しく動作していることを確認します。
ソフトウェアが仕様を満たしていないことが分かった場合は、プラットフォーム・デザイナー・システムの確定および生成のステップに戻り、ハードウェアとソフトウェアのフロー両方を再起動します。アプリケーション・ソフトウェアの生成に必要なキーファイルは、プラットフォーム・デザイナー情報ファイル (.sopcinfo) です。このファイルは、ハードウェア・コンポーネントと接続について説明するため、ハードウェアの変更を行う場合にはこのファイルを再生成する必要があります。ソフトウェアハードウェアの両方が仕様を満たしたら、システムは完成です。
2.スタートガイド
対象ボードを選択する
提供されている例のほとんどは、これらのボードで動作することを対象としているため、インテルが提供する評価キットまたは開発キットで開発を開始することを推奨します。
- Nios® II プロセッサー評価キット
- 低価格で使いやすい
- デザイン例、チュートリアル、およびソフトウェア・サンプルが満載
- インテル® FPGA Wiki のサイト上には、Nios® II ソフトウェアのコミュニティー投稿による多くのデザイン例やソフトウェアがあります。
- 例: インテル® MAX® 10 FPGA Nios® II エンベデッド評価キット (NEEK)
- インテル® FPGA 開発キット
- すべての新しいキットには、ボード・アップデート・ポータルと題した、事前パッケージ化された Nios® II プロセッサー・デザイン例が含まれています。
- HTML ウェブ・サーバー・アプリケーションによる、プロセッサーの開始デザインとイーサネット・メディア・アクセス・コントロール (MAC)
利用可能なボードのリストについては、すべての開発キットを参照してください。デザインストアで提供されているボード固有のデザイン例のリストを表示するには、プルダウンメニューから希望する開発キットを選択します。
Nios® II エンベデッド・デザイン・スイート (EDS) をインストール
Nios® II エンベデッド・デザイン・スイート (EDS) をインストールするには、まず、ダウンロード・センターからインテル® Quartus® Prime 開発ソフトウェアをダウンロードする必要があります。インテル® FPGA ソフトウェアのインストールとライセンスでは、Nios® II EDS を含むインテル® Quartus® Prime 開発ソフトウェアのダウンロードとインストールに関する詳細な手順を提供しています。
Nios® II EDS は、Nios® II ソフトウェア・デザイン向けの包括的な開発パッケージです。Nios® II EDS には、開発ツールだけでなく、ソフトウェア、デバイスドライバー、ベアメタル HAL ライブラリー、商用グレードのネットワーク・スタック・ソフトウェア、評価バージョンの RTOS も含まれています。
Nios® II プロセッサー・システムを初めて作成
AN 717: Nios II ハードウェア開発チュートリアル および Nios® II ソフトウェア・デベロッパー・ハンドブック では、Nios II プロセッサー向けのシステム開発フローを紹介しています。インテル® Quartus® Prime 開発ソフトウェアと Nios® II EDS を使用して、Nios® II ハードウェア・システム・デザインを構築し、Nios® II システムで実行し、インテル® 開発ボードのコンポーネントとインターフェイスで接続するソフトウェア・プログラムを作成します。
3.独自のプロジェクトの作成
ベアメタル・プロジェクトのタイプ
Nios II EDS で管理できるプロジェクトには、2 つの異なるタイプがあります。
以下の表は、Eclipse GUI 以外の 2 つのプロジェクト・タイプの違いを示しています。
機能 |
GUI ベースのプロジェクト |
コマンドライン・ベースのプロジェクト |
---|---|---|
プロジェクトの種類の説明 | グラフィカル・ユーザー・インターフェイス (GUI) ベースのプロジェクト
|
コマンドライン・ベースのプロジェクト
|
プロジェクト・ソース・ファイルの管理 |
ソースをドラッグして、プロジェクトにドロップするなどして、自動的に指定 |
コマンド引数を使用して、ソースを手動で指定 |
デバッグ |
○ |
Eclipse 環境にプロ毛クトをインポート |
カスタム・シェル・スクリプトおよびツールフローと統合 |
× |
|
推奨されるプロジェクトの作成方法
Nios® II プロセッサー向けのソフトウェアの書き込みは、その他のマイクロコントローラー・ファミリー向けのソフトウェアの書き込みと同様です。既存のコードを変更することは、新しい環境でのソフトウェアの書き込み方法を学ぶために、一般的で簡単なやり方です。Nios® II EDS は、多くのソフトウェア・デザイン例を提供し、それらは独自のプログラムで検証、変更、使用することが可能です。
各Nios® II プロセッサー・プログラムの例は、アプリケーション・プロジェクト、オプションのユーザー・ライブラリー・プロジェクト、BSP プロジェクトで構成されています。
- アプリケーション・プロジェクト: ソースコードのコレクションと makefile で構成されています。アプリケーションの典型的な性質は、ソースファイルの 1 つに機能メイン ( ) が含まれていることです。アプリケーションには、ライブラリーと BSP で機能を呼び出すコードが含まれます。makefile はソースコードをコンパイルし、それを BSP および 1 つ以上のライブラリーとリンクして、.elf ファイルを作成します。
- ユーザー・ライブラリー・プロジェクト: 単一のライブラリー・アーカイブ・ファイル (.a) を作成するためにコンパイルされたソースコードのコレクションです。ライブラリーには、しばしば複数のプロジェクトが共有できる再利用可能な汎用機能が含まれています。一般的な演算機能のコレクションが、1 つの例です。
- BSP プロジェクト: HAL、オプションのカスタム newlib C 標準ライブラリー、デバイスドライバー、オプションのソフトウェア・パッケージ、およびオプションのリアルタイム・オペレーティング・システムなど、システム固有のサポートコードを含む特別なライブラリーです。
これらの手順に従って、Nios® II SBT でソフトウェア・プロジェクトを作成します。
- ソフトウェアが実行する予定のハードウェア・デザインを入手します。Nios® II プロセッサーのデザイン例、または別の人が開発したデザインであるかに関わらず、SOPC 情報ファイル (.sopcinfo) が必要になります。
- BSP 設定ファイル (settings.bsp)、次に、BSP が必要とする機能を定義した後で BSP makefile を生成します。
- ユーザー・ライブラリーを作成します (オプション)。カスタム・ソフトウェア・ユーザー・ライブラリーを含む必要がある場合は、ユーザー・ライブラリー・ソース・ファイルを単一のディレクトリーに集め、ユーザー・ライブラリー makefile を生成します。
- アプリケーション・ソース・コードを書き込み、アプリケーション makefile を生成します。
- ソフトウェア・プロジェクトを構築して、.elf ファイルを生成し、ボード上でアプリケーションを実行します。
インテル® Nios® II SBT には、インテル® Nios® II C および C++ プロジェクトを構築する上で鍵となる、makefile を作成するためのツールが含まれています。独自のファイルの書き込みを希望する場合には、生成された makefile を使用する必要はありません。しかし、SBT を使用して、BSP makefile を管理、変更することを推奨します。
詳細については、 Nios® II ソフトウェア開発ハンドブック を参照してください。
4.リファレンス・サンプル
デザイン例
インテルのデザインストアには、多くのデザイン例があり、インテル® FPGA 製品の開始に役立ちます。すべての例は、独自のデザインの出発点として利用可能であり、一部の例は特定の開発キット向けにカスタマイズされています。[IP コア] プルダウンメニューから、インテル® Nios® II を選択して、インテル® Nios® II プロセッサーのデザイン例を検索します。デバイスファミリー、開発キット、インテル® Quartus® Prime 開発ソフトウェアのバージョンなど、その他の検索条件を絞ることもできます。
Nios® II プロセッサー・アプリケーションの起動方法
Nios® II プロセッサー・アプリケーションの起動方法については、エンベデッド・デザイン・ハンドブック内の [Nios® II 構成と起動ソリューション] のセクションを参照してください。
インテル® Nios® II プロセッサーでは、ソフトウェアのさまざまな起動および実行オプションが利用可能です。Nios® II プロセッサーを構成して、さまざまなメモリーの位置からソフトウェアの起動と実行を行うことができます。
インテル® Nios® II プロセッサーがサポートするブートメモリー:
- 共通フラッシュ・インターフェイス (CFI) フラッシュメモリー
- インテル® MAX® 10 FPGA デバイスでのユーザー・フラッシュ・メモリー (UFM)
- シリアルフラッシュ EPCQ コンフィグレーション・デバイス
- Quad serial peripheral interface (QSPI) フラッシュ
- オンチップメモリー (OCRAM)
Nios® II プロセッサーの起動オプション:
- Execute-in-place (XIP)
- ブートコピアーを使用して、フラッシュメモリーから RAM へコピー
5.関連情報
サポートセンター
クリックひとつでサポートが得られますサポートセンターでは、トレーニング・クラスからデザイン例、フォーラムまで、デザインのプロセスのすべての段階をガイドする、オンラインのテクニカルリソースを提供しています。
ナレッジベース
ナレッジベースでは、膨大な数のサポート・ソリューション、参考文献、エラーメッセージ、トラブルシューティング・ガイドを提供しています。また、全てが検索可能です。
インテル® FPGA コミュニティー
インテルのコミュニティーは、インテル® FPGA ユーザー間のコラボレーションを可能にするコミュニティーのウェブサイトです。FPGA 開発者のインテル® Nios® II エンベデッド・デザイン・スイート (EDS) セクションを参照してください。検索エンジンを使って、関連資料を探すことができます。また、アップデートや投稿も推奨されています。
マイ・インテル
マイ・インテルのアカウントにより、サービスリクエストを申請して、特定のトピックに関するサポートを得ることができます。また、トレーニング・クラスに登録したり、その他のリソースへのアクセスも可能です。登録が必要です。
基礎学習: トレーニング・クラス
以下の表には、デザインの開発を始める前に受講することができる、基礎的なトレーニング・クラスを掲載しています。
コース |
習得されるスキル |
---|---|
Nios® II・プロセッサー: ハードウェア抽象化レイヤー (34 分のオンラインコース) |
|
(30 分のオンラインコース) |
|
Nios II プロセッサーの使用: カスタム・コンポーネントと手順の説明 (11 分のオンラインコース) |
|
(27 分のオンラインコース) |
|
その他のドキュメントとリソース
以下のドキュメントは、Nios® II プロセッサーの主要なリファレンスとしての機能を果たします。
- Nios II ソフトウェア開発ハンドブック では、Nios II Gen2 プロセッサー向けのエンベデッド・ソフトウェアの開発に必要な基本情報について説明します。このハンドブックの章では、Nios® II プロセッサー・ソフトウェア開発環境、利用可能な Nios® II エンベデッド・デザイン・スイート (EDS) ツールと開発ソフトウェアのプロセスについて説明します。
- エンベデッド・デザイン・ハンドブックは、エンベデッド・システム開発の主要なドキュメントを補完します。ツールの最も効果的な使用方法を説明し、インテルの提供するツールを使用した、エンベデッド・システムの開発、デバッグ、最適化のためのデザインスタイルと実践を推奨します。また、インテルのエンベデッド・ソリューションの新しいユーザーへコンセプトを紹介し、熟練のユーザーのデザイン効率の向上にも役立ちます。
- Nios II プロセッサー・リファレンス・ガイド では、高レベルの概要的説明から、低レベルの実装の詳細まで、Nios II Gen2 プロセッサーについて説明します。このハンドブックの章では、Nios® II プロセッサー・アーキテクチャー、プログラミング・モデル、命令セットについて説明します。
- 組込み周辺機器 IP ユーザーガイドでは、Nios® II プロセッサーとシームレスに動作し、インテル® Quartus® Prime 開発ソフトウェアに含まれるインテルの提供する IP コアについて説明します。IPコアはインテル® デバイス向けに最適化されており、簡単に実装し、デザインとテストに要する時間を削減することができます。
Nios® II プロセッサー関連のドキュメントについては、Nios® II プロセッサーのサポートページを参照してください。
エンジニアによるエンジニアのための設計手法紹介ビデオ
インテル® エンジニアが提供するさまざまなハウツービデオをご覧ください。インテル® FPGAクイックビデオには、FPGAプロジェクトの開発に役立つハウツービデオが含まれています。