2005年3月アーカイブ

[C] (時間に関係なく)その日の最初の食事.【研究社 新英和辞典】

[breakfast]

一日中寝てればこんな時間に目も覚めるわけです。どちらかと言えば夕食が足りなかったのが原因かとも思われますが。

腹が満たされると眠くなりますね。寝ます。

ずるずる

花粉症だと思っていろいろ放置してたら風邪だったらしい。

もちろん花粉症も併発してるんですが。

夢を見た。

| コメント(4)

起きようとしたら脳味噌がバスエラー吐いて例外処理でスタートアドレスに戻って無限ループに陥る夢だった。

正直どうかしてると思った。

printf, malloc, heap...

| コメント(1)

heapを設定しないでprintf使ってた。bssに置かれて0になってるならROM領域にかぶって動かない筈なんだが……ドウナッテルンダロウ

で、その部分を直したら一文字も受信できなくなった。誰か助けてください。

どんどん見当違いの方向に突き進んでる気がするが、メモ。

.ctors
プログラムのグローバルコンストラクタ関数へのポインタの配列を保持する
.dtors
プログラムのグローバルデストラクタ関数へのポインタの配列を保持する

gccはmain()関数の前に、無条件で__main()関数を呼び出す。これはlibgccで定義され、.torsセクションを設定している。

これはC++を利用しない場合には意味を持たない。そこで、空の__main()関数を自作して置き換えることができる。これに伴い、リンカスクリプト内の.torsセクションも削除して構わない。

breakfast

| コメント(3)

おなかがすいたのであさごはん。

あさごはん
  1. 今何時ですか
  2. 朝から何食ってますか

……そこだけのプログラムなら。

問題点がどこにあるのかわからないのが問題です。

56/25/49

| トラックバック(1)

シリアル受信が56文字目に達すると割り込みから復帰できなかった。リングバッファの開始位置を50にしたら6文字目で止まった。

バッファサイズを32にしてみたら1文字も受信できなくなった。

スタックポインタの設定を思いっきり勘違いしてスタックがデータ領域にめり込んでるのを発見した。そこを直したら49文字目で止まるようになった。25文字目の時にはデータの取りこぼしがあるようだった。

自前で書いた関数の中にポート出力入れて確認したら関数のリターンに失敗してるらしかった。#pragma interrupt で書いてるからその部分はgccが勝手に生成してるわけで……ドウスレバイイノ?

そんなわけで49,000行くらいある逆アセンブルコードを眺めて途方に暮れて日も暮れた。明日は最小限のシリアル関連だけ書いて実験してみようと思った。FlashROMの書き換え回数内に終わるといいなあと思いました。保証だと100回なのであと半分くらいです。

こめんと

| コメント(4)

コメントができてなかったらしい。

mt.cfgのCGIPathが表に出てるドメインと違ってたのが原因ぽい。

どうせコメントなんぞ付けるのは物好(ry

動き始める何か

gdbは相変わらず動かないけれど。ようやくスタートラインが見えるくらいまでは進んだ。気がする。

スタートアップルーチンで遅延分岐なんぞすっかり忘れてトンデモな所に飛んでた模様。東京工業高専のページの解説でどうにかなった。

シリアル送受信の割込でターミナル通信が可能になったのでデバッグが始められそうです。とりあえず割込の登録するときはマスクしてから優先度設定しないとダメっぽい。気がする。

……そろそろ半田ゴテと格闘を始めねばならぬようですな。

アキハバラ電脳猫

各所でドラえもんの新声優陣の話題になってますね。嘘かホントかは知りませんが。

  • ドラえもん …… 水田わさび(31)
  • のび太   …… 大原めぐみ(29)
  • しずか   …… かかずゆみ(31)
  • スネ夫   …… 関智一 (32)
  • ジャイアン …… 木村昴 (14)

のび太とジャイアンはわからんのですが……(ジャイアン14歳ってどうなのよ)

  • 水田わさび:ビリケン
  • かかずゆみ:代官山はとこ
  • 関智一  :竜ヶ崎 鷹士&黒い王子

というわけでアキハバラ電脳組です。ドラえもんはケチの関西弁になりますか。んでのび太と合体してスネ夫配下のしずかちゃんと戦うわけですな。しずかちゃんは「くるっくー」な語尾キャラになります。スネ夫は負けそうになると「のび太のくせに生意気な、シャイニングフィンガーッ!!」と必殺技を繰り出してきます。んでやられるとママンに泣きつきますね。ガンダムネタ2連発です。ついてきてください。

リファラ見てるとH8のページ目指して飛んでくる人がいるようなので残しておきます。

H8 writer

| トラックバック(1)

Open H8 writerを改造したのを置いときます。-3672と -3694 を追加したのとエラー処理を少々追記。

h8write.c。頭のほうの #ifdef FreeBSD の下にある RSLINE の定義を環境に合わせて書き換えておきましょう。

cc -o h8write h8write.c

できたファイルは /usr/bin あたりに放り込んで chmod 755 を忘れずに。

SH-gcc on Mac OS X

| コメント(3)

途中までは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出てたのはこれか。ほかにもいろいろと凡ミスしてますよ。なにそれ。

[オーブンレンジ]

買った。庫内26Lフラット/1000Wインバータというあたりでだいたい想像してくだちい。

まだSH2が動かない。昨日の時点でわかったことは単純なポート出力のプログラムも動いていないことくらい orz

gdbでも使ってみようかと思ったがコンパイルが通らないので窓から投げ捨てた。

objdumpで逆アセンブルしてみたら割込ベクタが全部スタートに飛んでた。よく見たらリンカスクリプトで定義してる関数と実装してる関数の名前が違ってた。ポート出力もできないのには関係ないと思うが(これで直ったらいいなあ……今日は実機触ってないのでなんとも)、この調子じゃ動くまでにかなり時間がかかると思った。

愚痴っぽい今日この頃。

SH2用のモニタが動かないんです。よく見たら関数書くだけ書いて呼び出してないんです。ちょっと吊ってくる。

スイッチ監視部分どう書いてるのかわからなくて既存のモニタのソースを見たら……コメントしか書いてない……もしや実装されてないんですか (・∀・) ? H8モニタの方は文字入力関数の中でスイッチ監視という荒技のようです。スマートとは言いたくありませんが確実な方法ですな。どーせ使わないNMI割り込み使うってのもアリですがどっちが良いのかしら……?

勧誘用のビラとか作る時期です。とりあえずはんだごてとか箱っぽいのとか。今年は日替わりとか無茶なことはやめようと思った。

私は向日葵で 君は太陽

/.-J経由気象庁プレスリリースおよび国土交通省プレスリリース。MTSAT-1Rの静止化および愛称について、と。

止まっただけでなくて各機能が動作しなければ話にならないわけですが、とりあえず大きな山はあらかた越えたことになるのかしら。

愛称も「ひまわり」で続行。ひまわりの花言葉は「あなたを見つめる」でしたか。監視されるのは御免ですが分解能がアレでは監視どころじゃないので、微笑ましく見守ってあげましょう。いや見守ってもらうのか。どっちでもいいです。

MTSAT-2以降はどうなるのですかね。

蛍光灯のペンダントが事あるごとに頭や腕にヒットする高さだったので取り替えてみました。天井直付けのシーリング型。

取り付け部分の端子が合わなかったので自分で交換したわけですが……電極は差し込むだけだし取り付け部分が梁からずれてるようだしケーブル取り回しの都合で木ネジの穴を再利用するハメになるし……なんというか地震で落ちてこないか心配になりました。角がないから落ちてきたところで大した害にはなりそうもありませんが。

これで部屋は一通り片付いたのであとはSH2と格闘するだけです。その前に風邪っぽいのをどうにかせねば。眠い(慢性的に)。

もっと自由度を!

……というわけでサーバ借りましたよ。doblogは何と言うか案の定使い勝手が宜しくなかったしH"じゃ自宅鯖なんぞネタ以外の何者でもないわけで……昔は9600ボーの電話回線でBBS立ててましたかそうですか。いずれにせよ家でCube付けっぱなしにする電気代より安いわけで。

そんなことやってるヒマがあったら部屋の片付けをした方がいいと思った。

このアーカイブについて

このページには、2005年3月に書かれたブログ記事が新しい順に公開されています。

次のアーカイブは2005年4月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。