DE0-Nano-SoC用ベアメタルアプリのコンパイル

ベアメタルアプリのコンパイル環境を構築する手順のメモです。コンパイル環境は、既存のサンプルをベースに作成しました。参考にしたサンプルはこちらのものです。
http://www.altera.com/literature/an/cv_boot_guide.zip
readmeを読むと、Altera Cyclone V SoC Development Boardをターゲットとしたサンプルのようですが、DE0-Nano-SoCでも動作しました。具体的な構築手順は次のとおりです。なお、この手順ではDS-5は利用していません。

コンパイル環境の構築手順

サンプル環境の準備

まずcv_boot_guide.zipを解凍します。次に、sourceディレクトリに格納されているAltera-SoCFPGA-HardwareLib-Unhosted-CV-GNU.tar.gzを適当なディレクトリに解凍します。解凍すると、次のようなファイルが生成されます。

サンプルのディレクトリ内容

サンプルのディレクトリ内容

このサンプルは、DS-5にインポートして利用するように作成されていますが、今回はDS-5を利用していません。

Makefileの修正

Quartus II 15.0の環境でコンパイルを行うと、エラーが発生するのでMakefileを修正します。

コンパイル

Embedded Command Shellを起動します。Embedded Command Shellは、Quartus IIのインストールディレクトリのembeddedに格納されています。

Embedded Command Shellの起動

Embedded Command Shellの起動

Embedded Command Shell

Embedded Command Shell

ディレクトリを変更してmakeを実行します。

make実行

make実行


ソースファイルの変更

ソースファイルのmain.cを少し変更してみます。

変更後、再度makeを実行して、hello-mkimage.binを更新します。

動作確認

ブート環境を構築したSDカードにhello-mkimage.binを格納します。ベアメタルアプリは、SDカードのFATパーティションに書き込みます。この例の場合は、Dドライブ直下にhello-mkimage.binを格納するだけです。

ベアメタルアプリの名前がhello-mkimage.binと異なる場合には、一致するようにhello-mkimage.binの名前を変更する必要があります。
SDカードをDE0-Nano-SoCに挿入し、電源をONにするとターミナルに実行ログが表示されます。

ターミナルのログ表示

ターミナルのログ表示

cycloneV-dk-ram-modified.ldについて

サンプルのディレクトリにはcycloneV-dk-ram-modified.ldというリンカ用のスクリプトが格納されています。このようなスクリプトは、Quartus IIのembedded\host_tools\mentor\gnu\arm\baremetal\arm-altera-eabi\libに格納されています。cycloneV-dk-ram-modified.ldは、名前のとおりcycloneV-dk-ram.ldを修正したファイルのようです。修正内容はサンプルディレクトリのreadmeに記載されています。修正内容としては、SDRAMの先頭64BをブートPreloader用としてリザーブしているようです。2つのファイルのdiffをとると、次のような違いがあります。

DS-5でのコンパイルについて

このサンプルのreadmeにはDS-5での実行方法(インポート方法)が記載されていますが、そのままではコンパイル時にエラーが発生しました。具体的には、makeの最後で実行されるmkimageコマンドでnot foundエラーが発生します。単にパスが通っていないだけのエラーなので、少し修正すればDS-5でもコンパイルできそうでした。

スポンサーリンク
広告大
広告大
  • このエントリーをはてなブックマークに追加
スポンサーリンク
広告大