忍者ブログ
グラビアアイドルについて語るブログ。
[2] [3] [4] [5] [6] [7] [8]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

mplayer で DVD を再生する際、-slang、-alang オプションによって、それぞれ字幕と音声の言語を指定することができます。

$ mplayer dvd://1 -slang ja -alang en

PR
今回は、Interface 5月号付属の V850 基板のフラッシュ ROM に Linux から書き込む試みです。まず結論を書くと、まだ成功していません。

■wine で FPL

最初に考えたのは、CD-ROM 収録の開発ツールに含まれる FPL を、wine から起動することでした。
$ wine FPL.exe

Device Setup ダイアログで、Port の候補が出てきません。/dev/ttyUSB0 が、wine から起動された FPL 上で COM ポートとして認識されていないということでしょうか。

wine のマニュアルを見て、次のように COM1 を追加してみました。
$ ln -s /dev/ttyUSB0 ~/.wine/dosdevices/com1

また、COM ポートの話とは別に、FPL.INI をシステムフォルダにコピーする必要もあるようです。
$ cp FPL.ini ~/.wine/drive_c/windows

再度 FPL を起動してみますが、相変わらず Device Setup で COM ポートの設定ができません。Interface 5月号の「開発ツールのインストールと使い方」のうち、「●仮想シリアル・ポートを設定する」に相当する部分が wine で未設定であることが原因ではないかと考えています。

現時点ではここまでです。何とか使えると楽なんですが。
今回は Interface 5月号付属の V850 基板のためのクロス開発環境の準備です。

ビルド環境はFC6で、標準のgccのバージョンは4.1.1ですので、以下のビルドには compat-gcc-34, compat-gcc-34-c++ が必要でした。

以下では /usr/local/v850 を開発環境のインストール先としています。

■binutils のビルド
$ tar jxf binutils-2.13.2.tar.bz2
$ cd binutils-2.13.2
$ mkdir objs
$ cd objs
$ CC=gcc34 CXX=g++34 ../configure --target=v850-nec-elf --prefix=/usr/local/v850
$ make
$ su
# make install

以下のビルドで必要ですので、/usr/local/v850/bin にパスを通しておきます。
$ export PATH=/usr/local/v850/bin:$PATH


■gcc, newlib のビルド
$ tar jxf gcc-3.2.3.tar.bz2
$ tar zxf newlib-1.13.0.tar.gz
$ cp -r newlib-1.13.0/newlib newlib-1.13.0/libgloss gcc-3.2.3
$ cd gcc-3.2.3
$ mkdir objs
$ cd objs
$ CC=gcc34 CXX=g++34 ../configure --target=v850-nec-elf --prefix=/usr/local/v850 --enable-languages=c,c++ --with-gnu-as --with-gnu-ld --with-newlib --with-gxx-include-dir=/usr/local/v850/v850-nec-elf/include
$ make
$ su
# make install


■gdb のビルド
$ tar jxf gdb-6.6.tar.bz2
$ cd gdb-6.6
$ mkdir objs
$ cd objs
$ ../configure --target=v850-nec-elf --prefix=/usr/local/v850
$ make
$ su
# make install


■動作確認

開発環境を構築したものの、あいにく Linux からフラッシュROMへの書き込みをどうするかが未解決なので(爆)、gdb シミュレータでの動作確認とします。

お約束の "Hello, world!" をコンパイルして実行しました。
$ /usr/local/v850/bin/v850-nec-elf-gcc hello.c
$ /usr/local/v850/bin/v850-nec-elf-run a.out
Hello, world!

無事動作しました。

気になったのが a.out のサイズ。177235バイトもありました。strip してから実機に転送する習慣が必要ですね(35328バイトになりました)。また、printf ではなく puts を使うと約半分のサイズになりました。

組み込みの場合、リッチなターゲットでなければ、標準ライブラリは極力使わない、使うとしても必要最低限にするという開発方針でないと駄目なんでしょうね。

■参考リンク
組み込み向けクロス開発環境の構築
組込み技術者向け「初めてのC言語」
前回のエントリで書いた libpcl を超漢字クロス開発環境で簡単にビルドできるように整理しました。

超漢字クロス開発環境用パッチ
成果物(ヘッダ、ライブラリ)

●ビルド方法

1. ソースを展開します。
$ tar xvf pcl-1.6.tar.gz

2. 超漢字用パッチを当てます。
$ patch -p0 < libpcl-1.6-brightv-20070513.patch

3. ビルドディレクトリに移動します。
$ libpcl-1.6/pcat

4. セットアップを行います。configure を行いますので、makefile.setup をお使いの環境に応じて書き換えておいてください(BD, --host 辺り)。
$ make -f makefile.setup

5. コンパイル、リンクを行います。
$ make

●制限・注意事項など

・テストプログラム cothread で、test2() の動作確認ができません(test1() は問題ないと思います)。そこの対策を真面目にやっても仕方がないので放置しています。
・configure の修正は手抜きです。

●まとめ

コルーチンライブラリ PCL を超漢字に移植しました。軽量な並行処理であれば、いろいろ面倒なマルチタスクにしなくてもコルーチンで十分な場合は少なくないはずです。

●謝辞

今回の移植にあたっては、
http://shinh.skr.jp/binary/pcl_ioarch_1_6.patch
を参考にさせていただきました。この場を借りてお礼申し上げます。
「Binary Hacks」#95で紹介されていたPortable Coroutine Libraryを超漢字で動かしてみました。あっさりサンプルが動いてしまったので、ちょっと拍子抜け。現在のステータスは、Makefileを使わずに手動でコンパイル・リンクしたという段階で、テストも不十分ですので、完全に移植できたかどうかは不明です。

これまでの作業を簡単にまとめておきます。
・pcl-1.6.tar.gz を展開。
・pcl.c に超漢字用のコードを追加。実質的には co_set_context() の修正だけで十分です。

ctx->cc[0].__jb[5] = (int) func;
ctx->cc[0].__jb[4] = (int) stack;

・pcl.c をコンパイル。(→ pcl.o)
・「Binary Hacks」のサンプルをコンパイル。(samle.c → sample.o)
・リンクして実行ファイル sample を作成。
・実機に転送して実行。(→ 1234 の順で表示された)

あとは、libpcl に含まれるテストプログラム(cobench, cothread)くらいは動作確認しておきたいものです。


忍者ブログ [PR]
ブログ内検索
カレンダー
10 2024/11 12
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
最新コメント
[07/07 tiffany jewelry uk]
[09/17 車載モニター・阿蘇テック]
[08/30 愛]
[06/12 シモネッタ]
[06/11 arms22]
最新トラックバック
フリーエリア
あわせて読みたい
    Firefox 2 無料ダウンロード
    バーコード
    プロフィール
    名前:
    シモネッタ
    性別:
    非公開
    カウンター
    アクセス解析