ZedBoard上で動作するLinuxで、ZynqのPL部を制御する方法について調査していたところ、以下のページを発見した。
Vivadoの立ち上げから、Linuxのビルド、そしてデバイスドライバの記述まで丁寧に解説してある。早速やってみよう。 このページでは対象としてZyboを使っているが、私はZyboを持っていないのでZedBoardに置き換えてやってみよう。
やりたいこと
- ZedBoardのARM上でLinuxを動作させ、PL上に自分で作成したハードウェアを制御したい。
- Vivadoでハードウェアプロジェクトの作成
- カスタムハードウェアの追加
- デバイスドライバの作成
- ソフトウェアの記述
となるだろう。一つずつ、チュートリアルを見ながらやっていこう。
今回は、日記を執筆時点の最新ビルド環境であるVivado 2017.1を利用する。
Vivado 2017.1でZedBoardのハードウェアプロジェクトを作成する
まずはZedBoardで動作するハードウェアを作成しなければならないのだが、チュートリアルではZyboのプロジェクトを引っ張ってきている。
今回は、ZedBoardのプロジェクトが必要なので以下から取得してくる。
ただし、このプロジェクトはIPのバージョンなど2017.1には対応していないので、対応するバージョンに上げた手前味噌のリポジトリを利用しよう。
ビルドのVivado 2017.1でのプロジェクトのビルド方法は過去の日記を参照のこと。
adv7511のプロジェクトをビルドしてVivado 2017.1で開くと、以下のようになった。
Project Settingから、IP Vendorの名前を"Digilent”に設定する。これは何の意味があるんだろう?
Projectから、"Create and Package New IP" を選択する。
IP作成ウィザードの開始
ここから、ZedBoardに接続されているLEDを制御するためのIPを作成する。
AXI4のPeripheral Interfaceを作成するので、「Create AXI4 Peripheral」を選択する。
IPの名前は適当に決めた。
ポートの名前はS_AXI、TypeはAXI-Liteを利用することにする。データ幅は32bitだ。
次のステップとして、「Edit IP」を選択し、ウィザードを終了する。