1. はじめに
Altera®(Intel®)SoC FPGA(以下、SoC FPGA)では、ソフトウェア・プログラムからハード・プロセッサー・システム(以下、HPS)内のペリフェラルを簡単に使用するためにハードウェア・ライブラリー(以下、HWLib)と呼ばれるライブラリーが用意されています。ユーザーは必要な HWLib を用いることにより設計を簡略化することができます。
この記事では Makefile による HWLib の追加方法について説明します。
2. HWLib とは
HWLib とは HPS のペリフェラルの使用を簡略化するライブラリーです。
HWLib は SoC 抽象化レイヤー(以下、SoCAL)と ハードウェア・マネージャー(以下、HWMgr)の
2 つのコンポーネントで構成されています。
・SoCAL:
HPS のペリフェラルにアクセスするためのマクロベースの抽象化レイヤー (ヘッダーファイル) です。
・HWMgr:
HPS のペリフェラルにアクセスを行う C 言語およびアセンブリ言語による API の集合体です。API を定義したソースファイルと、API 使用時にインクルードするヘッダーファイルが提供されます。
HWLib として提供されるソース/ヘッダーファイルは、以下に場所に格納されています。
<SoC EDS インストール・ディレクトリー>/ip/altera/hps/altera_hps/hwlib
SoCAL はハードウェアを抽象化するためのレイヤーとなりますが、HWMgr の実装にも SoCAL が使用されています。HWMgr は HPS のペリフェラルにアクセスを行うための API 集となるため SoCAL より上位レイヤーの位置づけとなっています。
その為、下記図のようなイメージになります。
【図 1】 HWLib の位置づけ
ユーザーは必要なヘッダーファイルをインクルードし、SoCAL の定義や HWMgr の API を使用します。
注記:
SoCAL と HWMgr には同じ名前のヘッダーファイルが存在する為、SoCAL のヘッダーファイルをインクルードする場合は #include "socal/xxx.h" のように socal ディレクトリーのパスを含めて記述することで区別する必要があります。
3. HWLib のドキュメント
HWLib のドキュメントは下記方法で参照できます。
3-1. SoC Embedded Design Suite(SoC EDS)インストール・ディレクトリーから参照
下記ディレクトリーにドキュメントが用意されています。
SoCAL のドキュメント:
<SoC EDS インストール・ディレクトリー>/ip/altera/hps/altera_hps/doc/socal/html/index.html
HWMgr のドキュメント:
<SoC EDS インストール・ディレクトリー>/ip/altera/hps/altera_hps/doc/hwmgr/html/index.html
3-2. Windows のスタートメニューから参照
以下の図を参考に SoC EDS HWLIBs Cyclone V Arria V Documentation(Arria® 10 の場合は SoC EDS HWLIB Arria 10 Documentation)を選択することによりドキュメントを参照できます。
【図 2】 Windows スタートメニューから資料を参照
4. Makefile による HWLib の追加方法
HWLib のソースコードをコピーせず直接参照すると、オリジナルのコードを意図せず変更してしまう可能性があるため、ソフトウェア・プロジェクト直下のディレクトリーの下にコピーして使用することを推奨します。
コピーは Windows のエクスプローラー上で手作業で行っていただいても結構ですが、リファレンス・デザインの多くは Makefile にて HWLib の追加を行っています。
そのようなリファレンス・デザインベースで開発を行っている際、Makefile にて HWLib を追加すると便利です。
参考としてSoC EDS に付属している下記のリファレンス・デザインおいて、Makefile のどこに追加したい HWLib を記述するかを紹介します(図2)。
<SoC EDS インストール・ディレクトリー>/example/software/Altera-SoCFPGA-HardwareLib-Timer-CV-GNU.tar.gz
注記:
Makefile の構成は、SoC EDS のバージョンやリファレンス・デザインの種類によって異なる場合があります。
【図 3】 Makefile の抜粋
このリファレンス・デザインでは HWLIBS_SRC に追加したい HWLib を指定しています。HWLIBS_SRC に指定されたファイルが、ビルド実行時にソフトウェア・プロジェクト以下にコピーされる対象になります(コピーを必要としないユーザーアプリケーション用のソースファイルは EXAMPLE_SRC に追加)。
このようにリファレンス・デザインの多くは HWLIBS_SRC に追加する構成になっているので、覚えておくと便利です。
5. サンプル紹介
4 章で述べたとおり HWLib を使用するにはエクスプローラー上もしくは Makefile で追加する必要がありますが少し手間がかかります。
下記に紹介するサンプルでは HWLib として提供されているソースコードがすべて登録済みとなっており、使用したい HWLib のヘッダーファイルをインクルードすれば、すべての API が使用することができるようになっています。
ベアメタル・アプリケーションを構築する際のスタートポイントとして、非常に便利なサンプルですのでご活用ください。
SoC FPGA ベアメタル All-in-One アプリケーション・サンプル