UbuntuにSpursEngine (PxVC1100) Linux SDKをインストールしてLinux上でSpursEngineを使用できるようにします。
環境は32bit x86 PC上のUbuntu 10.04 - 14.04を想定しています。
PCにUbuntu 14.04 (Trusty Tahr)を「軽量化」インストールするも合わせてご覧ください。(記事中では64bit版のインストールについて書かれていますが、SpursEngineを使う場合は必ず32bit版(ubuntu-14.04-server-i386.iso)をダウンロード、インストールしてください。)
Fedora系の場合はこちら→
FedoraにSpursEngine Linux SDKをインストールする
【64bit環境について】
32bit環境でないと正常に動作しません。32bit版のLinuxをインストールしてください。(メモリが3GB以下の環境にインストールし、コンパイル時に-m32オプションを付ければ64bit環境でも一応は動作しますが、解説は省略します。)
【3GB以上のメモリを搭載したシステムの場合】
non-PAEカーネルでないと正常に動作しません。あらかじめnon-PAEカーネルをインストールしてください。
【Ubuntu 12.04以降の場合】
Ubuntu 12.04以降はnon-PAEカーネルのパッケージが用意されていないため、カーネルをソースから構築する必要があります。下記を参考にnon-PAEカーネルを構築、インストールしてください。
SDKのダウンロード
LEADTEKのSpursEngine特設サイトからSDKのアーカイブをダウンロードします。
LEADTEK SpursEngine特設サイト
LEADTEK SpursEngine SDK配布サイト
Linux_SDK_v1_5_3_2.rar、SDK1_5.rarをダウンロードしてホームディレクトリに置きます。(SDK1_5.rarはWindows用SDKですが、ドキュメント等はこちらに含まれているので必要です。)
ダウンロードはFlashをインストールしたWindows上で行う必要があります。(Linux環境では認証でエラーが出てダウンロードできませんでした)
開発用パッケージのインストール
端末でコマンドを入力します。
sudo apt-get update
(一行で)
sudo apt-get --no-install-recommends install gcc g++ gdb make manpages-dev libc6-dev autoconf automake bison flex binutils kernel-package texinfo libgmp-dev libmpfr-dev libmpc-dev linux-source libncurses5-dev unrar unzip bc
non-PAE版カーネルの構築
Ubuntu 12.04以降等、non-PAE版カーネルのパッケージが存在しない環境では、non-PAE版カーネルをソースコードから構築してインストールする必要があります。すでにnon-PAE版カーネルをセットアップしている場合や、メモリが3GB以内のシステムの場合は、この作業はスキップできます。
sudo -s
cd /usr/src
ls
「linux-source-(バージョンNo.).tar.bz2」という名前のファイルと、「linux-source-(バージョンNo.)」という名前のディレクトリを探します。以下はそのバージョンNo.に置き換えてください。
tar xjf linux-source-(バージョンNo.).tar.bz2
cd linux-source-(バージョンNo.)
ls /boot/config*
「/boot/config-(バージョンNo.)-generic」という名前のファイルを探します。複数あったらバージョンが大きい方のファイルを使います。以下はそのバージョンNo.に置き換えてください。
cp /boot/config-(バージョンNo.)-generic .config
make oldconfig
make menuconfig
メニューから、「Processor type and features --->」にカーソルを合わせてEnter。
次に「High Memory Support (64GB) --->」にカーソルを合わせてEnter。
選択肢の中から「4GB」にカーソルを合わせてスペースキー。
右カーソルキーを押して画面下方の「< Exit >」にカーソルを合わせてEnter。
もう一度右カーソルキーを押して「< Exit >」にカーソルを合わせてEnter。
「Do you wish to save your new configuration ? to continue.」で「< Yes >」にカーソルを合わせてEnter。
これで設定が保存されてシェルに戻ります。
nano Makefile
「EXTRAVERSION =」の行を修正して「EXTRAVERSION = -nonpae」にします。
nanoをCtrl-xで終了、Y、Enterで上書き保存して戻ります。
make-kpkg clean
make-kpkg --revision=1 --initrd kernel-image kernel_headers
(ここで--revision=1の数字は複数回ビルドする時は1を足していきます)
カーネルのビルドが始まります。このプロセスにはかなり時間がかかります。
エラーで止まらなければ成功です。出来上がったパッケージをインストールします。
cd ..
ls
「linux-image-(バージョンNo.).deb」「linux-headers-(バージョンNo.).deb」という名前のファイルを探します。(バージョンには「nonpae」を含む)以下はそのバージョンNo.に置き換えてください。
dpkg -i linux-image-(バージョンNo.).deb
dpkg -i linux-headers-(バージョンNo.).deb
起動するカーネルを選択できるようにブートローダーを設定します。
nano /etc/default/grub
以下の行を探して修正します。
GRUB_HIDDEN_TIMEOUT_QUIET=true → GRUB_HIDDEN_TIMEOUT_QUIET=false
GRUB_TIMEOUT=2 → GRUB_TIMEOUT=10
nanoをCtrl-xで終了、Y、Enterで上書き保存して戻ります。
update-grub
再起動します。
reboot
再起動後、ブートローダーで「Advanced options for Ubuntu」を選択し、「nonpae」のカーネル(Recovery modeではない方)を選択して起動します。
SPE用 GNU Toolchainのビルド
ここでは、SPE用 GNU Toolchainのソースコードを~/cellsdk-src以下に置き、~/cellsdk以下にインストールします。
mkdir ~/cellsdk
mkdir ~/cellsdk-src
cd ~/cellsdk-src
(一行で)
wget http://ftp.jaist.ac.jp/pub/GNU/gcc/gcc-4.9.1/gcc-4.9.1.tar.bz2
(一行で)
wget http://ftp.jaist.ac.jp/pub/GNU/gdb/gdb-7.8.tar.xz
(一行で)
wget http://ftp.jaist.ac.jp/pub/GNU/binutils/binutils-2.24.tar.bz2
(一行で)
wget ftp://sourceware.org/pub/newlib/newlib-2.1.0.tar.gz
(上記のファイルが存在せずエラーが出た場合は、
JAIST、
KDDI研究所等のミラーから最新版をwget等でダウンロードしてください。)
tar xvjf gcc-*.tar.bz2
tar xvJf gdb-*.tar.xz
tar xvjf binutils-*.tar.bz2
tar xvzf newlib-*.tar.gz
cp -r newlib*/newlib gcc-*/
cp -r newlib*/libgloss gcc-*/
mkdir ~/cellsdk-src/obj-binutils
cd ~/cellsdk-src/obj-binutils
(一行で)
../binutils-*/configure --prefix=$HOME/cellsdk --target=spu --program-prefix=spu-
make all
make install
export PATH=$HOME/cellsdk/bin:$PATH
mkdir ~/cellsdk-src/obj-gcc
cd ~/cellsdk-src/obj-gcc
(一行で)
../gcc-*/configure --prefix=$HOME/cellsdk --target=spu --program-prefix=spu- --enable-languages=c,c++
make all
make install
mkdir ~/cellsdk-src/obj-gdb
cd ~/cellsdk-src/obj-gdb
(一行で)
../gdb-*/configure --prefix=$HOME/cellsdk --target=spu --program-prefix=spu-
make all
make install
nano ~/.profile
ファイルの最後に追加
############################
PATH=$PATH:$HOME/cellsdk/bin
############################
一旦ログアウトしてログインし直します。
SpursEngineドライバのインストール
ホームディレクトリに移動
cd
rarアーカイブを解凍
unrar x Linux_SDK_v1_5_3_2.rar
cd ~/SpursEngine_Linux_SDK_v1_5_3_2/driver
ドライバのインストール
(一行で)
sudo tar -Pzxf spurs-driver_1.5.2.2_for-2.6.18-128.2.1.el5.tgz --exclude="/lib/modules"
現在のカーネルに対応したカーネルモジュールをコンパイル
ドライバのソースコードを解凍
cd ~/SpursEngine_Linux_SDK_v1_5_3_2/driver
tar xzf driver-only.linux_src_1.5.2.2.tgz
パッチを当てます。
(一行で)
wget -O spurs_driver_patch.tar.gz https://cellspe.matrix.jp/files/spurs_driver_patch.tar.gz
tar xzf spurs_driver_patch.tar.gz
patch -p0 < spurs_driver_patch.diff
以下の作業はカーネルがアップデートされる度に行う必要があります。
(一行で)
cd ~/SpursEngine_Linux_SDK_v1_5_3_2/driver/spurs_src/trunk/driver/linux
make clean
(ここで、「.tmp_System.map」を削除できないというエラーが出る場合は、「sudo make clean」と実行してください。)
make all
カーネルモジュールをインストール
sudo make install-drivers
sudo ldconfig
sudo modprobe spurs
ライブラリのインストール
cd ~/SpursEngine_Linux_SDK_v1_5_3_2
tar xzf spurs_baselib_1.5.2.2.tgz
tar xzf spurs_candilib_1.5.3.2.tgz
tar xzf spurs_club_1.5.6.0.tgz
tar xzf spurs_spade_1.5.4.5.tgz
spurs_topディレクトリの作成
将来SDKのバージョンアップが行われた場合に簡単にパスを変更できるよう、ホームディレクトリにspurs_topというディレクトリを作成してシンボリックリンクを張っておきます。Makefileからはこのディレクトリを参照するようにすると便利です。
spurs_topディレクトリの作成
cd ~
mkdir spurs_top
cd spurs_top
ln -s ~/SpursEngine_Linux_SDK_v1_5_3_2/release release
SDKのサンプルプログラム SpursInfo を実行
cd ~/SpursEngine_Linux_SDK_v1_5_3_2/tools
tar xzf SpursInfo.tgz
cd SpursInfo
./SpursInfo
「Hello World from SPE !」と表示されたら成功です。
基本ライブラリ・サンプルのコンパイル・実行
cd ~/SpursEngine_Linux_SDK_v1_5_3_2/tools/SpursInfo
nano Makefile.linux
「RELEASE = 」の行を以下のように変更します。
##########
RELEASE = ../../release/linux
##########
make -f Makefile.linux clean
make -f Makefile.spe clean
make -f Makefile.linux
make -f Makefile.spe
コンパイルでエラーが出ないことを確認します。
./SpursInfo
「Hello World from SPE !」と表示されたら成功です。
clubミドルウェア・サンプルのコンパイル・実行
cd ~/SpursEngine_Linux_SDK_v1_5_3_2/release/sample
nano Makefile
「TOOLCHAIN_BIN =」の行を以下のように変更します。
##########
TOOLCHAIN_BIN = ~/cellsdk/bin
##########
make
./sample.sh
candiミドルウェア・サンプルの実行
(一行で)
cd ~/SpursEngine_Linux_SDK_v1_5_3_2/release/linux/samples/candi/codec_sample_04
export LD_LIBRARY_PATH=`pwd`
(一行で)
./sample_app -s setfile_tc_M2AVC_keep.txt -i SRK_sample.m2v.spes -o out_M2AVC.264.spes
./spes2es -o out_M2AVC.264.es out_M2AVC.264.spes
出来上がったout_M2AVC.264.esはsmplayerで再生できます。
SDKのマニュアル等
マニュアルはWindows版SDKのアーカイブに入っているのでそちらを解凍します。
cd
unrar x SDK1_5.rar
cd SpursEngineSDK1_5_1026_2009
unrar x Document_Japanese.rar
~/SpursEngineSDK1_5_1026_2009/Document_Japanese/ 以下に解凍されたpdfファイルをePDFViewer等で閲覧します。
SPEの仕様、プログラミング方法はCell/B.E.のマニュアルを参考にします。
Cell/B.E. 公開情報
参考文献等
熊本大学 総合情報基盤センターの永井さんによるKernel2.6.24対応パッチ
LEADTEK SpursEngine特設サイト
SpursEngine SDK配布サイト
LEADTEK SpursEngine SDK クイック スタート ガイド
サポート
この記事に関するご質問は
Cell/B.E. & SpursEngine BBSにお願いします。