ラベル gcc の投稿を表示しています。 すべての投稿を表示
ラベル gcc の投稿を表示しています。 すべての投稿を表示

2014年3月25日

Raspberry Pi用ディスプレイ(7ichi)の作成

どこまで伝ってる不安ですが、片手のまっつです。
最近、就労センターのお世話になってます。

それはさて置き、年末にRaspberry Piを買ってしまいました。
長らくテレビに繋いでいたのですが、ディスプレイを買うことに。
紹介のリンクは、amazonですがyahooのオークションで買いました。

詳しい方なら、わかると思いますが、クルマ用です。そのままでは使えません。
そこで、電源周りを改造しました。

片手だと電子工作は、とても大変です。
過去にやろうとした事も、ほとんど挫折しています。

今回、クルマ好き(だと思う)のスタッフの人がフォローしてくれなかったら改造は出来なかったと思います。

raspberry_pi_7ichi

2008年5月10日

PSPSDKをリビルドする

PSPSDKをmingw+msysで構築する(正直日記)

ちょっとショット買ったんで、devkitPSPでいじるかと思ったらカメラのライブラリが無い。
ただ、Webを探すとコードが見つかる。
ということで、svnからいろいろ取得してpspsdkだけビルドしてみた。
Vistaだとmake installが通らない(Permission Deniedが出てる)。
夜中にだらだらやってるんで詳しくは調べてないけど、Vistaはダメですかね。

追記(5/10 14:30) ... ターミナルを"管理者として実行"した場合、通りました。su -じゃなくてここからか。

2007年12月27日

libttaをNDS向けにポーティングする

とりあえず最低限のフォーマットが鳴ったぞうれしいなと浮かれているワケですが、興奮が冷めないうちにいろいろメモを残そうかと思います。
TTAは、The True Audioという名前の音楽フォーマットです。詳しい解説は、wikipediaに任せます。
公式サイトは、true-audio.comです。各種ファイルはここから取ってきます。
wikipediaの記事にもあるのですが、FLACやMonkey's Audioと比較されていますが、TTAはビルドが楽です。
(試していないので)Monkey's Audioはさておき、FLACは通せませんでしたorz
ライブラリの規模も小さく、扱いやすい印象を受けました。
公式サイトのファイル置き場から、
"Download TTA library version 1.2 for hardware players (Source code)"(ttalib-hwplayer-1.2.tgz)
をダウンロードします。
展開したファイルを、以下のような配置にします。

ルートである./libttaには、makefileがあります。
# devkitProのサンプルにあるexamples/nds/templates/arm9libを使ってもいいようです
これをmakeすれば、もれなく完成なわけですが、少しだけ追記する箇所があります。
int check_tta_file( tta_info *info, unsigned int data_offset )
{
(略)
    // check for player supported formats
    if (ttahdr.AudioFormat != WAVE_FORMAT_PCM ||
        ttahdr.NumChannels > MAX_NCH ||
        ttahdr.BitsPerSample > MAX_BPS ||(
        ttahdr.SampleRate != 16000 &&
        ttahdr.SampleRate != 16384 && // NDS Native
        ttahdr.SampleRate != 22050 &&
        ttahdr.SampleRate != 24000 &&
        ttahdr.SampleRate != 32000 &&
        ttahdr.SampleRate != 32768 && // NDS Native
        ttahdr.SampleRate != 44100 &&
        ttahdr.SampleRate != 48000 &&
        ttahdr.SampleRate != 64000 &&
        ttahdr.SampleRate != 88200 &&
        ttahdr.SampleRate != 96000)) {
        info->CALLBACK.close_func (info->HANDLE);
        info->STATE = FORMAT_ERROR;
        return -1;
    }
太字の部分を追記します。
この周波数(16384Hzと32768Hz)は、NDSで再生するうえで相性のよい数字のようです。
と、言うことで、エラーにしないようにします。
makeが通った後は、次のディレクトリをdevkitproのルートウィンドウにコピーします。
./libtta
./libtta/include
./libtta/lib
devkitproのルートウィンドウがD:/devkiProだとすると、ヘッダファイルがあるところは、"D:/devkitPro/libtta/include"になります。
ライブラリ構築手順は以上です。

NDSでのTTA再生

去年の今頃も同じようなことをやっていて挫折していたと思うのですが、なんとかプチノイズが目立たなくなるとことまでこぎつけました。
TTATest 2007.Dec.27(Zip形式/1.18MB)
以下説明。
[操作]
A ... TTA再生
XY ... 某効果音サンプル
再生するTTAのデータは、32768Hz(約32kHz)/8ビット/モノラルです。
時間が取れれば、ソースも公開して(おこがましいのを覚悟で)解説をしたいのですが、取り急ぎ実行バイナリと要点をまとめておきます。
- ダブルバッファリングは必須なのだけれど、再生するチャンネル(L/R)ひとつに対して、NDSのハードウェア上のチャンネルふたつを割り当てる必要がある。
- このふたつのチャンネルをリピートモードではなくワンショットモードで使いまわす。
- チャンネルのスワップやバッファの更新は、タイマで周期的に行うことが理想。
- デコードにはlibttaを手を加えずにビルド。バッファサイズを4KBに設定。組んでる時に早送り状態になったので、CPU(ARM9)にはまだ余裕がありそう。
そんな感じでとりあえず寝ます。

2007年12月19日

メガドラの自作ゲーム

Pringles Game for SEGA Genesis
トップページなんだけど、大丈夫かな。
Genesisってのはいわゆるメガドライブ。
情報元が正直日記なんだけど、devkitGenて。
devkit*って名称は世界的に市民権を得てる気がする。

2007年5月31日

devkitDC構築メモ(その2)

devkitDC構築メモ(その1)の続きです。
今回はSH4環境のビルドスクリプトについてです。
とはいっても、ARMはこれの縮小版になりますが。
#!/bin/sh
ARCH=sh

SRC_BINUTILS=binutils-2.17
BUILD_BINUTILS=$ARCH-binutils

SRC_GCC=gcc-4.1.2
BUILD_GCC=$ARCH-gcc

SRC_NEWLIB=newlib-1.15.0
BUILD_NEWLIB=$ARCH-newlib

TARGET=$ARCH-elf
PREFIX=/devkitPro/devkitDC/$TARGET
binaries=$PREFIX/bin

export PATH=$PATH:$binaries


GO_BINUTILS=0
GO_BASEGCC=0
GO_NEWLIB=1
GO_FINALGCC=0


if [ $GO_BINUTILS -eq 1 ]
then
  date
  echo "Go binutils:"

  if [ ! -d $BUILD_BINUTILS ]
  then
    mkdir $BUILD_BINUTILS
  fi
  cd $BUILD_BINUTILS

  ../$SRC_BINUTILS/configure --target=$TARGET --prefix=$PREFIX

  make all install MAKEINFO=makeinfo

  cd ..

  echo "Finished binutils:"
  date
fi

if [ $GO_BASEGCC -eq 1 ]
then
  date
  echo "Go gcc(Base):"

  if [ ! -d $BUILD_GCC ]
  then
    mkdir $BUILD_GCC
  fi
  cd $BUILD_GCC

  ln -s ../$SRC_NEWLIB/newlib .
  mkdir -p ./gcc/config
  cp -R ../$SRC_GCC/gcc/config ./gcc
  cp -R ../$SRC_GCC/gcc/coretypes.h ./gcc
  cp -R ../$SRC_GCC/gcc/defaults.h ./gcc
  ../$SRC_GCC/configure --target=$TARGET --prefix=$PREFIX --enable-languages=c --disable-libssp --with-newlib

  make all
  make install

  cd ..

  echo "Finished gcc(Base):"
  date
fi

if [ $GO_NEWLIB -eq 1 ]
then
  date
  echo "Go newlib:"

  if [ ! -d $BUILD_NEWLIB ]
  then
    mkdir $BUILD_NEWLIB
  fi
  cd $BUILD_NEWLIB
  make clean
  CFLAGS=-D__USE_MINGW_ACCESS ../$SRC_NEWLIB/configure --target=$TARGET --prefix=$PREFIX

  make all install \
    MAKEINFO=makeinfo \
    CC_FOR_TARGET=$binaries/${TARGET}-gcc \
    AS_FOR_TARGET=$binaries/${TARGET}-as \
    LD_FOR_TARGET=$binaries/${TARGET}-ld \
    AR_FOR_TARGET=$binaries/${TARGET}-ar \
    RANLIB_FOR_TARGET=$binaries/${TARGET}-ranlib

  cd ..

  echo "Finished newlib:"
  date
fi

if [ $GO_FINALGCC -eq 1 ]
then
  date
  echo "Go gcc(Final):"

  cd $BUILD_GCC
  make clean
  ../$SRC_GCC/configure --target=$TARGET --prefix=$PREFIX \
    --enable-languages=c,c++ \
    --disable-debug --disable-libmudflap --disable-libssp \
    --with-newlib --without-headers
#--disable-libstdc++-v3

  make all
  make install

  cd ..

  echo "Finished gcc(Final):"
  date
fi

各種GO_*変数の値に応じて処理を{する/しない}を切り替えています。
configureやmake時のオプションを試行錯誤する際に、このカタチにしました。
シェルスクリプトはトレースが難しいのでサブルーチンなどにする手法は避けました(という言い訳)。
MinGWでは、
- xgccがヘッダファイルを見つけてくれない
- 'ln -s'でリンクは出来ずファイルコピーが発生する
という現象が起きました。
当方の環境(CPU:PenM1.5GHz/Mem:512M/OS:WinXP-SP2)フルビルドは6時間程度かかりました。
特に、newlibとfinalgccは長いです。
finalgccは、libstdc++にかけている時間が長いようです。
# 標準出力、エラー出力を記録しないとか考えましたけど、さすがに怖い

2007年5月29日

devkitDC構築メモ(その1)

春先から手を付けていたDreamCast(SH4とARM)向けのgccをMinGWでビルドして、devkitProにビルトインする作業がなんとか完了しました。
今月初旬の時点でビルドは出来ていたのですが、dc-tool-ipで実機に転送→実行すると動かないという現象に遭っていました。
これは、gccの最適化でKOSカーネルに定義されているテーブルが一部無くなるという不具合のせいでした。
# KOSはすべてのソースが公開されていますので、リビルドできます。というかしないといけません
KOSに間違いは無い、自分のビルドがおかしいとばかり思い込んでいて、つい最近まで2ちゃんねるのスレッドでアドバイスをいただくまで気づきませんでした。
そんなわけで、devkitDCの構築メモを何度かに分けて公開します。
まずは、環境構築について説明します。
msysは、公式サイトのものを使用しました。
devkitProのインストール時に入れるものはコマンドが一部足りません。testとか。
作業は、MinGW内の/buildディレクトリで行いました。
前準備のスクリプトです。
#!/bin/sh

EXTRACTS=0
PATCHES=1

if [ $EXTRACTS -eq 1 ]
then
  tar zxvf binutils-2.17.tar.gz
  tar jxvf gcc-core-4.1.2.tar.bz2
  tar jxvf gcc-g++-4.1.2.tar.bz2
  tar zxvf newlib-1.15.0.tar.gz
fi

if [ $EXTRACTS -eq 1 ]
then
  cd ./binutils-2.17
  patch -p1 < ../patches/binutils-2.17.patch
  cd ../

  cd ./gcc-4.1.2
  patch -p1 < ../patches/gcc-4.1.2.patch
  cd ../

#  cd ./newlib-1.15.0
#  patch -p1 < ../patches/newlib-1.15.0.patch
#  cd ../
fi

gccとbinutilsには、本家devkitProのVista対応を銘打ったパッチを適用しています。
newlibにもパッチがありますが、これは適用してはいけません。