昔の最近の出来事(2003.02)

2003/02/28

今日はお休み。

と言っても、約二週間家を空けたのと、月末という事などで 家賃を払ったり、物を買いに行ったり色々。

で、近所のCD屋に何故かポルノグラフティのアルバムが 入荷されていなかったので、いきなり秋葉にゴー!
CDと「ピンポン」のDVD、 そして、休みが一日しか無いから急がなきゃ!などと、冷静に 考えてみれば、それなら なおさら急ぐ必要が無い ような理由を付けて、ダイブしてみましたよ、macromedia FLASH MXに! 他、ごちゃごちゃと雑物購入して帰着。ふぅ。

で、「ピンポン」鑑賞。あぁ、もう言う事はありません。大満足です (参考)。井筒のおっさん は、窪塚洋介の演技がオーバーだとか色々言ってましたが、 全然OK、むしろ完璧! 全員がハマリ役という奇跡的な配役に 独りで感動してました。で、DVD特典のメイキングとか観たり。 やっぱCGスゴイわ。一番頭のオープニングカットとか、 最初どうやって合成しているんだろう?と思ったらなんの事は 無い、「全てCGでした」というオチにびっくりしました。

FLASH MXをインストールしてみたり。トライアル版を上書きして インストールする形になるようで、以前読み込んだファイルの 履歴など、設定関係はそのまま残っていました。折角なので、 ユーザー登録しようと、フォームに記入したのですが、トライアル版 の時は連絡先など、かなり端折って書いても通ったのですが、 今回は抜けがあると色々と文句を言ってきたり。何度も 修正して(<何故そこまでいい加減に入れるのかは置いといて(^^;) どうにか通った所、「既にE-mailアドレスが登録されています」と 出てそのままエラー終了。なんでやねん!という訳で文句メール を書いて送ってみたり。
まぁともかく、これで気がね無く作ったデータを公開できると いうもんです。50,000円分を取り戻すべく ヘボFLASHをガンガン 作りたい気分。てゆーか、50,000円に相当するヘボFLASHはむしろ 嫌かも。

そんな感じで、また明日より出張予定です。

2003/02/27

出張。帰着。ぐったり。

2003/02/26

出張。

2003/02/25

出張。

2003/02/24

出張。

2003/02/23

出張。

2003/02/22

出張。

2003/02/21

出張。

2003/02/20

出張。

2003/02/19

出張。

2003/02/18

出張。

2003/02/17

出張。

2003/02/16

出張。

2003/02/15

出張。

2003/02/14

出張。

2003/02/13

出張予定でしたが、風邪悪化のため休業。

一日中死亡。

2003/02/12

少し早めに帰着。

ぐったり気味。

タマちゃん住民票登録って一体......。しかも、勝手に苗字 まで付けられているし。これがアリなら宇宙人の住民票も アリなのかも。

そんな感じで明日から出張です。

2003/02/11

今日はお休み。夕方頃起床(<寝過ぎです)

Linuxカーネル2.4.20をppcクロスビルドしてppcsimで実行してみた のですが、状況に変化無し。

風邪気味でだんだん具合が悪くなって死亡。

2003/02/10

日付け越え。

Cygwinの1.3.20-1がリリースされているようなのでインストール してみました。でも、fork()問題回避のパッチを当てたsnapshotを 作る前にインストールしたのでsnapshotのbuildが重い重い(^^; 順序を逆にするべきでした。

そんな感じでプロ遊のCygwinについてのページにスナップショットの ビルド方法の項目を追加してみました。御参考まで。

2003/02/09

昼過ぎ起床。

今日は秋葉にちょっこりお出かけ。目的はFlash-MXを買う事。 52,000円也........んー、やっぱ高いなぁ。他をウロウロ。 デジカメも良いなぁ........ビデオキャプチャボードも良いなぁ...... USBのDVDドライブか........とか見ているうちにすっかり物欲アドレナリン が薄まってしまい、結局、今日はいいやって事に。やっぱアレですね、 ちょっとでも迷いのある場合は、他のものを見ちゃいかんですな。 デジカメもビデオキャプチャボードもDVDドライブも、どう 考えたってそんなに使う訳無いんだから、値段は関係無いのです。 欲しいかも?いや、欲しい、欲しいぞ!買うしかっ!!くわっ!! とスタパ斎藤風にいかなきゃダメです。

秋葉のSEGAに。大往生のスゴイのを見ました。一周目ラスボス クリアでMAX 2300HIT越えって、あまりに凄過ぎてむしろ参考に なりません(笑。二周目なんて口が開きっぱなしですよ(^^;。 斑鳩のスゴイのとか、色々見ることができました。

帰りに別のゲーセンで、「式神の城II」のロケテストをやって ました。遂にというかやっとというか、640x480(SVGA?)の解像度の シューティングゲームが登場です。パっと見は強烈に 綺麗。隣に並べられた他のゲームとは明らかに違います。 ついでにこの台だけフラットディスプレイになってました(^^; そういやこれもありそうで今まで見たこと無かったかも。 バーチャ3の中型対戦台くらいしかフラットディスプレイの 筐体って見たことなかったし。因みに、どういう系統のハードウェア なのでしょうね?最近はどれもPS/PS2系互換っぽかったり、 NAOMIだったり、従来基板の使いまわしといった感じだったので、 ちょっと新鮮。 で、ゲームは式神の城そのものって感じ。それだけ(ぉぃ;

gcc-2.95.2でカーネルを再コンパイルしてみたものの結果変わらず。 ふーむ。

そういや、CGサイトを眺めていると「おえび」なる言葉を使って いました。「おえかきびーびーえす」の短縮形らしい。 なんだかなぁと思いつつも、やっぱ日本語は三文字もしくは 四文字に短縮するのが語感がよろしいと感じるのも確かです。 それにしても「ドラクエ」って気がついたらそう言っていた ような気がしたのですが、これは誰が言ってもこうなりそう な感じがします。逆にFFは語感がイマイチ。昔、ファミ通で 間違った短縮形としてFFを「ファイナンタ」とか言う例が あったのですが、個人的にはそんなに悪くない気がしている 今日この頃。いや、何の略だかわかんないから、やっぱよく ないか(ぉぃ;

2003/02/08

昼過ぎ起床。休出。

おっかけの続き。
どうもイマイチよく判らず。pte_alloc()の結果として 0xc013fffcが返ってきますが、このアドレスはどうやらカーネル の配置されている領域のすぐ後のヒープ領域から割り当てている ような感じになっています。pte_alloc()の戻り値はページグループ の様で、set_pte()でこのpgの領域に対して、アドレス変換後に返すべき 物理アドレスをセットしている様に見えます。従って、先日の 「何かずれているような」という状態のまま進展無し。

あぁ、そういや一応コンパイラを2.95系に戻してカーネルを 再コンパイルしようと思っていたんだった。という訳で ツールをビルド。

そういや、 以前 オペレーターズサイドって音声コントローラのゲームの話を 書きましたが、これ、エロに展開すると、こいつぁかなりいける んじゃぁなかろうかと思ってみたり。これと組み合わせて、 感情をパラメータとした自然発音を行なったり、超絶グラフィックで 自然な動きを付けたりすれば、これはもうっ!!(ぉぃ; 恋愛シミュレーションみたいのだと、組合わせが無限になって 今の時点では現実的ではないかも知れませんが、エロなら 組合わせが極端に少なくなると思われるので、今でも意外と いけるかも。ビバっ!ハイテクのムダ遣い!。問題は、 プレーヤーにそれなりのボキャブラリーが要求される事。 あと、無口な人には遊べません。あ、問題の方が大き過ぎて 思ったよりいけてない気がしてきた。

とアホな事を書いている間にもツールのビルドは終了せず。

binutils-2.13を--target=powerpc-linuxでconfigureして makeすると、

make[3]: Entering directory `/cygdrive/c/tane/develop/ppctools/binutils-2.13/build/gas'
gcc -DHAVE_CONFIG_H -I. -I../../gas -I. -D_GNU_SOURCE -I. -I../../gas -I../bfd
-I../../gas/config -I../../gas/../include -I../../gas/.. -I../../gas/../bfd
-I../../gas/../intl -I../intl -DLOCALEDIR="\"/usr/local/ppcold/share/locale\""
-W -Wall -Wstrict-prototypes -Wmissing-prototypes -g -O -c ../../gas/config/tc-ppc.c
../../gas/config/tc-ppc.c: In function `md_assemble':
../../gas/config/tc-ppc.c:2172: warning: right shift count >= width of type
../../gas/config/tc-ppc.c:2174: warning: right shift count >= width of type
../../gas/config/tc-ppc.c:2179: warning: right shift count >= width of type
../../gas/config/tc-ppc.c:2181: warning: right shift count >= width of type
../../gas/config/tc-ppc.c:2186: warning: right shift count >= width of type
../../gas/config/tc-ppc.c:2188: warning: right shift count >= width of type
../../gas/config/tc-ppc.c:2193: warning: right shift count >= width of type
../../gas/config/tc-ppc.c:2195: warning: right shift count >= width of type
../../gas/config/tc-ppc.c: In function `md_apply_fix3':
../../gas/config/tc-ppc.c:5374: warning: right shift count >= width of type
../../gas/config/tc-ppc.c:5381: warning: right shift count >= width of type
../../gas/config/tc-ppc.c:5388: warning: right shift count >= width of type
../../gas/config/tc-ppc.c:5395: warning: right shift count >= width of type
../../gas/config/tc-ppc.c:5523: Internal compiler error in simplify_subreg, at simplify-rtx.c:2452
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.
make[3]: *** [tc-ppc.o] Error 1

なるエラーが出て死亡。make 'CFLAGS=-g -O0'でオプティマイズ無しに すると通過できた模様。取りあえず、問題のあったtc-ppc.cについてだけ -O0でコンパイルすることにしてみました。 しかし、ppcsimのポインタキャストの問題と言い、Cygwinのgcc-3.2系って やっぱちょっと怪しい予感。

2003/02/07

日付け越え前に帰着。

KOJIさんとちょっこりお電話。

行きつけのセブンイレブンが15周年記念イベントをやるらしい。 15年というのはスゴイなと思ったのですが、人生の1/3を今住んでいる界隈で 過ごしている事からいくと、知っている限り10年クラスのコンビニなんて そこらにザラにある事に気づいたりして。
そういやコンビニでCDやゲームが買えるようになってから久しいですが、 実際の所、売れているのかいなぁというのが気になった所。毎日見る限り、 あのゲーム群は もう何ヶ月のあのままだよなぁと思ったり。 ゲームやCDは買うと決めて買いにいく場合は、どこで買っても同じ なのかもしれませんが、やはり専門店に行くと、他に出てる新しいゲームや、 いつの間にかベスト版になったゲームなどにも目が行ってしまいます。 そういった買い物感覚を無意識に求めてしまうから、ゲームやCD専門店が コンビニに食われてしまう事が無いのかなぁなどと思ってみたり。

ロータリーエンジンをロリータエンジンと読み違えてしまうこの頃。

2003/02/06

日付け越え前に帰着。

追っかけの続き。

イマイチうまくいっていない加減が判らず。 ppcのハードウェアアドレス変換を使用する際、PTE(PageTableEntry) の先頭を決定するSDR1レジスタに値を入れますが、そこには 0xc0140000が入っていて、ここにpteの実体がエントリされているという 仕掛けになっているハズです。所が、pte_alloc_one()といった pteの割り当てマクロの戻り値アドレスは0xc013fffcとかになっていて 何か微妙に合っていないような気分。うーむ。

2003/02/05

日付け越え前に帰着。いつもより30分早く会社を出たら自転車がパンク していて結局いつも通りの時間になったり。

WBSで「書ける携帯と称して」携帯のアンテナの先に付けるボールペン を取り上げてました。アレぁ ねーだろうと思った。
チャンネル変えてMassu The Best Hit TV。宝生舞に レミおばさん ( 平野レミ)が「こどもならタダで作れる」とかムチャクチャ 言っていたのに笑ったのですが、「ロボットなんて何十億円かけたって 人間と同じには作れないんだから」という言葉に、 ぎゃははは......あれ?意外と深いですよ?とか思ったりして。

追っかけの続き。

arch/ppc/mm/pgtable.c:__ioremap()→ arch/ppc/mm/pgtable.c:map_page()→ mm/memory.c:pte_alloc()→ include/asm/pgalloc.h:pte_alloc_one_fast()→ include/asm/pgalloc.h:pte_alloc_one()→ arch/ppc/mm/init.c:early_get_page()→ include/linux/bootmem.h:alloc_bootmem_pages()→ mm/bootmem.c:__alloc_bootmem()→ mm/bootmem.c:__alloc_bootmem_core()

取りあえずここまで。ふぅ、深いのう。因みに、i8259_init()入り口 から出口まで6526命令。その殆どをメモリのセットに 費やしている感じのようです。順路を見ていると、 mm/以下の共通ソースを通っては出てアーキテクチャ依存に なったりまた共通ソースになったりと、括り出し方が微妙。 この辺、ちょっといじると、すぐ動かなくなりそうな予感が します(^^;

2003/02/04

日付け越え前に帰着。

先日の追っかけの続き。
ioremap()の実体である所のarch/ppc/mm/pgtable.c:__ioremap()を 見てみた所、mem_init_doneの状態によって、vという変数の内容を 切りかえるようになっていて、今回のトレースでは 「 v = (ioremap_bot -= size);」が実行されていました。 ioremap_botはグローバル変数の様で0xf0000000になっていて、 sizeは__ioremap()の引数で1byte、結果としてv=0xefffffffに なっています。で、map_page()ページをノンキャッシュ領域 に予約した後、「return (void *) (v + (addr & ~PAGE_MASK));」 が戻り値となっているようです。addrはioremap()の引数なので 0xbffffff0、PAGE_MASKは(4096-1=0x00000fff)、従って 戻り値は0xeffffff0となる様です。ん〜〜?あってるじゃん(汗;

いやいや、よく見てみると、map_page()の使い方は 「map_page(v+i, p+i, flags);」となっていて、p(PhysicalAddress) をv(VirtualAddress)にマッピングし直して、ioremap()の引数 で指定した物理アドレスをmap_page()の成功により仮想アドレス にすりかえてioremap()の戻り値として返すという感じがしてきました。 となると、map_page()によるアドレス変換テーブルへの登録が うまくないか、ppcsimのページアドレス変換がチョンボっている かのどちらかという気がしてきました。後者の確率が高いと思われ(^^;

逆に何故にこのようなことをやっているのかと思ったのですが、 MPC860系とMPC6xx/7xx/7xxx+MPC10x系とのIOマッピングの違いを 仮想IOマップを介する事でIO領域の割りつけ差異を吸収しよう という考えなのでしょうか?

2003/02/03

日付け越え。

カーネル2.4.17の再コンパイル。取りあえず終了してppcsim上で実行 した所、データアクセスエラー。しかも2.4.19よりも早いタイミングで ずっこけ(T_T)。うーむ、gcc-3.2.1のppcクロスコンパイラでは正しく コンパイルできないのか?

少し追っかけ。
ioremapは積読されていたLINUXデバイスドライバ(二版)によると、 IO領域としてアドレス空間を予約する為の操作で、指定した物理 アドレス空間を直接アクセスする場合に使用する模様。あぁ、 つまんで読んだ時の事を徐々に思い出した気分(^^;。で、 arch/ppc/kernel/i8259.c:i8259_init()をトレースしてみると、 0xbffffff0から1バイトを予約しようとしている様子。
ここで疑問。一つは何故0xbffffff0なんだっけ?もう一つは ioremap()の戻り値が0xeffffff0で、それが*pci_intackに 入っているのですが0xbffffff0は何処に?

まず、0xbffffff0を予約しようとしている部分を探すと、 arch/ppc/kernel/prep_setup.c:prep_init_IRQ()内で i8259_init()が呼ばれており、その引数として 0xbffffff0がハードコーディングされていました。

static void __init
prep_init_IRQ(void)
{
        int i;

        if (OpenPIC_Addr != NULL)
                openpic_init(1, NUM_8259_INTERRUPTS, 0, -1);
        for ( i = 0 ; i < NUM_8259_INTERRUPTS ; i++ )
                irq_desc[i].handler = &i8259_pic;
        i8259_init(0xbffffff0); /* PCI interrupt ack address for MPC105 and 106 
}

これじゃぁ他に間違え様が無いです(^^; 今までがどの様に動いていたのかが、むしろ謎のような気がしてきました。 MPC106のマニュアルを確認した所、確かにPCI/ISAアクノリッジの空間として 割当たっていました。でも、ioremap()の戻り値が0xeffffff0になる 理由までは追求できず。

ブレークポイントの設定を間違えて1GBのトレースファイルが出来あがって みたり(^^;

2003/02/02

昼過ぎ起床。

ちょっこりお出かけ。2ケツイ。

Cygwinのsnapshotをコンパイル。どうやらls -ltrでハングる現象は 直っている模様。

ゴロゴロしていると寒くて死亡。エアコンは動作しているのですが、 畳から1m辺りを境界に暖かい空気と冷たい空気の層に分かれている 感じになっているようだったので、押し入れにしまってあった 小型の扇風機を取り出して空気をかき混ぜてみました。気のせいか ゴロゴロしてても耐えられるようになった気分。

CygwinのMailingListでCygwinのマスコットについて書かれていました が、あのキャラはどうかと........

Linuxカーネルパラメータにfloppy=というのがあって、デバッグ用の メッセージ出力を行なう事ができる様なのでppcsim実行で試して みました。でも、一行 「floppy0: Setting flag 0x1」というのが増えただけで、 大して細かい事は判らず。

で、先日、カーネルを再コンパイル後、ppcsimで実行するとデータ アクセスエラーで死亡する件の原因がなんとなく判明。 ずっこけザマは次のような感じ。EA=0xeffffff0 をバイトロード した所、アドレス変換ONではこの実効アドレスはMMUマッピングされていない アドレスで、結果データアクセスエラーになるというものでした。 この0xeffffff0が何なのかというと、pci_intackというポインタで 指されており、どうやらpciの割り込み返答レジスタの様です。 で、コードが以下の様になっていました。

less -N arch/ppc/kernel/i8259.c
-----
    24  /* Acknowledge the irq using the PCI host bridge's interrupt acknowledge
    25   * feature. (Polling is somehow broken on some IBM and Motorola PReP boxes.)
    26   */
    27  int i8259_irq(void)
    28  {
    29          int irq;
    30  
    31          spin_lock/*_irqsave*/(&i8259_lock/*, flags*/);
    32  
    33          irq = *pci_intack & 0xff;
    34          if (irq==7) {
-----

追っかけてみて、*pci_intackはその辺のメモリ 領域では無いという事が判ったのを踏まえると、io領域アクセスなのだから inb()とか使ってアクセスするべきだと思ったので、少し前のカーネルの バージョンのソースと見比べてみました。すると、

    20  int i8259_irq(int cpu)
    21  {
    22          int irq;
    23          
    24          spin_lock/*_irqsave*/(&i8259_lock/*, flags*/);
    25          /*
    26           * Perform an interrupt acknowledge cycle on controller 1
    27           */                                                             
    28          outb(0x0C, 0x20);
    29          irq = inb(0x20) & 7;                                   

の様になっていて、ちゃんとinb()を使用していました。 実際にエラーしたのは2.4.19、後者のinb()を使用しているのは2.4.17 なのですが、2.4.19ではioremap()という新たな技(でもどういう技か よく判らず(^^;)が加わっていて、 それに伴う変更として、2.4.19のような形になった様です。 確かに、2.4.17のような書き方だとポート0x20ってなんじゃい? という気がするので、2.4.19の様に書くと判りやすいという 気はします(シミュレータで追っかける分には、objdumpのリスト を見てその変数が何者かいちいち辞書引きする必要があるので、 それはそれで大変なのですが(^^;)ので、そうなっているのでしょう。
問題は、何故0xeffffff0なんてアドレスにi8259のレジスタが 割当たっている事になったかという点ですが、これはもう少し 時間をかけて調べてみる必要がありそう。でも、FDCの動作を調べる という本筋から外れている為、くじけて2.4.17で先に進むか やってみる方が良いかも。というか、今まで2.4.17でやってたのか どうかが思い出せないのがヘコリな所なのですが(汗;

2003/02/01

昼過ぎ起床。休出。

Linux JF(Japanese FAQ) Project のページを何気に眺めていると、BogoMIPS値について書かれた 文書がありました。このBogoMIPSというのがppcsim上で動かして いたときに、何なのかイマイチよく判らなかったのがすっきり 判明。あと、 女性をLinuxに招くためのHOWTOとか謎の文書があったり(^^; この文書にあるようなプログラマ的に優秀な女性でなくても、 顔出しOKな美少女のLinux素人でも良いような。

「なんだかせっていがいっぱいあってむずかし〜よぉ〜」
→(デフォルト設定値変更)→
「わーい、とってもかんたんになって私でもつかえるようになりました(^o^) どうもありがとうはーと

みたいな。
海外ではどうか知りませんが、日本のUNIXオタクは ショボい質問をすると、すぐにFAQを読めと言う感じがするので、 前述のサイクルを回してFAQで聞かれるような設定の質問などが 発生しないような改善を行なっていくのはアリかも。

スカイハイの原作本が売っていたので買ってみました。 ドラマはほぼ原作通りの様なのですが、個人的には イズコの心理描画とかあるドラマの方が面白いと 感じました。あと、大抵の場合、原作よりも実写の方が 見た目の描画がライト気味になったり、チープになったり する様に思うのですが、 スカイハイの原作の絵はリアルで結構恐いのですが、 それ以上にドラマの方が見た目の描画がリアルでなまめかしい と思いました。

速報で部品が発見されたとか出たので、何の 事やらさっぱりわからなかったのですが、 スペースシャトルコロンビア号が着陸フェーズで空中分解した らしい。

ポリー・ハッター。ハリー・ポッターのパクリ本。 ロシアの作家が書いたもので、結構売れているらしい。 ロシアには著作権保護の考えが一般にあまり浸透していない ようで、こういったパロディ本や違法コピーメディアを 結構普通に売り買いしているらしい。ふーん。


TOP PREV