Cell/B.E. & SpursEngine プログラミング
Home記事一覧BBS

UbuntuにSpursEngine Linux SDKをインストールする

【更新履歴】
2014/08/28 複数のパッチをまとめ、Kernel 3.10.0に対応。Ubuntu 14.04、Kernel 3.13.11での動作を確認。
2013/09/16 ドライバのパッチspurs_driver130127.diff、spurs_driver130521.diff追加。Ubuntu 13.04、Kernel 3.8.13での動作を確認。Ubuntu 12.04以降での32bit nonpaeカーネルの構築方法追加。spu向けGNU toolchainのソースからの構築方法追加。
2012/09/01 Ubuntu 12.04、Kernel 3.2.0での動作を確認。
2011/11/13 Ubuntu 11.10、Kernel 3.0.0に対応しました。
2010/12/08 ドライバのパッチspurs_driver101119.diff追加。
2010/10/18 ドライバのパッチspurs_driver101018.diff追加。

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

(上記のファイルが存在せずエラーが出た場合は、JAISTKDDI研究所等のミラーから最新版を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"

【以前インストールしたドライバを再インストールする場合】
新しいパッチを当ててドライバを再インストールする時は、「~/SpursEngine_Linux_SDK_v1_5_3_2/driver/spurs_src」ディレクトリを一旦削除してから、ここからカーネルモジュールのインストールまでをやり直してください。

現在のカーネルに対応したカーネルモジュールをコンパイル
ドライバのソースコードを解凍

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

t_nagai_original_patch.diff は、熊本大学 総合情報基盤センターの永井さんが作成されたKernel2.6.24対応パッチです。

spurs_driver_patch.diff は、miyaが作成したそれ以降のバージョン用のパッチです。(永井さんのパッチも含めています)

以下の作業はカーネルがアップデートされる度に行う必要があります。

(一行で)
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にお願いします。