ほげめも(October 11 1998)

Access counter:

Sunday, October 11 1998

Sun Oct 11 02:20:07 JST 1998

h8300-hms な gcc-2.8.1 には、 コンパイルが失敗するバグがある模様。 newlib-1.7.1 で、 libm/math/ef_fmod.cのコンパイルで gas がエラーだしてこける。 こいつのアセンブル出力を調べてみると、

	mov.b   r4l,r4hn	mov.b   r5h,r4l
とかと書いている行でエラーがでているようだ。 これって明らかに
	mov.b   r4l,r4h
	mov.b   r5h,r4l
ていう 2 行がいっしょになっちゃってるんだよなあ。 どこかで \n のかわりに n と書いてしまってるのではないかと推測する。

Sun Oct 11 02:43:00 JST 1998

むむ。これか。みっけ。

% cd gcc-h8300-hms-2.8.1/config/h8300
% grep -n '[^\]n\\t' * 
h8300.c:2341:         *assembler_p = "mov.b\t%y0,%z0n\tmov.b\t%x0,%y0\n\tmov.b\t%w0,%x0\n\tsub.b\t%w0,%w0";
これだよなあ。
*assembler_p = "mov.b\t%y0,%z0\n\tmov.b\t%x0,%y0\n\tmov.b\t%w0,%x0\n\tsub.b\t%w0,%w0";
ってなってりゃいいんだろ。きっと。

Sun Oct 11 03:13:15 JST 1998

gcc-h8300-hms-2.8.1 をつくりなおして再チャレンジしたところ、 ef_fmod.c はうまく通るようになったが、 こんどは ef_hypot.c で謎なエラーが発生。

h8300-hms-gcc: Internal compiler error: program cc1 got fatal signal 6
なんじゃあこりゃあ。もう手がつけられん。 signal 6 って abort か。いったいあたしにどうしろと。

Sun Oct 11 03:37:24 JST 1998

だめだ、gcc-2.8 系はまだ出て日が浅いだけあって 末節のバグには対処しきれてないように見える。 しょうがないから gcc-2.7.2.3 に変えるかー。 ちくしょう。

Sun Oct 11 04:19:40 JST 1998

gcc-2.7.2.3 に変えたら H8/S 向けのコンパイルができないことに気づいたー。 うえーん。

いろいろ調べていたら、コンパイルしようとしていた newlib のバージョンが 古いことがわかった。新しいのは Cygnus の FTP サイトで見つかる。 1.8.1 ってやつでいいのかな。

Sun Oct 11 05:04:39 JST 1998

やっぱり ef_hypot.c で signal 6 とかいってこけるのには 変わりがない。困ったなー。作りそこなったんだろうか。 しかし gcc に -mh オプションや -ms オプションを つけるとこけない。なんか gcc の仕様が変わったのかな。

Sun Oct 11 10:16:17 JST 1998

ううー。おきたた。

Sun Oct 11 11:03:05 JST 1998

ef_hypot.cが h8300-hms な gcc で、 cc1 が signal 6 だしてこけるのは、 最適化オプション -O2 がついてるときだけだということがわかった。 こうなると gcc のバグであることは明らかすぎるなあ。

Sun Oct 11 11:36:41 JST 1998

Archives of the cross-gcc Mailing List というのを見つけた。

Sun Oct 11 11:45:45 JST 1998

ftp://ftp.cygnus.com/pub/embedded/crossgcc/というところがあることを知った。 FAQ とか、gcc に対するパッチとかが置いてあるらしい。 試すか。

Sun Oct 11 12:40:46 JST 1998

おー newlib の make 通ったー。わわーいいい。
ばんざーい
ばんざーい
ばんざーい

ちゃんと -mh(H8/300H 用)とか -ms(H8S 用)とかいった コンパイルオプションをつけてコンパイルしなおしてるのがえらいな。 きっと自動的に使いわけてくれるんだろう。

Sun Oct 11 12:53:36 JST 1998

と思ったら実は通ってなかった(T_T)。また signal 6 だぜー。 こんどは -mint32 というオプションがついたところで こけてるらしい。 どうしたもんかなあ。

Sun Oct 11 13:49:48 JST 1998

うーむ、最後の手段。 プリプロセッサを使って、 こけそうなコンパイル条件がきたら問題の個所を削ってしまうことにした。

float ef_hypot()
{
  #if __H8300__
    return 0.0;
  #else
  ...
  #end if
}
あう、しかしたとえこうやって無事にライブラリができあがったとしても こんなバグつきなコンパイラなんて使いたくねーよー。 だれかなんとかしてー。

Sun Oct 11 14:05:00 JST 1998

できた…
がしかしこの敗北感はなんだ

Sun Oct 11 15:16:06 JST 1998

ふぁみまでごはんかってきた。 すし。まずい。

Sun Oct 11 16:07:49 JST 1998

よーやくnewlib-h8300-hms_1.8.1-1_i386.debを作った。 次は gdb かい。

Sun Oct 11 16:58:20 JST 1998

かけ算とかを使った単純なテストプログラムをクロスコンパイルしてみたところ、 gcc のライブラリの検索うまくいかないことがわかり、 gcc-h8300-hms_2.7.2.3-1_i386.debを作りそこなったことに気がつく。

Debianized package を作るのに debmake というツールを使っている場合、 最後に /usr/bin/debstd というスクリプトで体裁を整えるんだが、 これがなんと、 クロスコンパイル用の gcc のライブラリ群 libgcc.a を ひとつのこらず見つけだして i386 用の strip をかけてしまうという とんでもないやつだった。

こういうときは /usr/bin/debstd をコピーしたあと 好きに修正して使えと書いてあったので、そうすることにした。

Sun Oct 11 19:03:57 JST 1998

ようやくいろいろと、 GNU なプログラムどもの Debianized packages の作り方のこつがわかってきた。 基本は Makefile.in とかそのへんを書きかえて、 すでにインストールされている shared library があるのなら そちらを使うようにすることだ。

たとえば gdb-4.17 の場合は、 gdb-4.17.tar.gzの中には libreadline といった 別に配布されているライブラリのソースコードも サブディレクトリとして含まれており、 ただ展開して configure して make するだけだと、 この readline のコンパイルをやって static link してしまう。 そこで gdb/Makefile.in

# Where is the READLINE library?  Typically in ../readline.
READLINE_DIR = ../readline
READLINE = $(READLINE_DIR)/libreadline.a
READLINE_SRC = $(srcdir)/$(READLINE_DIR)
READLINE_CFLAGS = -I$(READLINE_SRC)
と書いてあるところを
# Where is the READLINE library?  Typically in ../readline.
READLINE_DIR = ../readline
#READLINE = $(READLINE_DIR)/libreadline.a
READLINE = -lreadline
READLINE_SRC = $(srcdir)/$(READLINE_DIR)
READLINE_CFLAGS = -I$(READLINE_SRC)
と修正して、
% ./configure --target=h8300-hms --enable-shared
というように configure を --enable-shared つきで 実行してやると、システムのlibreadline.soを使ってくれる。

Sun Oct 11 19:38:15 JST 1998

というわけで gdb-h8300-hms_4.17-1_i386.deb できた。 ふう。

Sun Oct 11 23:10:39 JST 1998

くはー。
ねみー。

Sun Oct 11 23:54:09 JST 1998

h8comm を Debianize してみたが、 エラーばっかりでてまともにコンパイルできんかったぞ。 DWORD なんて型がいったいどこで宣言されてるというんだ。 Cygwin32 用に変更したものをそのまま配られているだけのような気がする。

はて、次は AKI-H8 の基板でも組みたててみるか。 そろそろ家に帰りたい気もするけど。


Monday, October 12 1998

Mon Oct 12 01:23:17 JST 1998

作業を始めるまえに、 まだ整理してない荷物を整理して机の上と周囲を片付けて手を洗った。さっぱり。

Mon Oct 12 01:58:50 JST 1998

ほげらり。やるか。

Mon Oct 12 03:04:51 JST 1998

うは。わりとすぐにできた。 ROM ライタ回路とやらの図とにらめっこをして、 ようやく意味を理解する。 いろいろと忘れてるなあ。

Mon Oct 12 03:11:00 JST 1998

よーかんをたべるか。

Mon Oct 12 04:39:03 JST 1998

ROM ライタの書き込み電圧供給部分を自分で作ることにするが、 いろいろどうでもいいことを考えすぎてわかめになる。 ほんとにこれで壊れないんだろーか?

Mon Oct 12 14:25:31 JST 1998

ぐっはー。
家に帰った。 みーてぃんぐ終了。 つぎは輪講だ…

Mon Oct 12 17:06:42 JST 1998

輪講おわった。 PIC をつかったブレークアウトゲーム(ようするにブロックくずし)ゲームは 圧巻であった。 PIC 16C84 いっこだけでできてるんだが、 NTSC 出力、パドル入力に加えて 効果音まででてるあたりがすばらしい。

Mon Oct 12 19:06:46 JST 1998

めしを くつた。

Mon Oct 12 23:56:48 JST 1998

あーうー


Tuesday, October 13 1998

Tue Oct 13 00:34:46 JST 1998

うーむ。Cygwin32 って絶対、 計算機資源が無駄になってるしか思えんな。 ほんとうにとろすぎ。 ./configure --target=h8300-hms してみたらたまらなく遅い。

それ以前に Cygwin32 って、 Windows しか使えないのならともかく、 Linux マシンが手元にあるのに わざわざ使うようなもんではないですよ。

Tue Oct 13 02:14:58 JST 1998

Cygwin32 でぜんぜん binutils-2.9.1 の make がうまくいかんと思ったら、 ネットワークドライブで作業してたからだった…。 NTFS でやったらあっさりうまくいった。

しかしながらサブディレクトリbinutilsで make がうまく動かなくて失敗する。

srconv: srconv.o hoge.o fuge.o
とか書かれているのに、make -p -n してみると
srconv: srconv.c
なんて書かれていたりして、いきなり
gcc -g -O2 srconv.c -o srconv
なんて大技を繰りだしてくる。 なんか依存関係の推論がおかしくなってるとしか思えん。

Tue Oct 13 02:31:52 JST 1998

よくよく調べたら make がおかしいんでなくて、 binutils-2.9.1 の Makefile.amconfig.in とかが狂ってるだけだった。 configure から生成された Makefile.in を見ると

EXEEXT = .exe
SRCONV_PROG=srconv sysdump coffdump
...
PROGS = $(SIZE_PROG) $(OBJDUMP_PROG) $(NM_PROG) $(AR_PROG) $(STRINGS_PROG) $(STRIP_PROG) $(RANLIB_PROG) $(DEMANGLER_PROG) $(OBJCOPY_PROG)  $(SRCONV_PROG)$(EXEEXT)   $(ADDR2LINE_PROG)
なーんてなってるぞ。 こんなのうまくいくわけねー。

Tue Oct 13 03:45:32 JST 1998

とにかく直さなくては寝れないので、いろいろ試行錯誤する。 autoconf の使い方がよーわからんので、 とりあえず configure の中身をいじることにした。 問題の箇所

BUILD_SRCONV='$(SRCONV_PROG)$(EXEEXT)'
を、
BUILD_SRCONV='$(addsuffix $(EXEEXT),$(SRCONV_PROG))'
にしたら、 めづらしくなんの副作用もださないで非常にきれいに解決してしまった。 それにしても GNU make 奥が深すぎだー。

Tue Oct 13 03:59:09 JST 1998

やったー。Cygwin32 で binutils-2.9.1 できたー。 make install prefix="$PWD/tmp" とかやって インストールしてみたら、 ライブラリやインクルードファイル、それに manpage まで叩きこまれた。 なんつーか、UNIX とおんなじだな。あたりまえだが。 これらってば、Windows NT のファイル階層の いったいどこにインスールするのがいいんだろう? 適当に mount して prefix=/usr/local で インストールするようにするのがいいんだろうか。

ようやくバイナリができたのはいいが、 これを各マシンにもっていくにはいったいどうしたらいいんだろう。 Cygwin32 でも Debianize ってできないかなあ。

Tue Oct 13 04:05:43 JST 1998

NTFS で binutils-2.9.1 を configure から お試し make install までしてみたら、 55MB の容量をくうことがわかった。 はっきりいってもうすでに HDD がたらん。

Tue Oct 13 04:19:30 JST 1998

ねるねるねーるー

Tue Oct 13 13:14:41 JST 1998

おきたーたー
情けない自分の夢をたくさん見た。

Tue Oct 13 18:25:34 JST 1998

そこにいる人が使うマシンが届く。 dual Pentium II 450MHz と、あいかわらずなスペックである。 Bt848 をさして CPU で画像処理してみるらしいぞ。

んでもってここはぜひ 10 分で組みたてようかと思ったが、 やってみたら 1 時間以上かかってしまうというていたらくであった。 そんなことでは世界大会には出場できないぞ!! ギャラリーにも途中で飽きられてしまったようだ。

Tue Oct 13 19:19:44 JST 1998

ふげー。めしくった。
ことわりもせずに雨がふってくるとは、ひどい。

Tue Oct 13 20:03:34 JST 1998

いいかげん H8 動かしたいので、基板つくるとするか。

Tue Oct 13 23:01:22 JST 1998

いまは gcc よりも egcs のほうが よくサポートされているという話を小耳にはさんだ。 というわけで、こいつの target=h8300-hms な クロスコンパイラもつくってみようかと思う。

んでやってたんだが、configure するときに --prefix=/usr をつけわすれていたために、 /usr/local/h8300-hms/bin/as を呼びにいってしまって よべなくて /usr/bin/as を呼んで 大量エラー、なんてことになってしまった。 あうー。最初からかー。


Wednesday, October 14 1998

Wed Oct 14 01:01:12 JST 1998

ぐへー。 ようやく回路図書いて PCB に落とすことができた。 トランジスタの足の名前が 1, 2, 3 とは何事だ。 まったく。

クロスな egcs-1.1 のコンパイルうまくいかない。 libf2c なんてものを作ろうとして失敗しているようだ。 余計なものを作るんじゃない。

それにこれってさー。make -j 2すると途中でコンパイルが 終わっちゃうんですけど。なんで?

Wed Oct 14 05:31:37 JST 1998

他人のマシンの Linux のインストールを手伝ってやる。 いろいろはまったあげくにもうこんな時間だ。

Wed Oct 14 06:11:27 JST 1998

うひー、たまらん。

Wed Oct 14 06:22:52 JST 1998

はらがへったーっと緑のたぬきのふたをあけてみたーらー てんぷらがまっぷたあつにわれてーるーひーどーいー

Wed Oct 14 06:25:38 JST 1998

dual Pentium II 450MHz はやはり狂ったように速い。 カーネルの make が 2 分くらいで終わってしまう。 しかしながら make -j 2 してみると、 Clock skew detected とかだしまくって非常に不気味。 いままで使った SMP マシンではこんなことなかったけど (dual Pentium II 450MHz 含む)。 なんだろう。

Wed Oct 14 08:01:52 JST 1998

しょうがないから Accelerated X で解決しようとするが、 Accelerated X では NVIDIA のチップはまったくサポートされていないことを知り、衝撃を受ける。 弱いぞ、Xi Graphics。

15bpp でたちあげてみるとノイズがでないことがわかった。でもなんだかなあ。

Wed Oct 14 08:23:52 JST 1998

そーじきをかけた。 さっぱり。

Wed Oct 14 12:28:38 JST 1998

ねてたらろうかにすぐでたとこにある火災報知器がりんりん鳴ってうるさーい。 ってことで目をさまされた。火災報知器のテストらしい。 断続的にりんりんなりまくっている。 なんとかしろー。

Wed Oct 14 14:24:59 JST 1998

ひるめしをたべる。 うまれてはじめて農学部食堂でくったぜー。

Wed Oct 14 23:54:44 JST 1998

家に帰ったらふとんにくわれた。 うひーん


Thursday, October 15 1998

Thu Oct 15 01:12:28 JST 1998

chip/rohm6/avant1/filter2.str らしい。

Thu Oct 15 04:36:46 JST 1998

自動配線は頭わるくてこまるな。

Thu Oct 15 08:44:19 JST 1998

おはようさくせん。

Thu Oct 15 11:24:14 JST 1998

Protel98 の回路図をファイルに落として再利用できるようにするために、 Adobe Acrobat をインストールする。 Adobe Acrobat PDFWriter というのをインストールすると、 そういうことができるのである。 プリンタデバイスとして見えるようになるのだ。

がしかし、CD-ROM をつっこんでインストールしてみると、 NT では Acrobat PDFWriter はサポートされとらんからインストールできんという。 がががーん。

めげずにAdobeの WWW サイトにいってみる。 プラグイン&アップデータのところを探してみると、 果たして Acrobat PDF Writer 3.03J for Windows NT 4.0Jというのがあった。おお、やったあ。

さっそくダウンロードして実行してみると、 このアップデータとやらは単なる install shield なインストーラで、 このファイルだけで Acrobat PDFWriter 単体がインストールできてしまうことが判明。 必要なのは、 Adobe Acrobat の CD-ROM のケースの裏に書いてあるシリアルナンバーだけ。 ううむ、やってくれるぜ Adobe!! (ぉ

Thu Oct 15 11:33:47 JST 1998

というわけで試しにつくってみたのがこれ。 日本語入りなんで注意。実にきれいだ。すばらしい。 英語だけってのも作ってみた。 ちゃんと Linux の Acrobat Reader でも読めるぞ。

Thu Oct 15 15:20:38 JST 1998

ディスプレイケーブルを値段の高いやつに変えた。 両端が Dsub 15pin のだけど。 かなりましになったように思える。とりあえずゴーストが消えた。 しかしコマンドプロンプトとかはあいかわらず文字がつぶれ気味で みづらい。これは IO DATA 製 ViRGE/VX カードのつくりが悪いからだろうか。

Thu Oct 15 16:37:00 JST 1998

工作室の一部をかきまわして、基板加工機とめっき槽と露光機を設置した。 もうつかれた。はあはあ。

Thu Oct 15 18:46:44 JST 1998

めしを くつた

人気がなくなったら基板加工でもするかね


Friday, October 16 1998

Fri Oct 16 00:05:38 JST 1998

うげー。もう日付がかわったー。

先日にひきつづき、Debian のインストール指導をする。 今回のターゲットは Panasonic Let's Note mini AL-N4 である。

ところがしょっぱなの loadlin で kernel が panic をだしてあせる。 こういう現象を見るのはははじめてだ。 ハイバネーションのパーティションをつくったりこわしたりとかしているうちに 1 時間以上無駄にするが、 結局どういうわけか/dev/ram をマウントできずに /dev/hda1 とかをmount しにかかってるのが原因らしいことがわかり、 これはと思って loadlin の最後に mem=80M をつけたしてみたら、 無事起動した。いったいなんなんだ。

hamm のインストーラの pcmcia サポートを初めて経験する。 いやー便利になったものですな。 しかしながら、 みんなの持っていた新しめのカードはぜんぜん認識できなかったのが気になる。 なんでみんな、こういうマイナーなカードばっかりもってるんだろう。

Neomagic な X サーバは XFree86 で動くのがあるんだが、 よーわからんので Accelerated X Laptop Server に逃げる。 ただしここに 書いてあるとおり、Xi Graphics がだしているパッチをあてる必要があった。

ここらへんで少しつまづいた以外は、おおむねいつもどおりにさくさくと進んだが、 TeX をインストールして dhcpcd や nis や amd が動くようになるまで、 結局 5 時間くらいは費やしてしまった。 うーむ。

Fri Oct 16 08:22:35 JST 1998

ねておきた

Fri Oct 16 09:47:24 JST 1998

おはようさくせん。

Fri Oct 16 13:09:01 JST 1998

PC/104-plus な Pentium 133MHz モジュールの手配をする。 マシンを買いかえるなら NLX な PC がほしいなー。

Fri Oct 16 14:08:12 JST 1998

よーかんをたべる。

Fri Oct 16 16:30:40 JST 1998

あたらしい vhdl-mode を拾ってきて、SunOS5 な環境で使えるようにする。

Fri Oct 16 18:44:37 JST 1998

めしを くつた


Saturday, October 17 1998

Sat Oct 17 00:17:13 JST 1998

いままでぜんぜん気づいてなかったんだが、 Debian の /var/yp/Makefile によると、

# We do not put password entries with lower UIDs (the root and system
# entries) in the NIS password database, for security. MINUID is the
# lowest uid that will be included in the password maps.
# MINGID is the lowest gid that will be included in the group maps.
MINUID=100
MINGID=100
とある。研究室で昔から使ってきた passwd ファイルには、 UID が 100 より小さい人が 45 人くらいいて、 その人たちは Debian システムでは存在しないユーザとして扱われていた。 先生方 2 人もそのなかに入っていた。あう。

Sat Oct 17 09:08:33 JST 1998

うぐは
おおきた

Sat Oct 17 09:35:16 JST 1998

Emacs20 で、 ~/.emacs(auto-compression-mode 1)と書いておくと、 .gzなファイルも自動的に伸長してバッファに読みこんでくれる。 すばらしい。

Sat Oct 17 13:23:17 JST 1998

またすこし寝入ってしまう。せんせにおこされてめしをくいにいく。

帰りに生協購買部により、 私財を投じて台所用合成洗剤とすぽんじを購入。 ついでに Twinings のやすものの紅茶のはっぱも買った。 そんでもってほこりをかぶった食器やティーポットなどをざぶざぶ洗い、 ようやくお茶セットが復活した。 というわけでこれからいれる。うひひ

Sat Oct 17 14:33:27 JST 1998

Protel98 はプリンタ設定のダイアログボックスにファイルに出力 というチェックボックスがないので、 ファイルには落とせないもんだとばかり思っていたのだが、 ポートを FILE: というのにしたプリンタデバイスをいっこつくれば、 ファイルに落とすことができるようになるというこを 初めて知った。そんな方法があったのかー。 しかし NT には generic な PS ドライバがないのでいまいちつかえんな。 こいつの出力を eps にしてはりこんだりできるんだろうか。 なんか ghostview ではエラーがでて表示できんし。

Sat Oct 17 14:38:47 JST 1998

NT の generic PS ドライバに関して、wmf2eps というプログラムがあることを おしえてもらう。FTP search でぼろぼろ見つかった。 わりと有名なソフトらしい。 これの中に NT generic PS プリンタドライバがあるとかなんとか。

Sat Oct 17 15:03:56 JST 1998

いろいろ昔やって、できなかったことを思いだしつつある。

まず、 NT4 用の PS ドライバと各種 .ppd ファイルは、 Adobe のサイトにいくと Adobe PS 5.0 とゆーのが落ちているので、まずこれを拾ってくる。 こんなかには default PostScript Printer とかいう名前の .ppd ファイルが同梱されているので、 とりあえずこいつを使ってポートを FILE: にしてインストールする。 ファイルに落とすにはこのプリンタを選択すればいい。

んで次に、 自分が使っているプリンタの.ppdファイルを こっから拾ってきて、インストールすれば OK である。たぶん。 いろいろわかめなんだが、でてくるダイアログボックスに書かれている英文をちゃんと読めばまあなんとかなる。ので、人に聞く前にきちんと読むようにしましょう。

Sat Oct 17 15:13:24 JST 1998

んでテスト印刷してみるが、出力結果はOffendingCommandとかなんとか いう文字がでているだけで正しく印刷されなかった。しくーん。 この AdpbePS 5.0 というのが英語版だからか?

NOTE: AdobePS 5 does not support PostScript Level 1 printers. To determine what level of PostScript is included with your printer, see your printer's documentation or contact your printer manufacturer.
と書いてあるのも気になる。うーん。

Sat Oct 17 15:33:39 JST 1998

/VM? とかいうコマンド?を実行してエラーになっているように 見うけられる。これって Level2 コマンドのこと?

Sat Oct 17 15:44:02 JST 1998

うーん。なんつーか、だめだこりゃ。 あきらめるか。

Sat Oct 17 21:20:13 JST 1998

はらへったん


Last modified: Sat Oct 17 21:20:17 1998