なんでも作っちゃう、かも。

Arduino/Make/フィジカルコンピューティング/電子工作あたりで活動しています。スタバの空きカップを使ったスタバカップアンプなど製作。最近はもっぱらArduinoと3Dプリンタの自作に興味があります。

EIA-232準拠のシリアルポートの電圧

Posted by arms22 on 2007年05月30日 0  0

送信ピン(TxD)、受信ピン(RxD)は負論理で+12vが0(マーク)、-12vが1(スペース)を表す。其の外のピン(DCD,DTR,DSR,RTS,CTS)は正論理で+12vがオン、-12vがオフを表す。
V850付録基板に搭載されているCP2102-USBtoUARTブリッジICの端子(DCD,DTR,DSR,RTS,CTS)はLow activeとなっている。

#例えばPC側のRTS端子をオン(+12v)に設定した場合、CP2102側のRTS端子はLowになる。
#またCP2102側のCTS端子をLowにした場合、PC側のCTS端子はオン(+12v)になる。と思う。。
 
電子回路の豆知識-RS232C
http://www.nahitech.com/nahitafu/mame/mame5/rs232c.html

EIA-232(RS-232)のシリアル通信
http://www.linux.or.jp/JF/JFdocs/Text-Terminal-HOWTO.html#toc21.2

sp850esをmacosxに移植

Posted by arms22 on 2007年05月26日 4  0

sp850esをmacosxに移植しました。
sp850esELM-ChaNさんが作成されたV850用フラッシュ書き込みソフトです。
追加回路なしでV850付録基板に書き込むことができます。

sp850esはwindows専用ですがシリアル通信の処理部分をWindows-APIからPOSIX-APIに置き換えるだけでmacosxで動かす事ができました。他のUNIX系OSでも動作するはずです。
※メモ※
c_cflagに設定したボーレートは読み込まれないのでcfsetospeed,cfsetispeedを使う。

これでソースコードのコンパイル、フラッシュへの書き込みをmacosx上だけで行えるようになりました。あとはデバッグ環境を整えれば完璧です。

macosxに移植したsp850esはこちら。
sp850es.c.zip
ソースコードのみの配布なので適当にコンパイルしてください。
使い方はオリジナルのsp850esと同じです。

78KとV850ライタの製作
http://elm-chan.org/works/sp78k/report.html

V850付録基板でOgg Vorbisプレイヤー(4)

Posted by arms22 on 2007年05月15日 0  0

gcc/config/v850/lib1funcs.asmでエラーが発生する原因を特定することができましたのでパッチを公開します。原因は処理系に依存するコードを使っていた為でbinutils-2.17/gas/config/tc-v850.c 1567行目で次のようなコードを発見しました。

max = (1 << operand->bits) - 1;
if (! warn_unsigned_overflows)
  min = -(1 << (operand->bits - 1));
else
  min = 0;
}
if (val < (offsetT) min || val > (offsetT) max)
operand->bits == -1 の時、i386環境ではmaxの値は2147483647、ppc環境では-1となります。其の為、次の行の範囲チェックで 0(val) > -1(max) となりエラーになっているようです。次のようにコードを修正することでエラーはなくなりました。
if (operand->bits < 0)
  max = (1 << (32 + operand->bits)) - 1;
else
  max = (1 << operand->bits) - 1;
以下はV850クロス開発環境に使用したパッケージとコンパイル手順です。
追記 5/18:コンパイル環境はMacOSX10.3.9、gcc 3.3

binutils-2.17
http://sources.redhat.com/binutils
gcc-4.1.2
http://gcc.gnu.org/
newlib-1.15.0
http://sources.redhat.com/newlib/
% cp tc-v850-patch binutils-2.17/gas/config/tc-v850-patch
% cd binutils-2.17/gas/config
% patch < tc-v850-patch

% cd ../../
% mkdir build-v850
% cd build-v850
% ../configure --target=v850-elf
% make
% sudo make install

% cd ../../gcc-4.1.2
% mkdir build-v850
% cd build-v850
% ../configure --target=v850-elf --with-gnu-as --with-gnu-ld
--with-newlib --enable-languages=c --disable-libssp --disable-shared
--without-include-headers
% make
% sudo make install

% cd ../../newlib-1.15.0
% mkdir build-v850
% cd build-v850
% ../configure --target=v850-elf
% make
% sudo make install

V850付録基板でOgg Vorbisプレイヤー(3)

Posted by arms22 on 2007年05月13日 0  1

Tremorは浮動小数点演算を使わず64bit整数演算のみでデコードを行います。其の為、Tremorのコンパイルにはコンパイラが64bit演算に対応している必要があります。 残念なことにNECのCコンパイラCA850は64bit演算に対応していません。そこでgccでV850のクロス開発環境を構築することにしました。
利用するパッケージはbinutils-2.17とgcc-3.4.6。gccのクロスコンパイルの手順はこちらを参考にした。

ただ今のところMacOSX(10.3)ではgccのコンパイルが通っていない。gcc/config/v850/lib1funcs.asmのコンパイルで次のようなエラーが発生している。

gcc-3.4.6/build-v850/gcc/xgcc -Bgcc-3.4.6/build-v850/gcc/ -nostdinc -Bgcc-3.4.6/build-v850/v850-nec-elf/newlib/ -isystem gcc-3.4.6/build-v850/v850-nec-elf/newlib/targ-include -isystem gcc-3.4.6/newlib/libc/include -B/usr/local/cross/v850-nec-elf/bin/ -B/usr/local/cross/v850-nec-elf/lib/ -isystem /usr/local/cross/v850-nec-elf/include -isystem /usr/local/cross/v850-nec-elf/sys-include -O2  -DIN_GCC -DCROSS_COMPILE   -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition  -isystem ./include -mno-app-regs -msmall-sld -Wa,-mwarn-signed-overflow -Wa,-mwarn-unsigned-overflow  -g  -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED -Dinhibit_libc -I. -I. -I../../gcc -I../../gcc/. -I../../gcc/../include -I../intl -mv850e -DL_callt_save_20 -xassembler-with-cpp -c ../../gcc/config/v850/lib1funcs.asm -o libgcc/v850e/_callt_save_20.o
../../gcc/config/v850/lib1funcs.asm: Assembler messages:
../../gcc/config/v850/lib1funcs.asm:1613: Error: prepare {r20-r29},0: operand out of range (0 is not between 0 and -1)
../../gcc/config/v850/lib1funcs.asm:1613: Error: prepare {r20-r29},0: operand out of range (0 is not between 0 and -1)
../../gcc/config/v850/lib1funcs.asm:1613: Error: prepare {r20-r29},0: operand out of range (0 is not between 0 and -1)
../../gcc/config/v850/lib1funcs.asm:1613: Error: prepare {r20-r29},0: operand out of range (0 is not between 0 and -1)
../../gcc/config/v850/lib1funcs.asm:1613: Error: prepare {r20-r29},0: operand out of range (0 is not between 0 and -1)
../../gcc/config/v850/lib1funcs.asm:1613: Error: dispose 0,{r20-r29},r31: operand out of range (0 is not between 0 and -1)
make[2]: *** [libgcc/v850e/_callt_save_20.o] Error 1
make[1]: *** [libgcc.a] Error 2
make: *** [all-gcc] Error 2
ソースコード自体はすでに実績があるので問題ないとして、アセンブラv850-elf-asのコンパイルがうまくいっていないのか?
エラーが発生した該当箇所のコードを抜き出してv850-elf-asに食わせてやると同じエラーが発生している。

追記:binutils-2.14では上記エラーは警告扱いになるのでgccのコンパイルが通るかも。。

V850付録基板でOgg Vorbisプレイヤー(2)

Posted by arms22 on 2007年05月13日 0  0

前回、TremorをMacOSX上でコンパイル+実行しメモリの使用量を調べるところまでやりました。結果は100KBを超えるメモリを使用し、さらにメモリリークまで起こしていました。

メモリリークしているライブラリは使えませんので、さっそくリークしている箇所を探してみました。Tremorのコードは大きくないのでリークしている箇所を特定するのは難しくはありませんでした。
ogg_stream_destroyと_ogg_buffer_destroyでの解放もれがありました。
これらはOggファイルをクローズする時に実行される処理なので、ファイルを開いて閉じてを繰り返して行くとどんどんリークしてゆきます。
ogg_stream_destroyと_ogg_buffer_destroyを修正して再度メモリの使用量を計測してみました。あいかわらず100KBを超えていましたけど、、メモリリークはなくなったみたいです。
修正後のソースの差分は「続きを読む」。

付録基板祭り

Posted by arms22 on 2007年05月11日 0  0

Design Wave Magazineの7月号には25万ゲート相当のFPGA「Spartan-3E XC3S250E」を実装した基板。トランジスタ技術の8月号にはdsPIC30Fを実装したマイコン基板、さらに9月号にはdsPICトレーニング用の基板が付いてきます。
Design Wave Magazineは?2480、トランジスタ技術8月号は?1080、9月号は?950です。
FPGAもdsPICも面白そうだ。

Design Wave Magazine
http://www.cqpub.co.jp/DWM/

トランジスタ技術
http://www.cqpub.co.jp/toragi/

ザイリンクス Spartan-3E FPGA
http://japan.xilinx.com/publications/prod_mktg/j_pn0010855_r1.pdf

dsPIC30Fファミリーリファレンスマニュアル
http://ww1.microchip.com/downloads/en/DeviceDoc/70046b_jp.pdf

Amazon トランジスタ技術 Design Wave Magazine

V850付録基板でOgg Vorbisプレイヤー

Posted by arms22 on 2007年05月10日 0  0

インターフェース5月号のV850基板を使ってOgg Vorbisプレイヤーを作ろうと考えています。
Ogg VorbisはXiph.orgが開発したフリーの音声ファイルフォーマットでデコードライブラリも修正BSDライセンスのもと公開されています。
Xiph.orgからはTremorという整数演算のみでデコードを行う組み込み向けライブラリが提供されています。これを使ってOgg Vorbisプレイヤーを作ろうと考えていたのですが、色々調査してみると速度、メモリ量ともまったく足りていない事が分かってきました。
TremorはARM用に最適化されているのですがそれでも実用的なビットレートで音楽を再生するには66MHz程度のクロック、50KB~200KBのRAMが必要そうです。
32Kbpsとか低ビットレートでもいいので、取りあえず動くところまで作ろうと思います。

まずOSX上でTremorを動作させてメモリの使用量を測定しました。
クオリティレベル5でエンコードした2分程度の曲をデコードした時のメモリの使用量は最大117KB、しかもメモリーリーク付き。。
う~ん。。前途多難だな。

Ogg Vorbis - Wikipedia
http://ja.wikipedia.org/wiki/Ogg_Vorbis

Xiph.org
http://www.xiph.org/

Tremor
http://svn.xiph.org/trunk/Tremor/

P/ECE研究室 - Oggプレイヤー(2003年9月15日)
http://www.piece-me.org/

Xfind 0.8.6 リリースしました。

Posted by arms22 on 2007年05月05日 1  0

Xfind 0.8.6 リリースしました。
今回のリリースはいくつかのバグフィクスと使い勝手の向上を狙った機能の追加がメインです。

XfindはMacOSX用の2画面ファイル管理ソフトです。
右と左に2つのファイル表示画面をもっていて、右画面から左画面、 左画面から右画面へのファイル操作を想定して作られています。
基本操作はすべてキーボードのみで行えます。
マウスが嫌いな方、キーボードだけでMacを操作する人にぴったりです。

ダウンロードはこちらから
http://xfind.hp.infoseek.co.jp/downloadcenter.shtml

Xfind希望、要望、バグ報告はこちら
http://arms22.blog91.fc2.com/blog-entry-67.html

主な変更点
・イジェクト機能追加(cmd+Eキー)
・フォルダ表示で時々強制終了する不具合を修正
・ZIP書庫をパーミション付きで展開するように修正
・初期設定パネルを追加
・Finderで開く機能を追加(shift+Enterキー)
・エディタで編集する機能を追加(eキー)
・ターミナルで開く機能を追加(F2キー)
・ファイルを比較する機能を追加(=キー)

該当の記事は見つかりませんでした。