アクマくんにお願い:2000年01月上旬

Last-modified: Thu, 27 Jan 2000 05:32:42 JST

[static,style:furuta,jconv:jcode,cache:on]
powered by tds-Tomsoft Diary System 1.01-beta0


[トップ(一覧)] [最新版] [<<前月] [今月] [翌月>>]

2000年01月01日()

謹賀新年

皆様、明けましておめでとうございます。 今年もよろしくお願いします。

初詣

今年は Y2K 関連で帰省できないので、近場で済ますことにする。 朝霞台からバスで平林寺へ。 そこそこ有名な寺で、臨済宗妙心寺派なので、宗派的にも問題ないぞ。 参拝して、境内を散策する。境内を一周するだけで小一時間ほどかかった。 これだけ広大な雑木林が住宅地(いや、市街地かも。新座市役所の対面にあります) の真中にあるのは、相当貴重なのではないかと思います。 その後、甘酒と山菜そばを食べて、帰宅。

TV

初詣から帰宅後は教育 TV 三昧。 午後5時ごろから、終日教育 TV だけを見ていた。 これも正月ならではと言えましょう。

Y2K

うう、他人事ではなかった。 某 ML の実装に使っている自作プログラムに千年虫が発覚する。 まあ、日付の表示がおかしいだけで あまり実害は無さそうなんですが、恥かしいのでさっそく修正。

インストール地獄

そうそう、 そういうふうに何やってもマザーボードが起動しなくなった時には、 普通 CMOS をディスチャージするもんだと takehiro さんからツッコミ。 あぅ、知りませんでした。 結構馬鹿。ちょっと想像力を働かせれば容易に想像できようというもの。


2000年01月04日(火)

subscribe

入院前に unsubscribe していたら、 世界の様子がさっぱりわからなくなっているので、 いろいろ subscribe した。 うーむ、また多量のメールに追い回されるのか。

esp

junichi さんの AM53C974 CAM ドライバをベースに、 PAO3 に移植してみる。 ncv 系と AM53C974 は NCR53C9x 系の上位互換チップなので、 バス依存部分だけごしごし書いて、 バス独立部分は共通に使えるハズなのだが... AM53C974 CAM ドライバはバス依存部分とバス独立部分が 一つのファイルにしてある。 まず、これをきちんと分離するところから始める。:-p PAO2 の ncv (いやあ、完璧に忘れてるなぁ)を参考にしつつ、 aic_pccard.c の土台に、 NCR53C500 依存の部分をこねこねする。

とりあえず probe/attach は成功しているように見えるが (というか、無理矢理成功させた?)

$ camcontrol reset esp0 $ camcontrol rescan esp0

でプロセス固まってお亡くなり。はやや。 rescan せずに抜くと問題なく抜けるし、 bus reset はうまくいってるっぽいけど、原因究明はこれから。 なんかまだ全然っぽい。

232C クロスケーブルを引っ張り出して、remote GDB 環境を作る。 いやぁ、素晴しい環境だわ。

ちなみに、ブツは ここ(esp-cam-20000104.tar.gz)。まだ動くシロモノじゃないから、持っていっても意味ないのだ。 ドキュメントも何にもないから、 どうやってコンパイルしたら良いのかもわかんないぞ。 その辺は動き出してからでもいいっしょ。 いや、scsi_low が CAM 化されれば、 多分不要になるものなので、 ドキュメントも書かない可能性大だけどもね。


2000年01月05日(水)

esp

以前 qlogic から取り寄せた FAS408 のマニュアルをにらめっこしつつ、 ncr53c9x.c と格闘。 ncr53c9x.c を読む限り、ESP406 と FAS408 はかなり近いのだが、 これと NCR53C500 は微妙に隔たりがあるみたい。 ncv は NCR53C406 と NCR53C500 のドライバで、 型番やら以前 SYMBIOS から入手した資料から想像する限り、 NCR53C406 は ESP406 のセカンドソースと見て問題なさそうだが、 NCR53C500 はちょっと違うような気がする。

remote gdb で CAM のコードを追いかけて、 camcontrol の rescan の死因を追及する。 単純に割り込みを拾えていないような気がする。 esp0 の initialize で SCSI の bus reset コマンドを行っているのだが、 bus reset 終了の割り込みが拾えていないので、 ドライバはまだ SCSI bus が reset phase (って言うんだっけ) 中 だと思い込んでいて、bus idle でないので、 probe の為の selection phase に入ろうとしない、ようである。 とりあえず、割り込み回りを重点的に攻撃してみよう。

scsi_low

scsi_low の CAM 化は、おそらく FreeBSD(98) サイドよりも PAO サイドの方が深刻でしょうね。 とりあえず、現状でも bs は何とか動作はしている訳ですし。 まぁ、CAM まわりの経験値を積むためにとりあえずは esp の作業をしているのですが。 きっと、今月中に手をつけるのは絶対に無理です。\

告知

「アクマくんにお願い」の公式ページを (http://angel.bsdclub.org/d/)へ移行します。最新版は (http://angel.bsdclub.org/d/recent.html)です。 旧 URL (http://www.but-b.or.jp/~furuta/d/)の方も当面、ミラーとして残しますが、bookmark や日記更新エージェント等 常用するリンクはできましたら修正してもらえると助かります。


2000年01月06日(木)

日記 URL の移行

とりあえず、日記更新エージェントの管理者の方々にメールを書いた。

で修正されているのを確認しました。 お手数をおかけしました。 どうもありがとうございます。

ところで、 日記猫で更新時刻が「0000/00/00 00:00:00」になっちゃってるみたいなのですが、 何かマズかったでしょうか?

esp

何か参考になる資料がないかいろいろ探すが、 あまりめぼしいものは見つからず。 Symbios が LSI Logicに買収されてしまったのが痛い。 (http://www.symbios.com/)(ftp://ftp.symbios.com/)も使えない。 以下、特に (ftp://ftp.symbios.com/pub/standards/io/)は資料の宝庫だったんですが、もはや後の祭りですな。

何かの参考になるかもしれないので、 Linux の sym53c500_cs-0.2.tar.gz を拾ってくる。

さて、問題の一つは割り込みにあるようなので、 割り込み関係の設定を調べる。 手元の FAS408 の資料によると、 Configuration 5 register の bit2 が SCSI Interrupt Enable なので これが怪しい。しかし、esp のコードを読んでみてもちゃんと 設定しているようにしか見えない。 (あと、bit1 の INT Polarity も怪しい) このあたり、いろいろ試してみても全然割り込みがかかってくれない様子。 変だなあ。

ncv の方のコードを読んでみると、もっと謎。 flag の 32bit 中、上位 8 bit が Configuration 5 register に設定されるコードになってるんですが、 MIRACLE SCSI II などほとんどのカードでこの値が 0 なんですよ。 これで何故割り込みがかかる? なぜ PAO2 時代には ncv が動いてたんでしょうかね?

sym53c500_cs-0.2 の方も読んでみよう。 こっちは Configuration 5 register に 0xa4 を入れてるから 割り込みかかるはずだね.... ふうん、Configuration 7 register まであるのか。 増えた分はどこに置いておくんだろうね... ちょっと待て。 この Configuration 7 register のアドレスは Configuration 5 register のアドレスじゃない!?

いや、そうじゃない。 ncv と sym53c500_cs-0.2 とで Configuration 5 register のアドレスが違う!? ncv は baseaddr+0x0d (これは FAS408 の資料の通り) だが、 sym53c500_cs-0.2 のコードは baseaddr+0x09 だと言ってるよ。なにこれ?

うむむ、53c406 と 53c500 は同じだと思ってたんですが、 sym53c500_cs-0.2 のネーミングが正しいとすると Configuration 5 register は 53c406 -> 53c500 で 移動した、つーことかいな? そう思って ncv のコードを読んでみると、 baseaddr+0x09 (ATA Command register) に 0x24 を放りこんでるな。何これ? sym53c500_cs-0.2 とは最上位ビット以外同じですね。 試しに、チップリセット後に baseaddr+0x09 に 0x24 を 放りこむようにしてみる... 一発大正解。

以下、script と /var/log/messages を元に編集したもの。

bash-2.02# camcontrol devlist -v
scbus-1 on xpt0 bus 0:
<  >                               at scbus-1 target -1 lun -1 (xpt0)
bash-2.02# Card inserted, slot 0
pccardd[59]: Card "MACNICA"("MIRACLE SCSI-II mPS110") [A.0.0.0] [(null)] \
matched "MACNICA" ("MIRACLE SCSI-II mPS110") [(null)] [(null)] 
card0: assign esp0 iobase 0x330 irq 10
esp0: no sync, parity
: NCR53C500, 24MHz, SCSI ID 7
 MACNICA Miracle SCSI-II inserted
bash-2.02# camcontrol reset esp0
Reset of bus 0 was successful
bash-2.02# camcontrol rescan esp0
(da0:esp0:0:2:0): got CAM status 0x11
(da0:esp0:0:2:0): fatal error, failed to attach to device
(da0:esp0:0:2:0): lost device
(da0:esp0:0:2:0): removing device entry
Re-scan of bus 0 was successful
bash-2.02# camcontrol devlist -v
scbus-1 on xpt0 bus 0:
<  >                               at scbus-1 target -1 lun -1 (xpt0)
scbus0 on esp0 bus 0:
<iomega jaz 1GB G.60>              at scbus0 target 2 lun 0 (pass0)
<  >                               at scbus0 target -1 lun -1 ()
bash-2.02# esp0: unload
Return IRQ=10
Card removed, slot 0
Slot 0, unfielded interrupt (0)
 MACNICA Miracle SCSI-II removed
bash-2.02# camcontrol devlist -v
scbus-1 on xpt0 bus 0:
<  >                               at scbus-1 target -1 lun -1 (xpt0)
bash-2.02# exit

jaz のプローブに失敗しているのは、 メディアが入れてないからかなぁ。 とりあえず、camcontrol devlist で見えるから INQUIRE に成功しているのは間違いない。パチパチ。 コーディング2日、デバッグ2日です。

とりあえず、ブツは ここ(esp-cam-20000107.tar.gz)に置きました。 多分、3.4 の PAO3 で動くと思いますが、説明、ドキュメント等全くありません。 持っていく人は AS IS でね。 不特定多数に配ったり、 公の場所でアナウンスしたり、 公の場所に commit したりするのは待って下さい。

しかし、baseaddr+0x09 の謎はまだ解けておりません。 本多さんとか知ってるんだろうか? 聞いてみる必要あり。

げげ、もうこんな時間(30:02)。眠いよぅ。お休みなさい。


[トップ(一覧)] [最新版] [<<前月] [今月] [翌月>>]

このページは、

Copyright(C) 1999,2000 Atsushi Furuta <furuta@bsdclub.org> All rights reserved.