[C] (時間に関係なく)その日の最初の食事.【研究社 新英和辞典】
![[breakfast]](http://gentlemachine.com/mt/archives/images/050330_breakfast.jpg)
一日中寝てればこんな時間に目も覚めるわけです。どちらかと言えば夕食が足りなかったのが原因かとも思われますが。
腹が満たされると眠くなりますね。寝ます。
[C] (時間に関係なく)その日の最初の食事.【研究社 新英和辞典】
![[breakfast]](http://gentlemachine.com/mt/archives/images/050330_breakfast.jpg)
一日中寝てればこんな時間に目も覚めるわけです。どちらかと言えば夕食が足りなかったのが原因かとも思われますが。
腹が満たされると眠くなりますね。寝ます。
花粉症だと思っていろいろ放置してたら風邪だったらしい。
もちろん花粉症も併発してるんですが。
起きようとしたら脳味噌がバスエラー吐いて例外処理でスタートアドレスに戻って無限ループに陥る夢だった。
正直どうかしてると思った。
heapを設定しないでprintf使ってた。bssに置かれて0になってるならROM領域にかぶって動かない筈なんだが……ドウナッテルンダロウ
で、その部分を直したら一文字も受信できなくなった。誰か助けてください。
どんどん見当違いの方向に突き進んでる気がするが、メモ。
gccはmain()関数の前に、無条件で__main()関数を呼び出す。これはlibgccで定義され、.torsセクションを設定している。
これはC++を利用しない場合には意味を持たない。そこで、空の__main()関数を自作して置き換えることができる。これに伴い、リンカスクリプト内の.torsセクションも削除して構わない。
おなかがすいたのであさごはん。

……そこだけのプログラムなら。
問題点がどこにあるのかわからないのが問題です。
シリアル受信が56文字目に達すると割り込みから復帰できなかった。リングバッファの開始位置を50にしたら6文字目で止まった。
バッファサイズを32にしてみたら1文字も受信できなくなった。
スタックポインタの設定を思いっきり勘違いしてスタックがデータ領域にめり込んでるのを発見した。そこを直したら49文字目で止まるようになった。25文字目の時にはデータの取りこぼしがあるようだった。
自前で書いた関数の中にポート出力入れて確認したら関数のリターンに失敗してるらしかった。#pragma interrupt で書いてるからその部分はgccが勝手に生成してるわけで……ドウスレバイイノ?
そんなわけで49,000行くらいある逆アセンブルコードを眺めて途方に暮れて日も暮れた。明日は最小限のシリアル関連だけ書いて実験してみようと思った。FlashROMの書き換え回数内に終わるといいなあと思いました。保証だと100回なのであと半分くらいです。
コメントができてなかったらしい。
mt.cfgのCGIPathが表に出てるドメインと違ってたのが原因ぽい。
どうせコメントなんぞ付けるのは物好(ry
gdbは相変わらず動かないけれど。ようやくスタートラインが見えるくらいまでは進んだ。気がする。
スタートアップルーチンで遅延分岐なんぞすっかり忘れてトンデモな所に飛んでた模様。東京工業高専のページの解説でどうにかなった。
シリアル送受信の割込でターミナル通信が可能になったのでデバッグが始められそうです。とりあえず割込の登録するときはマスクしてから優先度設定しないとダメっぽい。気がする。
……そろそろ半田ゴテと格闘を始めねばならぬようですな。
各所でドラえもんの新声優陣の話題になってますね。嘘かホントかは知りませんが。
のび太とジャイアンはわからんのですが……(ジャイアン14歳ってどうなのよ)
というわけでアキハバラ電脳組です。ドラえもんはケチの関西弁になりますか。んでのび太と合体してスネ夫配下のしずかちゃんと戦うわけですな。しずかちゃんは「くるっくー」な語尾キャラになります。スネ夫は負けそうになると「のび太のくせに生意気な、シャイニングフィンガーッ!!」と必殺技を繰り出してきます。んでやられるとママンに泣きつきますね。ガンダムネタ2連発です。ついてきてください。
リファラ見てるとH8のページ目指して飛んでくる人がいるようなので残しておきます。
Open H8 writerを改造したのを置いときます。-3672と -3694 を追加したのとエラー処理を少々追記。
h8write.c。頭のほうの #ifdef FreeBSD の下にある RSLINE の定義を環境に合わせて書き換えておきましょう。
cc -o h8write h8write.c
できたファイルは /usr/bin あたりに放り込んで chmod 755 を忘れずに。
途中まではH8用と同じなので H8-gcc on Mac OS X を参照。展開( ln -s ../newlib-hogehoge) まで終わらせる。H8用のを作ってある場合はそのままで良い。
~/.bash_profile に次の行を追加
export PATH=/usr/local/cross/sh/bin:$PATH
で、source ~/.bash_profile で読み込む。
binutils構築。
cd ~/cross/work mkdir sh-binutils cd sh-binutils ../binutils-2.15/configure --prefix=/usr/local/cross/sh --program-prefix=sh-coff-hms- --target=sh-coff-hms make CFLAGS="-O2" all sudo make install
gcc。
cd ~/cross/work mkdir sh-gcc cd sh-gcc ../gcc-3.4.3/configure --prefix=/usr/local/cross/sh --program-prefix=sh-coff-hms- --target=sh-coff-hms --with-newlib make CFLAGS="-O2" all sudo make install
sh-coff-hms-gcc -v でバージョン情報が表示されれば完了。
Mac OS X 10.3.8, Xcode 1.1。
作業用ディレクトリとして ~/cross/arc/ と ~/cross/work/ を用意。
インストールディレクトリとして /usr/local/cross/h8/ を想定。適宜読み替えるべし。
下準備としてあらかじめパスを通しておく。~/.bash_profile を編集。次の行を追加。
export PATH=/usr/local/cross/h8/bin:$PATH
source ~/.bash_profile で読み込んどく。
以下のファイルをダウンロード。最新版はリリースでも動かないものがたまにあるので動作確認したバージョンも書いとく。~/cross/arc/ に放り込む。
別にtar.gzでもtar.bz2でもいいんだけど。bz2のほうが軽いっぽい。で、展開。
cd ~/cross/arc bzip2 -d binutils-2.15.tar.bz2 bzip2 -d gcc-core-3.4.3.tar.bz2 cd ../work tar -xf ../arc/binutils-2.15.tar tar -xf ../arc/gcc-core-3.4.3.tar tar -zxf ../arc/newlib-1.13.0.tar.gz cd gcc-3.4.3/ ln -s ../newlib-1.13.0/newlib .
まずはbinutilsを構築。
cd ~/cross/work mkdir h8-binutils cd h8-binutils ../binutils-2.15/configure--prefix=/usr/local/cross/h8 --program-prefix=h8300-hms- --target=h8300-hms make CC='cc -no-cpp-precomp' CFLAGS="-O2 -fomit-frame-pointer" all sudo make install
続いてgcc。
cd ~/cross/work mkdir h8-gcc cd h8-gcc ../gcc-3.4.3/configure --prefix=/usr/local/cross/h8 --program-prefix=h8300-hms- --target=h8300-hms --with-newlib make CC='cc -no-cpp-precomp' CFLAGS="-O2 -fomit-frame-pointer" all sudo make install
h8300-hms-gcc -v でバージョン情報が表示されれば完了。
gdb-6.3はintl(国際化なんとか)がファイル群から外されたためNON-GNUなシステムではコンパイルできないそうな。なにそれ。そんなわけで6.2.1をsh-coff-hms用に作ってみた。
……シミュレータがスタートアップルーチンの最初でバスエラー起こして止まる。なにそれ。んで正常動作する(はずの)プログラムをシミュレータにかけたら同じところで落ちた。なにそれ。リンカスクリプトに独自のモノを使うとダメとか書いてあるページもあるんです。なにそれ。
とりあえずobjdumpで逆アセンブルして眺めてみたら最初に設定したはずのアドレスが㌧㌦。スタートアップルーチンの .align 指定がなかった。warning出てたのはこれか。ほかにもいろいろと凡ミスしてますよ。なにそれ。
![[オーブンレンジ]](http://gentlemachine.com/mt/archives/images/oven.jpg)
買った。庫内26Lフラット/1000Wインバータというあたりでだいたい想像してくだちい。
まだSH2が動かない。昨日の時点でわかったことは単純なポート出力のプログラムも動いていないことくらい orz
gdbでも使ってみようかと思ったがコンパイルが通らないので窓から投げ捨てた。
objdumpで逆アセンブルしてみたら割込ベクタが全部スタートに飛んでた。よく見たらリンカスクリプトで定義してる関数と実装してる関数の名前が違ってた。ポート出力もできないのには関係ないと思うが(これで直ったらいいなあ……今日は実機触ってないのでなんとも)、この調子じゃ動くまでにかなり時間がかかると思った。
愚痴っぽい今日この頃。
/.-J経由気象庁プレスリリースおよび国土交通省プレスリリース。MTSAT-1Rの静止化および愛称について、と。
止まっただけでなくて各機能が動作しなければ話にならないわけですが、とりあえず大きな山はあらかた越えたことになるのかしら。
愛称も「ひまわり」で続行。ひまわりの花言葉は「あなたを見つめる」でしたか。監視されるのは御免ですが分解能がアレでは監視どころじゃないので、微笑ましく見守ってあげましょう。いや見守ってもらうのか。どっちでもいいです。
MTSAT-2以降はどうなるのですかね。
蛍光灯のペンダントが事あるごとに頭や腕にヒットする高さだったので取り替えてみました。天井直付けのシーリング型。
取り付け部分の端子が合わなかったので自分で交換したわけですが……電極は差し込むだけだし取り付け部分が梁からずれてるようだしケーブル取り回しの都合で木ネジの穴を再利用するハメになるし……なんというか地震で落ちてこないか心配になりました。角がないから落ちてきたところで大した害にはなりそうもありませんが。
これで部屋は一通り片付いたのであとはSH2と格闘するだけです。その前に風邪っぽいのをどうにかせねば。眠い(慢性的に)。
もっと自由度を!
……というわけでサーバ借りましたよ。doblogは何と言うか案の定使い勝手が宜しくなかったしH"じゃ自宅鯖なんぞネタ以外の何者でもないわけで……昔は9600ボーの電話回線でBBS立ててましたかそうですか。いずれにせよ家でCube付けっぱなしにする電気代より安いわけで。
そんなことやってるヒマがあったら部屋の片付けをした方がいいと思った。