Repo

kjana00@gmail.com

older <-

2011-12-14 02:58:13

今朝は晴れ。朝ごはんはパンとサラダとソーセージ。ああ、何か、妙に眠い……

逆刺し出来ないようにコネクタが付いてケーブルを外す時にはこの爪を押して抜く、なんていうのを確認して。で、今日は 15:30 には切り上げなきゃならないことだし、とブートローダをいじり出す。実際にロードするのはともかく、通常起動をプログラムロードとの切り替えを作っておくかなっていうことで。

ざくっと書きかけたところでちょっと動かそうとしたら問題を発見。まともに起動しないわ。ブートローダの方に制御が行った場合に何か起こってる風。GPIO 出力にデバッグ用信号を足して見たら、どうもリセットかかってる。条件分岐以前で HI に一度だけしてみたらパルス出力になるっていうのは、リセットかかってデバッグ出力が LO に落ちるからっていうのしか無さそう。

でもブートローダのコードをいじるのって、前に統合した上で動くのを確認した時以来なんだよね……うん、今日入れた変更が無くても落ちてるわ。でも、統合した時のままなら動くっていうのも間違いない。git bisect してみたら、結局昨日までは特に問題が無かったっていうのが判明。うーん、何だそれ?

動く場合と動かない場合とでマップファイルを比べてみると、スタックの配置が違うっていうのに気付く。0x12xx 程度からだったのが 0x2000 からに移動してるね。使用量は 0xdxx とかか。……で、リンカスクリプトでの設定を見るに RAM 領域の上限は 0x23ff。これか。スタック踏み潰してハードウェアトラップかかってリセット、かな。

昨日入れた変更で関係ありそうなのは、デバッグ用シリアル入出力用のバッファ長変更。ということで戻してみたらどうやら正解。スタックの配置場所が戻ってブートローダに制御を移した場合でもちゃんと動くようになる。まあこのバッファ、受信側は送信側よりはるかに小さくて構わないんだよねと使い分けるようにして対処。うん、とりあえずこれで。

それで改めて入れるつもりだった修正を導入。単に DIP スイッチ入力をデバウンスして使うっていうだけ。厳密なタイマー設定なんかはしてないんでかなりとりあえず。今思うとクロックの設定なんかもこの辺りの処理の後になってるから、思ってたようなサンプリングの待ち時間にはなってないんだな……ビジーループで待ちを入れつつ 10 回ポートの値を見て、6 回以上 HI だったらブートローダへっていうロジック。回路図を見てると DIP スイッチオンで入力は LO になりそうなんだけど、スイッチ接続してない現状で入力が LO なんでこうしておいた。どうせ本物は次の基板になるから、そっちはそっちで見直しがいるしね。

それぐらいで時間になったんで移動。社員集会ということで新大阪へ。えらく久しぶりだ……で、相も変わらず状況が厳しいままだなっていう話を聞いて。それで終わったら懇親会。会場が本社の事務所っていうからとくなもの無さそうと思ってたけど、仕出しを頼んで結構まともに晩ごはんになった。会費千円っていうのを考えたら十分以上にいい料理。寿司に揚げ物に焼き物にサンドイッチにプチケーキという感じ。他におつまみなものが少々っていうのもあったけど、普通に料理を食べてるだけで十分過ぎる程お腹一杯になった。

時間で終わって帰って WWW 見たりゲームしたり寝たり。お腹一杯だとちょっと横になりたくなったりするもので。で、思ったよりも本格的に寝かけて起きたら 2:00 過ぎてるとか。これ書いたら早いとこ本当に寝よう……

older <-

goto

hint can be:

Tags

old

2007-05 -- 2006-12

ゲーム関係の古い記録

before 2005-12