Repo

kjana00@gmail.com

older <-

2012-01-19 01:39:35

今朝は晴れ。朝ごはんはパンとサラダとソーセージ。何だかお腹の調子が悪いです、というのもいつも出掛ける時間までには収まって良かった、良かった。朝はさすがに冷えるかな。

結局昨日入れた修正は別ブランチにコミットし直しておいて、修正前のコードで出力が途切れる原因を追うことに。良くわからない不安定な挙動が修正のせいか、そうでないのかわからないから……リセットかかってる疑惑を検証するためにブートローダとアプリケーションプログラムの選択をする前で GPIO 出力を HI にしてみると、アプリケーションが選択されて、初期化かかって LO になって、それで出力が途切れるところでまた HI になってから落ちてという現象を確認出来た。つまり、リセットかかってるんだよね、これ。何でか。

リセットの原因を持ってるレジスタがあるからフラグを出力させてみるとどうやらソフトウェアリセット。reset 命令が実行されてます、と。reset があるのはデフォルトの割り込みハンドラだけなんで、バグってトラップが発生してるということか。他のペリフェラルだの外部要因による割り込みは入らないはずだから。

トラップハンドラの中でトラップ原因を保持してるレジスタのフラグを出力させてみたらアドレスエラーが立ってる。ちょっとこれ、色んな原因で立つみたいだけど……でもまあ、普通のバグっぽいかな?

ここからどうやって追って行こうかというので一思案。入力与えて実動作してる状況でないとリセットがかからないのよね。なんで、普通にデバッガ使って追いかけるわけにもいかない。それやると PWM 出力が半端なところで止まったりして、過電流・過電圧で壊れるから……かと言ってコードを目で追ってもらちがあかないのは明らか。

結局、優先度順にコード片の先頭で GPIO 出力を HI に、末尾で LO にっていうのをやっていって、リセットかかるところでちゃんと LO に落ちてないところが原因っていうことで探索してみることにする。で、一番優先度が高い A/D 割り込みハンドラから……と試したらいきなりヒットしたり。でも、ここでアドレスエラーの原因になるのってどの辺りだろ?

……というぐらいまでで今日はおしまい。定時退社日だことだし。おまけにリセットかかるのが安定してる時で十分に一度ぐらいなもんだから、ちょっと確認するだけで結構時間かかるし……修正前のコードでも不安定な状態になるんだなっていうのも見えちゃったけど、その原因にこのリセットがかかることも絡んでるっぽいんでうまくしたらまとめて直るかも、と希望的な憶測をしつつ帰る。

で、晩ごはんは野菜とパンチェッタのスープでフジッリ。ちょっとお腹に優しそうな方がいいかな、とかいう。ニョッキにしようと思ってたんだけど、京阪では売ってないんだそういえばということでフジッリ。お昼がお腹に優しいというのとはかなり無縁っぽい牛筋のカレーシチューだったとかいうのは気にしない。塩と胡椒だけの味付けだと不味くなりようもなくて楽。

何か ntpd 動かしてるとかえって激しく時計がずれるんで止めておいたり。半日ずれてるっていうのは何なんだ……それで後は WWW 見たりゲームしたり。ほぼ詰めたと思ったところをピンポイントで踏まれた上で後は手の出しようもなく負けるとかすると残念な気分で一杯になれます。それでまあ、山と城でも 42 階まで降りとけと苦労してみたりして終わり。アーティファクトなアミュレットが出たから期待したけどあんまり使えなくて残念とか、エンシャントドラゴンの群は勘弁して下さいとか。

older <-

goto

hint can be:

Tags

old

2007-05 -- 2006-12

ゲーム関係の古い記録

before 2005-12