UHD を Windows でビルドする

USRP2 は GNU Radio から簡単に使える無線送受信機で、FPGA とイーサネットなどが搭載されたマザーボード上に、RF・ADC・DAC が搭載されたドーターボードを搭載することで、RF→IQ のデータをイーサネット経由で PC に取り込む/USRP2 に送る事が出来ます。

最近は National Instruments の LabVIEW でも使用することが出来るので、Linux 上で Python を使って信号処理プログラミングをしなくても良くなって、いまや Simulink のようにブロック線図でソフトウェア無線が出来てしまいます。

良い時代に?なりました。

PC から USRP2 の制御・データ転送を行なうのが、"UHD" と呼ばれるソフトウェアです。

今日はこの "UHD" を Windows 上でビルドしてみます。

clip_image001

基本的には UHD ソースの uhd\host\docs\build.rst に書かれていますが、戸惑うことも多いのでメモメモ。

必要なソフトのインストール

今回は USRP2 がターゲットなので、USB は使わないので LibUSB はインストールしません。

Git

UHD のソースコードをダウンロードするために VCS の Git をインストールする必要があります。

http://code.google.com/p/msysgit/downloads/list

ちなみに私は Bazaar を常用しています。

python 2.6.6

ビルドに使うために Python をインストールしますが、Cheetah(後述) が 2.6系を必要とするので、Windows インストーラが用意されている中で最新の Python 2.6.6 をダウンロードしてインストールします。

ポイントは 64bit OS を使っていても、32bit 版 Python をインストールすること。

64bit 版 Python では後述の Cheetah のインストールが出来ません。ファイル名に .amd64. となっている物が 64bit 版です。

 

http://www.python.org/ftp/python/2.6.6/python-2.6.6.msi
python-2.6.6.msi

 

ちなみに http://www.python.org/ftp/python/ にすべてのバージョンがあります。

とりあえずインストーラデフォルトでインストール。

clip_image002

Cheetah

高速テンプレート生成ソフトの Cheetah です。Python 2.6系に対応している物をダウンロードしてインストールします。

Cheetah インストール前に python のインストールを済ませておいて下さい。

 

http://feisley.com/python/cheetah/
Cheetah-2.2.2.win32-py2.6.exe

 

clip_image003

Boost

ライブラリ集 boost。

UHD はこの boost で提供されている lib (静的ライブラリ) を使用しているので、この本体+コンパイル済みバイナリをインストールします。

 

http://www.boostpro.com/download/
boost_1_47_setup.exe

 

インストーラが起動したらお使いの Visual Studio のチェックを入れます。

clip_image004

Next で進むと、以下の画像のようなツリーが表示されるので、UHD ビルドに必要なコンポーネントをチェックしていきます。

チェックするコンポーネント

  • date_time
  • filesystem
  • program_options
  • regex
  • system
  • thread
  • unit_test

Visual Studio 2010 を使用する場合なら "VC 10.0" をチェックします。

clip_image005

VC 10.0 以下はこんな感じですべてをチェックしておきます。

clip_image006

後はサーバから順次ダウンロードされてインストールされます。

CMake

UHD の Makefile から Visual Studio プロジェクトファイルを作成するのが CMake。

 

http://www.cmake.org/cmake/resources/software.html
cmake-2.8.7-win32-x86.zip

 

私は、こちらはインストーラではなく ZIP をダウンロードしてすべてを展開しました。

ここまでインストールが終わったらビルドの準備は完了です。

次にソースコードを取得します。

ソースコードをダウンロードする

UHD は ettus のサーバに git で挙げられているので、

>git clone git://code.ettus.com/ettus/uhd.git

としてプロジェクトをダウンロードします。

ettus のプロジェクト HP はこちら。
http://code.ettus.com/redmine/ettus/projects/uhd/wiki/UHD_Start?version=18

ダウンロードが完了したら、早速ビルドしてみます。

Visual Studio のソリューション・プロジェクトを作成する

UHD には Makefile が用意されていますが、Visual Studio で開くためのソリューションやプロジェクトファイルは用意されていません。先ほどインストールした CMake で作成します。

まずインストールした CMake (cmake-gui.exe) を起動します。

"Where is the source code:" に uhd/host

"Where to build the binaries :" に uhd/host/build

を指定します。

※ binaries の出力フォルダ名に半角空白が入ると Visual Studio でのビルド時にエラーが発生するので、含めないようにしましょう。

Configure をクリックしてご使用の Visual Studio を選択します。私の場合は Visual Studio 2010 なので "Visual Studio 10" を選択。コンパイラは "Use default native compilers" を選択して "Finish" をクリック。

これでプロジェクトファイルの生成(Configure)が始まります。

clip_image007

ログの最後に "Configureing done" と表示されてれば Configure が完了。

CMAKE_INSTALL_PREFIX にビルド後のバイナリ出力フォルダを設定しますのでお好みで変更して、"Configure" ボタンを押して更新します。

次に "Generate" ボタンを押せば、すべてのプロジェクトファイルが uhd/host/build フォルダに生成されます。

 

Configure のエラー

この画像のように赤く表示されていたら何らかのエラーです。

ウィンドウ下側のログを確認して "FAILED" となっている項目がないか探して対処して下さい。必要なソフトがインストールされていない場合が多いです。

clip_image008

ソースコードをビルドする

uhd/host/build/UHD.sln が生成されてるのでこれを Visual Studio で開きます。

ソリューションが開いたら、ビルドアクションを Debug → Release に変更します。

clip_image009

次にソリューションエクスプローラから、ALL_BUILD を右クリックしてビルドします。

エラーが出たら、boost のライブラリがインストールされていないか、CMake でパスの設定がミスっているかです。
がんばりましょう。

さて最後です。

ソリューションエクスプローラから、INSTALL を右クリックしてビルドします。CMake の CMAKE_INSTALL_PREFIX で設定したフォルダにバイナリやドキュメント一式が出力されます。

まとめ

build.rst に書かれている手順にのっとって適切なソフトをインストールしていくことで、問題なくビルドを行う事が出来ました。

次回は、Visual Studio 上で UHD の動作確認(デバッグ) をする方法をご紹介します。

コメント