トップ 最新 追記
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|10|12|
2009|02|03|06|07|10|11|12|
2010|01|02|03|04|07|09|10|11|12|
2011|01|03|04|05|06|07|08|10|
2012|01|06|08|09|10|12|
2013|01|02|03|04|07|09|11|12|
2014|01|03|04|05|06|09|
2015|04|
2016|01|08|
ここは旧えびめもです。えびめも2に移行します(2016/12/1)

2004年08月04日

仕事

7月末日はウチの会社の決算でした。慣れてきたとはいえ面倒な作業です。全ての伝票を整理し、真新しいファイルをおろして気分は正月です。弊社も6期目に入りました。お取引頂いている方、知り合い、友人、身近な人、本当に皆様のおかげさまです。心からお世話になっていますと感謝の気持ちで一杯です。今年も精一杯努力し、ご期待に沿えるよう努力申し上げます。

今年は税金をあまり払わずに済みそうなので(苦笑)、そういう心配をしなくて済みそうなのですが(A^^;;

仕事

今月の原稿の締め切りは
8/20
8/25
の2本あったりします(同じ出版社)。えぇ分かってますよ。分かってますって。お盆にやればいいんでしょー(苦笑)。ご先祖様孝行できてないなぁ。今年は田舎に帰ってお墓の朝参りに参加したかったなー(8/13金にマノリートのライブがある時点で既に不可能なんだが)。

サルサ

ペアのサルサを踊るとき、皆はどこを見てるんだろう?もちろん、即答で「相手を見てるに決まってるじゃない」と答えられる人はかっこいい。僕は相手の女性を見てるとどうも照れる。だからずっとは見ていられない。トメるとき、タメるとき、そんなときに踊っていただいている女性と目があって、わずか0.1秒の、時間が瞬間止まったような感覚、亜空間にワープした感覚をもらえるときがある(アルコールの力を借りるとなおさら)。けれど、その7-8カウントの瞬間が過ぎ、次の1のカウントがやってくると、また体がエルココのフロアに戻ってきてついつい照れてしまうから左に目をそらしてしまう。僕は左を見る癖があるみたい。サルサはクロスボディーで女性を左にリードする動きが多いので、左の行き先にスペースがあるか常に気にしている。だから、左に目をそらしてしまう癖がついてしまってるのかもしれないな。

ひょっとしたら、男性は相手への視線には気を配らないのかもしれないけれど、女性は本当に視線に気を配っているね。初心者のうちは無理だけど、少し踊れるようになった女性達は、スタイリングよりも先に男性に視線をくれるようになる。あ、とあるサル友の女性が言っていたのを思い出した。

Yちゃんの笑顔は天使の笑顔。私の笑顔は悪魔の笑顔
そのときは大爆笑させてもらったけど、そんなことないよ、あなたの笑顔も素敵な笑顔です。また今週も踊ってください。

男性のサルセーロは、女性たちほど視線や笑顔に気を配れるのだろうか?いやいや、故意に気を配るのは逆にかっこ悪いしcoolではないかもしれないけど、ワザに走らないラティーノ達は、ずっと相手を見て踊っているよな。視線で口説く日本人男性もいるけど(笑)僕はキャラクター的にそういうのがニガテというか"無理"なので、ついつい笑いに走ってしまいそうになる。けれど、そっぽを向いているよりか、何か二人の空間が作れるような、そんなダンスを作って行きたいと思ってみたりした。まだまだ精進が必要なようだ。


2004年08月05日

今日の言葉

人生とは、経験と失敗に応用を加えたものだ
                                       by 知人
なるほど。そのとおりですね。

2004年08月06日

素晴らしきハッカー

kinnekoさめの日記より。
http://www.shiro.dreamhost.com/scheme/trans/gh-j.html
確かになぁ。Javaが好きだという趣味プログラマは聞いたことがない。

素晴らしきサッカー

某月某日。名古屋グランパス対セリエAレッジーナのチケットをもらったので見に行った。

親善試合ということもあって、まったりとしたペースの試合でしたが面白かったです。ありがとうmasato君。

座ったのはグランパス側の自由席でした。こんな感じでサポーターものんびりとした観戦でした。
サッカーの観戦なんて小学生の頃にオヤジにJFL(だったのかな?)を見に連れて行ってもらって以来でしたが、90分ってあっという間なのだなという感じでした。結果は1-1のドローでした。楽しかったです。

2004年08月07日

サルサ

土曜日のエルココです。今日はyayoiちゃんの二十歳(?)の誕生日でした。

ちなみにyayoiちゃんはヒゲのおっちゃんの事じゃありません(笑)


最初はテレてhappy birthday salsaやだ〜っと言っていた彼女でしたが仲間の皆が祝ってくれたよ。おめでとう(^-^)

2004年08月08日

サルサ

昨夜ちょこっと書いたんだけど消しとこ(;^_^A

ちと燃えつき気味と書いた...


2004年08月09日

えびwiki

ひっそりとえびwiki開設。wikiに慣れると、もうホームページ作成ソフトで書いてFTPアップロードなんて使う気がしなくなってきた。自分のホームページっくらいwikiとcssのカスタマイズで十分。

仕事

とある組み込み系のお仕事で xfree86-4.2をいじっている。xc/config/cf/host.def をいじってmake Worldの繰り返し。クロスだとコンパイラがまだ怪しいのでセルフでコンパイルしているがやっぱり時間がかかるもんですね。実機で4時間くらいかな。

サルサ

先月から燃え尽き症候群。。。になりかけてた。ここ数週間いろいろ考えてみたり、人と話をしていて少し気が楽になってきた。燃え尽きからも脱出できそうだ。意外とトンネルは短かったかもしれない(笑)。

俺は自分の踊りには全く満足できていない。嫌になるくらい。やっぱり何か中途半端で欠けている。何が欠けているか、それがわからないからあせり、未達成感で楽しみが失せ、サルサを楽しめなくなっていた。自分の立ち居振る舞いが嫌いで、踊ること全体が楽しくなくなってきていた。エルココ行かなきゃという義務感すら前面に出ていた。

何を満足していないのだろう。何を目指しているんだろう。カッコよく踊りたいのか?本当は違うんだ。俺はカッコよく踊りたいなんて思っていなかった。酒場としてエルココを愛し、楽しくすごすことが目的だったんだ。過去の自分日記を読んでも分かるけど、音楽と酒と会話を楽しむことが第一だったはずだ。それがいつの間にか、上達することに意地になり((その理由は複雑だ))上達できず満足できないイライラにつながってしまっていた。

自分はカッコよく踊るキャラじゃないし、カッコよく踊ったからといって格好いいわけじゃない。ちなみに、もとから格好いい人はカッコよく踊らなくても格好いいというのは事実だ。『俺はダンスはうまくないよ』とか言っているのがカッコいいと思うんだがな。でもそういう人にはなれないから(A^^;;置いといて、俺は格好よくなりたいから、カッコよく踊れるよう上達を目指し、格好よくなりたいとか思ってしまっていた。う〜ん。

そして全然満足できない。『馬鹿げている』『滑稽なやつだ』『アホくさい』と考えることで逃げ道を作った。はっきりいって逃げだ。たいして努力もしていないクセに上達できない自分に対する失望感から、いろいろなことのせいにしてしまっていた。「これ以上は才能がないから無理だよ」「努力することがカッコ悪いだけじゃん」と逃げ道を作り、あげくに「つまんないな」と投げやりな気持ちになって、楽な道に逃げていたんだと思う。

「何を目指しているの?」と人に聞かれて自答してから、以前の自分に戻ってきた。ペアダンスというのはね、相手とのダンスを楽しむものじゃないか。自分一人で努力してカッコよく踊れるようになったとしたって、それで満足してたらナルシストじゃないかと。そしていい意味で諦めてしまって発想を変えることが何より大事だ。『急には無理だよ』と。

これからも上達を目指そう。でもサルサは競技ダンスとは違う。見た目カッコよく踊ることは重要じゃない。大切なのは相手との踊りを楽しむこと。十人十通り。それから初心者からすげ〜ダンサーまで、いろいろな人と踊れるようになることだったはずじゃんか。努力の方向を、とにかく楽しむという方向に変えていって、相手とのダンスを楽しむために何を学ぶべきかなという発想に変えてみようと思う。そうしたら、なんだか楽しくなってきて、ふさいでいた気持ちも明るくなってきた。((まぁほとんどは、俺に『何いってんのアホちゃう』とガツンと言ってくれた人と、気分転換のきっかけを作ってくれた人のおかげだけど。thankyou))

サルサ

あと、ダンスパートナーということについて意見を求められましたが、そのうちにおいら的な考えを書くかも。

サルサ

そういえば、いつどこで誰だったか忘れちゃいましたが、この日記を見てくれている人から
エロジジィ
と呼んでいただきましたがエロジジィはマジで勘弁してください。せめてエロオヤジにしてください。てか、俺はエロオヤジちゃうって言ってんじゃん。違うんだってば。

2004年08月10日

linux

telnetで接続できないなぁと思っていたら /dev/ptypが無かった。
crw-rw-rw-    1 root     root       2,   0 Aug 11 04:26 ptyp0
crw-r--r--    1 root     root       2,   1 Aug 11 04:26 ptyp1
crw-r--r--    1 root     root       2,   2 Aug 11 04:26 ptyp2
crw-r--r--    1 root     root       2,   3 Aug 11 04:26 ptyp3
crw-r--r--    1 root     root       2,   4 Aug 11 04:26 ptyp4
を作って解決。

仕事

セルフコンパイルも4時間ならまだ待てる範囲だ。しかし3日となると・・・待ってられん。libqt3のセルフビルドが何日かかるかわからんので苦労してクロスコンパイルができるようにしたが、qtのビルドってuicとかmocとかqmakeつくって動かすのでクロスじゃ動かんかった(涙)
/bin/sh: line 1: /home/root/build/qt-copy-3.0.3-20020329/bin/qmake: cannot execute binary file
あえなく玉砕(qmakeがクロスターゲットバイナリーなので)

仕事

さてクロスコンパイラを働かせてあとはコンピュータに仕事させて帰ろうか。。とおもった矢先に落ちやがった。
kernel/qapplication_x11.cpp:95: GL/glx.h: No such file or directory
kernel/qapplication_x11.cpp: In function `void qt_init_internal(int *, char **, _XDisplay *, long unsigned in
t, long unsigned int)':
kernel/qapplication_x11.cpp:1688: `GLX_USE_GL' undeclared (first use this function)
kernel/qapplication_x11.cpp:1688: (Each undeclared identifier is reported only once
kernel/qapplication_x11.cpp:1688: for each function it appears in.)
kernel/qapplication_x11.cpp:1688: implicit declaration of function `int glXGetConfig(...)'
make[2]: *** [.obj/release-mt/qapplication_x11.o] Error 1
make[2]: Leaving directory `/boss/home/ebihara/project/nrlinux/build/qt-copy-3.0.3-20020329/src'
make[1]: *** [sub-src] Error 2
make[1]: Leaving directory `/boss/home/ebihara/project/nrlinux/build/qt-copy-3.0.3-20020329'
make: *** [thread-stamp] Error 2
 
real    124m30.386s
user    83m28.720s
sys     38m31.700s
2時間まってこれか。がっかりだ。つまらんミスなので速攻修正し、再度処理をかける。さて帰って寝ようっと。

2004年08月11日

Linux

先日linuxのドライバを書くときの注意点を書きました。これについてご質問のメールを頂戴いたしましたので自分の理解の助けも含めて、まとめを書いてみることにします。たまには頭を整理するために最新のカーネルを見てみるのも大切です。昔見たコードと今のコードはずいぶんと違っていますし。さて、今回のデータモデルは前回と同じですが
割り込みルーチンが受信データを受信バッファに格納し、
ユーザープロセスが受信バッファからデータを取り出す。
という流れとします。まず先日の話を読んでください。

割り込みルーチンの記述は略しますがユーザープロセスの流れは以下のようになります。ドライバのread()メソッドの中で

if( input_point == output_point){                // もしバッファにデータが無ければ
        // here is クリティカルセッション
        interruptible_sleep_on(&Q);              // データ到着まで待ち列Qでsleep
}
read_from_buffer(&buf);                          // データをバッファから取り出す。
プロセスはデータが無ければデータの到着までsleepに入るのが普通です。割り込みルーチンはデータをバッファに格納してwakeupします。ちなみにuITRON4のwup_tskと違ってLinuxのwakeupは、sleepしていなかった場合は空振りするだけです。ですからなにも考えずに常にwakeupを記述して問題ありません。

さて先日お話しましたように 『here is クリティカルセッション』の箇所がレースコンディションになります。
if文でデータが無い事を確認し { カッコの中に進んだところでデータが到着し、割り込み処理を行ったとします。そこでのwakeupは空振りに終わります。そして既にデータは到着しているにもかかわらず sleep に入ってしまい、起こされなくなります。下手をするとデッドロックが起きます。通常は次のデータの到着で割り込みが入り、sleepから起きますが、例えばキーボードデバイスだったとするなら、ユーザーがAと押したときに無反応で、あれ?と思ってBを押したときに連続してABと2文字入力されるといった不具合が発生します。よくないですね。

これの対応ですが、一番簡単に思いつくのは割り込みをとめてしまうことしょう。

cli();						 // 割り込み禁止
if( input_point == output_point){                // もしバッファにデータが無ければ
        sti();                                   // 割り込み許可
        // here is クリティカルセッション
        interruptible_sleep_on(&Q);              // データ到着まで待ち列Qでsleep
}else{
        sti();                                   // 割り込み許可
}
read_from_buffer(&buf);                          // データをバッファから取り出す。
しかしこれでは対策したことになりません。sti()によって割り込み許可されたときに、保留されていた割り込みが実行されるので最初の例と比べて何の対策にもなっていません。それにドライバでcli()割禁を使うのはお行儀がよくありません。

ではsti()をとったら何が起こるでしょうか?つまり割り込み禁止(cpuロック状態)で sleep に入ってみます。常識的に考えると、cpuロックの状態でsleepに入ったら起してくれる人が居ないのでデッドロックになりますよね。で、

論よりRUN
ということで実験してみると・・・
cli();                                           // 割り込み禁止
if( input_point == output_point){                // もしバッファにデータが無ければ
        interruptible_sleep_on(&Q);              // cpuロックのままsleepしてみる
}
read_from_buffer(&buf);                          // データをバッファから取り出す。
先ほどこれを実験してみましたが、意外なことに?今のバージョンのlinuxでは特に問題が起きませんでした。将来はどうなるかわかりませんし、cpuロック状態でsleepするなんて、OS的にお行儀がよくないに変わりありませんが、意外なことに大丈夫でした。じゃ、どーしてかなということで、linux-2.4.24のinterruptible_sleep_on()関数のソースを見てみます。実際には多数のマクロが組み合わさっていますが読みやすいように展開しました。
void interruptible_sleep_on(qwait_queue_head_t *q)
{
        unsigned long flags;
        wait_queue_t wait;
 
        init_waitqueue_entry(&wait, current);
        current->state = TASK_INTERRUPTIBLE;  //タスク状態をsleepということにする
                                              //寝に入るつもりだが実際にはまだ寝てない
        __add_wait_queue(q, &wait);           //自プロセスをウェイトキューにつなぐ
        schedule();                           //スケジューラを呼び出してsleepする
        __remove_wait_queue(q, &wait);        //自プロセスをウェイトキューから外す
}
説明はほとんどコメントに書きました。
current->state = TASK_INTERRUPTIBLE は自プロセスを休眠にする"つもり" を意味しています。マルチタスクOSにおいて、sleepの正体は何かというと、『他のプロセスにCPUを譲ること』ですから、実際にsleepに入るのはいつかというと、schedule() を呼び出し他のプロセスにCPUを譲って、結果として自プロセスはsleepになったということになります。

ではさらに奥の schedule() 関数を 割り込み禁止状態で呼び出したとして、見ていきます。

asmlinkage void schedule(void)
{
        struct schedule_data * sched_data;
        struct task_struct *prev, *next, *p;
        struct list_head *tmp;
        int this_cpu, c;
 
        prev = current;
        this_cpu = prev->processor;
 
        if (unlikely(in_interrupt())) {
                printk("Scheduling in interrupt\n");
                BUG();
        }
 
        release_kernel_lock(prev, this_cpu);
release_kernel_lock()関数は、以下のようなマクロです。
#define release_kernel_lock(task, cpu) \
do { \
        if (task->lock_depth >= 0) \
                spin_unlock(&kernel_flag); \
        release_irqlock(cpu); \
        __sti(); \
} while (0)
おや、ここで sti()が実行されました。すなわち、schedule() 関数はそこまでの割り込みモードがどうなっているかに関係なく、割り込み許可モードに移行するのだということが分かります。(そりゃーディスパッチャですしね)これでデッドロックが起こらない理由は分かりました。

さて、このsti()が実行されたタイミングで保留されていた割り込みが実行されたらどうなるか考えて見ます。思い出してください。自プロセスはまだ実行中ですが current->state = TASK_INTERRUPTIBLE すなわち sleep になっていますし、しかも自プロセスをウェイトキュー(待ち列)につなぐ処理までは完了しています。ここで割り込みルーチンが呼ばれて wakeup が実行されます。wakeupは待つ列ににつながっているプロセスを全て TASK_RUNNNINGの状態に戻します(待ち列からは外しません)。ということで割り込みルーチンが終わって戻ってきたときには TASK_RUNNINGの状態になっています。そして schedule()関数のさらに先へと進みます。schedule()関数内部では、他のプロセスへのディスパッチが起こるかもしれませんが、自プロセスはTASK_RUNNINGですから他のランニングプロセスを一周して自分のところにも帰ってきます。そして schedule()関数を抜けます。続いての処理は見てのとおりで待ち列から自分を外し、復帰します。問題となる点は見当たりませんでした。

以上のポイントを整理すると、

1. if文で寝るか寝ないかの条件判断
    ↓
2. TASK_INTERRUPTIBLEにする
    ↓
3. 待ち列につなぐ
    ↓
4. schedule()を呼び出す
この区間がクリティカルセッションということになり、割り込みルーチンに割り込まれたら困る区間ということになります。今回の例のようにcli()で割り込み禁止にしてしまうのも方法でしょう。しかしcli()つまりcpuロックはOSにとってお行儀がよくありません。cpuロックはプリエンプションを阻害し、タスクディスパッチのレイテンシが増してしまう結果になります。といっても実際には現状のlinux-2.4カーネルは、カーネル空間走行中は非プリエンプティブですけどね。これは逆説的ですが、ドライバでcli()〜sti()。正しくは save_and_cli()〜restore_flags()で割り込み制御をしているドライバがあまりに多くて、linuxをリアルタイム化するのにウンザリしてしまったりするのです。

cli()を使っていれば、最初の使っていない例よりはだいぶプロっぽい書き方です。『分かっている人』に見えますし、ガツンとcpuロックするなんて

男っぽくてワイルド
かもしれませんが、ちとワイルドすぎるので、もっと洗練されてるイケメン青年実業家のような
女が惚れるような
コードを考えてみましょう。
上のフローでの、if文での寝るか寝ないかの条件判断位置を逆にしてみると
1. TASK_INTERRUPTIBLEにする  (寝るつもり。という事ね)
    ↓
2. 待ち列につなぐ
    ↓
3. if文で寝るか寝ないかの条件判断
    ↓ 4. 寝るならschedule()を呼ぶ。他のプロセスに処理が回りsleepということになる
5. 待ち列から外す
    ↓
6. TASK_RUNNINGにする
としてみるとどうなるでしょう?実はこれで問題が解決します。任意の時点で割り込みルーチンに割り込まれても大丈夫です。よーくみてください。
3.寝るか寝ないかの条件判断以前に割り込みが入ったならば、if文での結果『寝ない』という事になりますから、1.2.の処理は 5.6. の処理で後片付けされますので何も起きません。3.の条件判断直後に割り込みが入ったときは、割り込みルーチンのwakupによって、自プロセスのstateが TASK_INTERRUPTIBLE -> TASK_RUNNING に戻されます。そして schedule()に入りますので寝ません。ほら、cli()なしでも良くなりました。残念ながらトリビアと違って合コンのネタには適しませんが覚えておいて損はありません。

実際にはlinuxには上記の動作を行うためのマクロが用意されています。以下のように使います。

wait_event_interruptible(待ち列Q, 条件);
「条件が真になるまで」寝て待ちます。言い換えれば「偽のあいだ」寝て待ちます。最初のプログラムを書き換えると次のようになります。
wait_event_interruptible(Q,(input_point != output_point)); // (input_point != output_point)になるまで寝る
read_from_buffer(&buf);                                    // データをバッファから取り出す。
この辺は結構高度な話題で上記の説明だけでは理解が難しいかもしれませんが、ドライバを書くことになりましたらプロセスの動きは頭のなかでイメージをもっていなければなりませんね。興味をもたれた方は 08/27(金)に東京CQ出版社でセミナーをやりますので、図付き・デモ付き・踊り付き?で解説しますので来てくださいね。お一人様\13,000です(宣伝)。と書こうしましたら満席でした。あらら。SH-Linuxのセミナーもやります。
http://it.cqpub.co.jp/eSeminar/Default.asp?NV=CCM&CI=E01-0029
こっちではここまで高度な話をする時間は無いかなと思います。(踊りは冗談ですけど)

2004年08月12日

I/Oハックのオフ会

http://utage.org/enkai/menu.cgi?ENKAI_CODE=iohack20040826
8/26日。I/Oハックmlのオフ会の酒のネタかぁ何か仕込まなかんな。皆さんのネタも楽しみ〜(^-^)

仕事

この仕事 やっと終わった。(*_*)
real    1591m55.643s
user    1409m33.860s
sys     148m44.480s
libqt3のビルドに1591分かかりました。26時間31分55秒です。

Cygwin

Cygwinも捨てたもんじゃない。WindowsXPにCygwinをインストールして、telnetd を動くようにした。
http://www.sea-bird.org/doc/Cygwin_inetd/cygwin_inetd.html
これで TeraTerm で localhost に telnet ログインできるようになった。うおぉぉぉ最強だ!!。Windowsにログインしたら自動的にコンソールが出ていてほしいくらいだ。

さらに、/usr/local/bin に、各種Windowsソフトへのショートカットを置くとWindowsの使い勝手が256%っくらい向上した!!
 $ word &
でワードが立ち上がる(^-^)いちいちSTARTメニューから【ワード】なんて探したくないし、word と打つなら0.3秒だ。やっぱり男はコンソールだぜぇ。それにしてもこれでクロスコンパイラまで導入できたらLinux機が要らなくなる(汗

CAT709

というわけで、Cygwin上でSH3クロスコンパイル環境を整えるというページを書きました。


2004年08月13日

サルサ

elcocoにTV撮影隊が来た。お店の取材というか撮影のために使った感じに近かったけど。。おいらはエキストラのお手伝い。

写真がブレてしまっているが、セインカミュさんとmiho先生。

付け髭を取ってから写真とってもらえばよかったですね(A^o^;; CBCテレビで9月に放送されるそうです。K君がカッコよく写ってると思います。おいらは少しでてるかな程度。

2004年08月15日

仕事

toppersのコンパイルができなくなった。おかしい。昔は通ったのに環境が変わってしまったか。。。。SH CPUのハードウェアの実験をするのに必要なんだけど。。。他の方法を考えよう。


2004年08月17日

gcc

昔のCコンパイラはC言語ソースのアセンブラ出力に、アンダースコア _ を前につけていたが、最近のgccは付けない。
void sub(){
}
int test(){
        sub();
}
を普通にコンパイルすると
00000000 <sub>:
   0:   55                      push   %ebp
   1:   89 e5                   mov    %esp,%ebp
   3:   5d                      pop    %ebp
   4:   c3                      ret
   5:   8d 76 00                lea    0x0(%esi),%esi
00000008 <test>:
   8:   55                      push   %ebp
   9:   89 e5                   mov    %esp,%ebp
   b:   83 ec 08                sub    $0x8,%esp
   e:   c9                      leave
   f:   e9 fc ff ff ff          jmp    10 <test+0x8>
オプション -fleading-underscore をつけるとアンダースコア付きになる。古いアセンブラーソースとのリンクをするときに使う。-fleading-underscore をつけてコンパイルした結果
00000000 <_sub>:
   0:   55                      push   %ebp
   1:   89 e5                   mov    %esp,%ebp
   3:   5d                      pop    %ebp
   4:   c3                      ret
   5:   8d 76 00                lea    0x0(%esi),%esi
00000008 <_test>:
   8:   55                      push   %ebp
   9:   89 e5                   mov    %esp,%ebp
   b:   83 ec 08                sub    $0x8,%esp
   e:   c9                      leave
   f:   e9 fc ff ff ff          jmp    10 <_test+0x8>

CAT709

toppers jsp のコンパイルと動作確認ができた。やっと1年前に戻れた。
結論からすると、sh3-linux-gccは使えなかった。上記のように--taget=sh3-linuxでconfigureされているgccはアセンブラ出力のときにシンボル名に_アンダースコアはつけない。ところがjspは古いコンパイラを意識してアセンブラシンボルに_が付いている。だからといって sh3-linux-gcc -fleading-underscore でコンパイルすると今度はlibgccの数値演算ライブラリとリンクでできなくなる。結局libgccを再構築するくらいならnewlib仕様にしたsh-hitachi-gccを作ったほうが正しいと思ったわけで、gcc-3.0.4は同じながらconfigureを変えて --terget=sh-hitachi-elf でツールチェインを作り直した。
http://www.ebimemo.net/wiki/index.php?TOPPERS
とりあえず 自分用のえびwikiに置いたけど、見やすくしたらcat709wikiに引越しさせるつもり。

2004年08月20日

本屋で目が引かれたので、つい買ってみた。
よくわかる最新単位の基礎と仕組み

単位というのは文化と歴史そのものとも言えますね。日本は92年にSI単位系に移行し、私共の年代では天気予報で気圧をミリバールからヘクトパスカルと言い換えたときに違和感を覚えた?感覚があると思いますが、アメリカは未だにSI単位系に移行してない国だよなぁとか思ったりします。ところで、10年くらい前からず〜っと1気圧が何mmHgだったか記憶があいまいで気になっていましたが、1気圧(atm) = 760.002mmHg = 1013.25hPa だということがわかったのでやっと落ち着きました。
bookoffにいけば100円で売ってそうな本ですけど(A^^;; 理系野郎なら理科年表、JISネジ、標準ロジックIC・トランジスタ規格表と共に単位変換表くらいは本棚に置いといて損はないでしょう。とかいってるうちに、単位変換の便利ページを見つけました。
http://www5a.biglobe.ne.jp/~uchimura/uconv/menu-j.st.html

2004年08月24日

サルサ

先週の土曜日は仕事が気になってか『サルサ魂』に火がつかず人の踊りを楽しく見ていた。学生の人たちが沢山来ていて、普段みかけない彼ら彼女らの踊りを見ていた。音楽を楽しみ、酒を楽しみ、カウンターからダンサー達の踊りを見ているのはとても楽しい。踊らなくとも、フロアを・空間を・時間を共有している感覚が楽しい。自分があまり踊らなかったからこそ、彼ら彼女らが楽しく踊っている様子を見ることができて、幸せな気持ちになれた。俺が踊る気満々だったら混んでるなぁくらいに思ったかもしれない。だから、タイミングがちょうど良かったのだろう。踊らなくてもelcocoは楽しいなぁ。


2004年08月25日

サルサ

salsa maxで人気のyukiちゃんがblogをはじめたらしいです。
http://blog.livedoor.jp/salsa_yuki/
がんばってください(^-^)

仕事

今夜から東京入り。木金とCQ出版社のセミナー講師です。それからCQ出版社の原稿締め切りが本日25日と9/1というCQ漬けの日々です。(仕事を溜める自分が悪い(A^-^;;;。ぐはぁ)
本日25日にInterfece10月号が発売されます。今月号にもOCERAというリアルタイムlinuxの紹介記事を書いています。今月はUSBの特集だし、付録はコネクタ便利帳(超便利!!)なので書店にお寄りの際は是非購入していただきたく(^-^)皆様よろしくお願いいたします。

そーかー、USB特集かぁ。これでCAT709でSL811やらない理由が無くなってしまった。(A^^;;

仕事

てな感じで最終ちょい前ののぞみに飛び乗って上京。恐れていたがやっぱり名駅の売店は店じまいモードで弁当げっとできず(-x-)ビール一本でひもじい思いをしながら東京に着き、宿に着いたら0時頃だった。荷物を置いて新幹線車中で書き溜めたメールを送信してから神田界隈のラーメン屋に繰り出す。いっつも寄っている店があるので顔を出しておく。六本木のcaribeは平日でも盛り上がってるかなとか思いつつ、今回の出張はsalsaは無しだな。

ホテルで

NHK BS1を流していたら、オリンピックのKEIRINをやっていた。「30歳以上の方はご存知かと思いますが、昔ローラーボールという映画がありました。あの映画もこんな感じでしたねぇ」と話をしていた。いいのかNHK!! ローラーボール見たことない人が 見てみよ〜 とか思ったらどーすんねん。(苦笑)


2004年08月26日

仕事

SH-Linuxセミナー講師。あまり笑いが取れなかった。まだまだ精進が足りない。(違)

io hackオフ会

今回も秋葉原のprontoでio hackのオフ会 が開催された。たぶん第3回目だとおもう。前回僕が参加したのは2003/2/4だったから、およそ1年半ぶりの再会だ。

おーっと怪しい集団発見!!すぐに分かる(^^)。今回も皆さん
ネタ披露
ということで怪しげなアイテムがちらほら。

prontoにはPCとビールが似合う。にぎやかにhacking談義が花咲く。

さすがiohackである。コンセントタップとドライバーは当然のように持参だ。とあるブツ(内緒)の開発の話で『これは
AKI80にS-OSを移植して
開発したんですよ』うおおお!いきなりのハイテンションが俺のハートを揺さぶる。

↑これは みかかMEのliving gate i。sh7709a搭載ということで当然ながら本来の使い方はしておらず
無線LANでシェルログイン可能
になっていた。さすがiohackである。これが心底欲しいと思った人は
東京ではココいるひとで全部
かもしれない。今この瞬間、この店がテロ攻撃にあったらしたらiohackは全滅だ。

自作OS作ったんですよ
という声に一同いろめきたつ。うおおすげぇ。FDからブートして最初からいきなり日本語表示だ。仮想メモリとタイマー割り込み、コンテキスト管理の基本プラットフォームができてる。なぜいまさら自作OSつくるんだ?なんて質問は愚問だ。きいてみればいい。きっと答えはこうだ。
そこにPCがあるから
別な机ではAVR 2313を使ったキット怪しげな登場。手に取ったhosobuchiさんが開口一番。あ、これはOLIMEXだな〜
ブルガリアの光沢だ

振り返りざまに目の前に差し出された携帯電話

!!!!!!!

一瞬血圧が180まで上昇
したのがわかった(だがしかし2秒で元に戻った。笑)。こういうネタも大好き。
そして極めつけが "人形遣い" うぃっちさん。満を持して登場

ロボワンのリングに立ったことがあるという"人形"

みな興味深々だ。
動画(8.6MByte)
すげ〜。ロボの実物初めて見た。
夜カフェ
でサーボの音をうならせながらムービングするその勇士は皆の感動を呼び起こさずにはいられなかった。いつの日か最強戦士になっていただきたい。俺にはできないから、応援したい気持ちでいっぱいだ。
かなり重量があるし
ベビーカーに乗せてくれば
という発言もあったが、「かわいぃ赤ちゃん」と覗き込んだそこに
ロボ
が座ってたらどぅかなぁという気もする。

いやぁ楽しかった。みんなパワフルだ〜とエネルギーをもらいました。おいらの1bitエンターテイメントもやっと人に見せれたし、皆さんのネタも充実していたし。六本木にsalsa踊りにいくよか充実した夜でした。地方で地味にやっていると落ち込んだりモチベーションが下がったりしますが、今夜は良い刺激を受けました。(若い人たち・・・の集まりじゃないんですけど不思議と若さを感じました。)

また次回もやりたいです。半年くらいでネタ仕込んどきます。

いちょう

酔い覚ましもかね秋葉原から神保町まで散歩しながら帰った。夏の終わりの風が吹き、気持ちの良い夜だ。

都会の路地には社会を支えるエネルギーが見える。隣の路地も、その隣の路地も、入って歩いてみたくなる。0時を過ぎているというのに、事務所の窓から明かりが漏れている。見上げれば坂の上の、はるか天井までそびえたつ東京ドームホテル。巨大なH社本社ビル。その坂の下に小さく居を構えるおそらく出版関係の会社かな。夜中までご苦労様です。北は壁面でさえぎられているけれど、南には広い空が見えるよ。神田神保町。漱石が100年前に歩いた時代から、変わらずずっと本の町だ。いや、もちろん変わってはいるんだろう。

ふとした通りの角に、小さなbarやcafeを見かける。以前はこんなに店があったっけ。高校生の頃は単に気が付かなかっただけかもしれない。神保町、小川町、懐かしいなぁ。天気が良い日曜に、水道橋から坂を降り、古本屋を巡り、楽器をさわり、スポーツ屋をぶらぶらして、ファストフードを片手に日比谷公園まで歩くのが、俺の定番コースだった。

東京に来るといつもいちょうが目に付く。

人工の太陽が、夏の夜もさんさんと降り注ぐ。そうか、東京の木はいちょうだったっけ。

色つく季節にはきっと黄金色の美しい並木道になるに違いない。酔い覚ましをしたせいで、体がアルコール不足を訴えてきた。アルコールを給油しながら明日の仕事に備えよう。明日は明日で盛りだくさんなはずだ。


2004年08月30日

F1

ベルギーGP。ラストの10周見ごたえがあったぁぁ。ライコネン・シューマッハ・モントーヤ・バリチェロ。去年の秋の優勝争いの再燃のようだった。もう今年のワールドチャンピオンはレース前から決まったようなものだけど、ベルギー・スパサーキットで一番早い男は誰なのかを決める戦いだ。久しぶりに面白いGPだった。

強いシルバーアローが久しぶりに復活。クリエンもいかしてたなぁ。ゾンタは可哀想だった(;_;)。上位陣はともかくザウバーが3,4位(間違いでした。4位5位)というのもナイス。すごいねぇ。

CAT709

ブートローダーに mot ファイル受信機能を追加したい。
motファイルの仕様 http://www002.upp.so-net.ne.jp/janus/romfile.html
objcopy で
sh3-linux-objcopy -S -R .data -R .stack -R .bss -R .comment \
        -O srec sh-stub.exe sh-stub.mot
とやってみて出力されるのは
S00E000073682D737475622E6D6F74AD
S3158000000018D0026D18D119D002210FD00B400900EB
:
S315800076340000000000004743433A2028474E55295E
S30C8000764420332E302E3300A7
S705800000007A
なので、S0,S3,S7に対応させれば良さそう。(追加。パターンによってはS2の場合もあった)
S0 bb aaaa 73616D706C652020202020 cc
S2 bb aaaaaa xxxxxxxxxxxxxxxxxxxxxx cc
S3 bb aaaaaaaa xxxxxxxxxxxxxxxxxxxxxx cc
S7 05 aaaaaaaa cc
bbはバイトカウント。aaaaaaaaはアドレス。ccはチェックサム
zImageのサイズが895,212バイトで、これを
objcopy -O srec -I binary --adjust-vma=0x20000 zImage zImage.mot
としたら2,573,784byteになった。約2.8倍。115200bpsで送信すると3分43秒。.motにするのは無駄かなぁ。まぁそんなもんかなぁ。rootfs.imgをmotにすると16,203,842byte。115200bpsで送信すると 23分26秒。待てない範囲ではないか。。。

サルサ

某月某日。エルココに再び名古屋某局のTV取材班が訪問しました。

おいらはTV取材班を取材。9月に放送されるそうです。先日のと合わせての放送かな。おそらく放送時間なんて数分なんでしょうけど、その数分間のために事前の取材と合わせて述べで4時間はロケしていると思います。大変なお仕事です。

こちらはクラブで大人の雰囲気を漂わせるhirokoさん。どんなスタイルでも気持ちのいいフォローをしてくれます(^-^)

サルサ

某月某日。某所でサルサパーティ開かれる。(プライバシーを考慮して顔の写っていない写真を使いました...)

いい雰囲気のパーティーでした。

ご飯もおいしかったです(-^^-)

2004年08月31日

台風

台風16号が日本海を進んでいる。とんでもない強風だ。ぐぉぉぉという風の音が、空から聞こえてくる。

FGが浮いてるのかな

とある組込み機器の開発をしていて、パソコンと試作機をつなぐケーブルを触るたびに
ビリビリと感電する
のである。うーむ。この感電の
痛さ加減
からすると、たぶん50Vっくらいなんだろうな(大して痛くなかったから)。トランスのセンタータップの切り方がおかしいのかなとか思いながらテスターで両機器間のFGの電位差を測ってみたら

ACで約100V出てた。しかし100V交流が腕を流れたときの、筋肉が揺さぶられるようなあの独特な
低周波なビリビリ感
は感じられなかったので漏電しているわけではないみたい。両端子を触った瞬間のみビリっ(正確にはピリっくらい)ときて、瞬間的に電位差が無くなるようだ。FGが浮いちゃっててトランスから誘導を受けて小規模な電位差が発生しているのだと思う。実際FGをつないだ瞬間に小さな火花が散るだけ(?)なんだけどさ。おそらくFGとSGはDC結合だろうから電気的にはGndが揺さぶられるノイズが出るだろう。
よくあることだけどさぁ。困ったもんだ。痛いし。十中八九パソコン側の電源がおかしいのだろう。アースは必要なんだね。