Repo

kjana00@gmail.com

older <-

2011-04-26 02:33:08

今朝はくもり。朝ごはんはパンとソーセージとサラダ。あったかい物があるのはいい。ゆでたまごと違って時間かからないし。たまごぐらい食べないと栄養不足じゃないかっていう話はあるんだけど。

新大阪でピンポイントな豪雨に突っ込んだりしつつ。新御堂筋の下を通ったらもう弱くなってるぐらいにピンポイント。あれなら下から西側に回る通路を使った方が良かったな……それでお仕事、と。休み中につらつらと考えてたら明らかに妙なところがあったんで直したり、送信側で専用バッファを持たないメッセージのためのコードをもうちょっとちゃんと形にする方向で考えてみたり。

それで ICE で動作確認してみようか、と思ったらメモリが足らなくてリンク出来ないというのにはまったりする。ちまちまといじましく新規コードで使ってるバッファを削っても足りないもんだから、既存コードからどうやって削ろうかっていう話に。で、しばし迷走。外付けモジュールを使うならそもそも不要になるモジュールがあって、そこで結構大きな配列を取ってる。エラー検出に使ってる部分だけ削ってみるのでも十分そうに見えたんで、まずはそうしてみた。ら、まだ足りなかった。で、この辺の変数を全部完全に削れたら、ということで外から呼ぶ関数を全部空のスタッブに置き換えてみたら、エミュレータレベルでいじる前と同じように動かなくなった、とか。初期化状態から先に進まないっていうのは困るわけで……結局他のモジュールに情報を渡すためのバッファを潰すことでどうにか収めてみた。他のモジュールに渡す情報は外付けモジュールから入ってくるんだってば、ということでこれで問題無いはず。はずなんだけどな……

それでようやく通信周りのコードを確認出来るようになって。先週末にやったように、手動でパケット投げ付けてやるテストをしてみたら、見事に通らなくて。……あれ? もう一方のチャンネルだと少なくとも受信はするなっていうのがわかる。実際動作を追ってみると、受信関数の振り分け条件で望む方の枝に落ちてくれてないっていうのがわかる。で、上手く行く方のチャンネルとの設定の差分っていうと……ソフトウェアバッファを使うかどうかっていうところ、かな? ハードウェアのバッファに直結したもの以外にもバッファを持てて、そういうバッファは余ってるハードウェアバッファを利用するようになってる。今回の実装ではそういう浮いたバッファで受信したメッセージをソフトウェアバッファを無視してアプリケーションに持って来ちゃいましょうっていう形、なんだけど……バッファ自体取っておかないと条件分岐に使われてるしきい値が望む動作をするようにセットされない。直接書き換えちゃっていいのかもしれないけど、妙なことをしてるのに妙なことを重ねるのも何なので。

とりあえず受信するようになったところで送信の方もどうにかしたいなという気分になる。ここまでの動作確認では予想通り動的オブジェクトの解放待ちて無限ループになるからコメントアウトで、っていう方向だったんで。送信確認の割り込みハンドラ内で解放しようとしても、今処理中のメッセージっていうことになってて解放出来ないのね。なんで外のフラグをいじって確保しようとする時に解放して良かったら解放してから確保するようにしてみた。本当はこの辺りのフラグ、自動生成コードに入ってるはずなんだけどどうも今一つ使い方が見えない。っていうか、何故だかここだけ便利なマクロが用意されてなくて API として使うのが不安で。

何か受け取り方が変だと思ったら添字が変だったとか、何故か受信したメッセージでディスパッチしないと思ったらループ継続条件が腐ってたとか、専用バッファで送信してるパケットのメッセージ ID が 5 bits 程足りないとか、専用バッファを使わない方のメッセージは ID が 4 bits 程大きいとか、色々と甚しく間抜けなバグを潰していってからもうちょっと本格的な動作確認へ。外付けモジュールを模擬するプログラムにパケットを投げて返事を受け取って、っていう。……うーん、何か一杯取り零してる風。

空いてるハードウェアバッファをより多くソフトウェアバッファに割り当てるようにするには、というので設定を変えたらちょっと改善した。でもまだだいぶおかしい。っていうか、見てると沢山飛んでくるはずのメッセージのほんの一部しかディスパッチ時点で見えてない。何か変だなと思いつつあれこれ見てて、ふとペイロードレベルのチェックサムチェックを外してみたら大幅な改善が。……これか。

でもチェックサムの計算自体は間違ってないように見えるんだよね。x[0]^x[1]^x[2]^…^x[n] っていうだけなのを間違える方が難しい気はするし。受け取れてるデータもエンディアン違いのようになってるし、何か外付けモジュールの模擬プログラムを作った人と通信仕様の解釈がずれてるっぽい。これは、明日聞くしかないか。もう帰っちゃったし。

それとは別に、故障が検出されるせいで動いてないコードあり。これは検出されてもしょうがないっていう気はする。別段、何もまともに動くように値を与えてるわけでなし。チェックを外して動かしてみた上で相談、かな。

……というぐらいまで確認してもういいや、帰ろうとなったのが 23:00 近く。すっかり遅くなっちゃってまあっていう。この時刻だと買い物も出来ないぞ、ということで晩ごはんは京橋でチャーシュー麺。細麺にさっぱりした豚骨スープにちょっと甘めの焼豚。ねぎ沢山。ちょっと重いかも。もうちょっとくどいと食べきれなくなる味。食べ切れるならおいしく食べ切れるわけだけど。

ちょっとゲームして WWW 見てたらもうすっかり遅くて遅くて平日の夜とは思えないっていう感じで。寝なきゃ、眠いぞ。

older <-

goto

hint can be:

Tags

old

2007-05 -- 2006-12

ゲーム関係の古い記録

before 2005-12