ラベル マイ・プロジェクト の投稿を表示しています。 すべての投稿を表示
ラベル マイ・プロジェクト の投稿を表示しています。 すべての投稿を表示

2011年2月26日土曜日

qemuでデバッグするよ〜第1回 〜まずは環境を準備する〜

まったく開発の進まないLua-TRON・・・
なんでなんでしょうか(´・ω・`)ションボリ
きっと動かしてデバッグする環境がないからいけないんだ!!
とか思ったので今日はqemuを使って動作環境を立ち上げてみる。
tachama氏からbeagleboard借りてる状態であることはこの際考えないことにする。

と言っても、この前金の蔵もくもく会の時にmaster_q氏に教えてもらったことの復習。
ホスト環境はMacbook Air。もちろんMacOSXだ。
某探検隊のようにMac使ってるのにMacOSXじゃない人達とは一線を画している(´・ω・`)
いたってノーマルなマカーだ。
マカーがノーマルじゃないなんて批判は受け付けない。

まずはインストール
とりあえず、qemuをインストールする。
ソースはwiki.qemu.orgから取得する。
2011/02/26時点での最新は、0.14.0。
パッチは知らん。
ソースを入手したらおもむろに展開して configure & コンパイル。
おっと、configureするときはtargetの指定を忘れてはいけない。
じゃないとエラい時間をとられることになる。必要なターゲットだけコンパイルすればえ〜んだ。
自分が指定したのは、--target-list=arm-softmmu 。
これだけあったらいいんだぜ、まる。
本当はSDLオプションも付けたかったけど、何故か今回はうまくいかなかったからはずした。
次はmakeして、あとは何も起こらないことを祈るばかりだ。
インストールの項目だけどインストールは必要ない。
arm-softmmuというディレクトリに、qemu-system-arm というのができている。
これがARMエミュレーションをするqemuだどん。
こいつをそのまま叩けばqemuが起動する。

次はデバッグ用の環境準備。
必要なgdbはどこぞからパクってくるヨロシ(´・ω・`)
今回はtoolchain系は全部devkit様から拝借している。Lua-TRON開発環境に認定!!
devkitがあればDSソフトもPSPソフトも作れちゃう!!何度でも美味しい!!
devkitのサイトからリンクが辿れなかったのでsourceforgeから落とす。
とりあえずはdevkitARMがあれば無問題。
だが、片っ端から落とすのがあるべきWEB乞食の姿なので、理想を求めて全部落とす。
devkitのインストールは簡単、落として来たファイルを適当なディレクトリに展開してパスを通せばおしまい。
で、環境ができた。

さてデバッグ確認。
./qemu -S -gdb tcp::12345 -kernel targetimage

とかする。
-S は起動直後にqemuを停止させるオプション。・・・らしい。
-gdb tcb::12345 はgdbとの接続に使用するポートを12345にするというオプション。好きな数字を割り当てればおk。-Sオプションと組み合わせることで、gdbからの接続待ちで停止する。・・・らしい。
-kernel オプションは使用するターゲットバイナリの指定だ。ヘルプを見るとLinuxオプションみたいなこと書いてあるけど気にするな。俺はしない。とりあえずチャレンジすればいいんだ。ここで指定するのはどうやらelf形式のファイルのようだ。・・・ソース斜め読みした感じでは。

で、もう一つコンソールをひらいてこちらではgdbを実行する。
コマンドは以下。

./arm-eabi-gdb targetimage

ちゃんとdevkit様からツールチェインをとって来てパスを通していれば実行できるハズ。
gdbコンソールでは、

(gdb) target remote localhost:12345

ってやるとあ〜ら不思議!!
qemu上で動いているカーネルのデバッグができちゃうじゃ、あ〜りませんかぁ〜、あ〜りませんか!?

できない・・・だと(´・ω・`)
何故落ちるんだ、qemu。

という訳で次回につづく。

――――――――
今日や明日のことでは無く、もっと未来の方へ向かう。そう、明後日の方向へ!!

2011年2月16日水曜日

ARMv7アーキテクチャ リファレンス マニュアル読むよ〜第1回

前に呼んでて途中で投げたので、もう一回最初から読むよ(´・ω・`)
大事なところだけ、ここにメモっておく。
ページ番号は太字。

A2-11:
R0〜R12は自由に使える汎用レジスタ。32bit
R13〜R15は使用目的の決まっているレジスタ。32bit
R13はスタックポインタ用。別名SP。
R14はリンクレジスタ。別名LR。
R15はプログラムカウンタ。別名PC。
R15は、
ARMモードの時は実行している命令のアドレス+8
Thumbモードの時は実行している命令のアドレス+4
を指す。

A2-14:
APSRってレジスタがある。
アプリケーションプログラム ステータスレジスタらしい。
CPSRとは違うものなのか?何が違うんだ???
と思ったら同ページ最後3行に書いてあった。
”ARMv7A/RではAPSRとCPSRは同じレジスタ。でもアクセスできる情報がAPSRの方が少ない”とか。

A2-15:
実行状態レジスタ。
CPUが解釈する命令の種別を設定する。ARM命令、Thumb命令、ThumbEE命令、JAVAバイトコード。
曰く、”ARMv7A/RではCPSRレジスタの一部だぜ!!(キリッ”
ISETSTATE・・・なんなんだぜ
実行状態レジスタの設定のことみたいだけど・・・。

A2-17:
ITSTATE・・・スルー!!!
わからないと思ったところは飛ばしたっていいんだぜ。
逃げてもいいんだ、逃げてもいいんだ、逃げてもいいんだ。

A2-20:
ARMv7のVFP実装はVFPv3。
へー(棒

A2-21:
アドバンストSIMDとVFPは同じレジスタを使用する。
このレジスタは拡張機能レジスタと呼ぶ。
MMXがFPUのレジスタを使うようなもんか(´・ω・`)
ところでアドバンストSIMDって何・・・NEONのこと???

アドバンストSIMDビューでは拡張機能レジスタは、
16個の128bitレジスタまたは32個の64bitレジスタとして扱うことができる。
この2つのモードは同時に扱うことができる。

〜A2-67:
丸っとスルー!!!
だってSIMDとFPUの動作の説明だし。

A2-69:
Ahead-Of-Time(AOT)ってなんじゃらほい。

〜A2-80:
スルー!!!
JazelleとかThumbとかの説明だし。

A2-81:
ARMアーキテクチャでいう例外とは以下のものだ。
・リセット
・割込み
・メモリシステムアボート
・未定義命令
・スーパバイザコール(SVC)
浮動小数点例外とJazelle例外条件は含まれないよ。

A2-82:
Yield命令ってのがあって、マルチプロセッサとかマルチスレッド環境下では有効らしいよ。
今やってること重要じゃないんだよねーというヒンティングをCPUに対して行うものらしい。ふーん(´・ω・`)

第A2章まで超スピードでおしまい。

む〜ん、ARM自体の話があんまりでて来なかった(´・ω・`)

――――――――
今日や明日のことでは無く、もっと未来の方へ向かう。そう、明後日の方向へ!!

2011年1月16日日曜日

TRON!! TRON!! TRON!!

年初の豊富の通り、今週はちょっぴり技術方向な内容で展開。
TRONと言っても今流行の映画の話ではないのでそっちを期待していると痛い目を見ることになる。
技術の話といってもあんまり書くことがないので、現在のマイ・プロジェクトに関して内容紹介。

ソフト業界では日本は世界では遅れている。今PCや携帯電話、スマートフォンなどで使用されているソフトウェアのメジャーなもののほとんどは海外発のものだ。
PCで使用されるアプリケーションでは日本発のものもなくはないが、OSに関してはほぼ間違いなく海外製。
Windows、MacOS、Linux、BSD、などなど。
そんな中で一般の人にはあまり知られていないけど、日本発で莫大なシェアを誇るOSがある。それがTRON。
TRON は東大教授坂村健氏の考案したOS規格で、組み込み機器の世界では超メジャー。
Windowsなんて相手にならないぐらいのシェアを持ってる。

TRONの規格はさまざま定められていて、
組み込み、工業製品向けのITRON、μITRON
ビジネス機器向けのBTRON
通信機器向けのCTRON
など。
JavaVMを取り込んだJTRONなんてのもある。
昔、このTRON規格OSとして超漢字なんていうOSもあった。今でも使ってる人がいるかは知らんけど。
今TRON規格OSで頑張ってるのはTOPPERSぐらいだろうか。多分ほとんどは後継であるT-Kernelに移行したんじゃないかな。

で、ここまで前置き。
俺はこのTRON規格で新規にOSを実装するんだぁ〜!!というのが今のマイ・プロジェクト。
これまで仕事ではLinuxもBSDもVxWorksも触って来た。
趣味でもLinuxもBSDも触ってきた。どっちも大好きだ。マイクロソフトの信者でかつジョブズ様の信者でもある。まさに日本人、あれもこれもつまみ食いといった感じでやってきた。でもやっぱり日本のソフトウェアだって世界に通用するんだぜ!!ってソフトウェアを俺が実装したい。これが俺の強い思い。なのでTRON。
んでんで、今はLL全盛の時代には何かLL環境が必要だろうとの勝手な思い込みのもと、実用性とかシェアとかニーズとか一切無視して完全に趣味でLuaを搭載することにした。名付けてLua-TRON。
そこはRubyだろ、と思った方。ごもっとも!!
でもLua。Rubyは第一弾の実装が完了したら考えよう。
とりあえず今はITRON仕様書を読みつつちょっとづつ実装中。

みんなでTRONを盛り上げるんだ!!
LinuxやWindowsに取って代わってPC OSの世界を日本の手に!!

とかとか。
壮大な妄想を張り巡らしつつちょこちょこと手を動かす毎日をこれから綴っていきますという紹介ですた。

やっぱり技術の話はほとんどでてこなかったな。
まぁいいか、今回はプロジェクト紹介だし。

あ、ちなみに日本発のOSは他にないわけではなくて、OSASKとかMonaOSとかありますよ。
メジャーじゃないけど。
嘘か真かしらんけどシグマって言うタブーもあったようだし。
MonaOSとかもっと頑張ってほしかったけど、完全オリジナルで、上で動作するソフトも少ないし、サポートしてくれるバックがないのが致命的なのかなぁ〜。

今回も推敲一切しないけどこのまま投稿することにする。

――――――――
今日や明日のことでは無く、もっと未来の方へ向かう。そう、明後日の方向へ!!