日記 (2004年水無月)

日記の表紙前月(皐月)翌月(文月)
2004年6月1日(火)
晴れ。

o termination power のセンスができないのは、きっと線が配線されていないんだろう (CardBus だから供給できないし)、ってことで気にしない方向で。

2004年6月2日(水)
晴後曇。

o 固定IPv4アドレスをGET。これで一時的に PPPoE セッション切れても TCP 切れない…かどうかは微妙か。

2004年6月3日(木)
晴れ。

o うーん、Data In が動かない…。

cardbus_read_exrom: bad header signature in ROM image 0: 0x0000
cardbus_attach_card: failed to read CIS
nsp0 at cardbus0 dev 0 function 0: Workbit NinjaSCSI-32UDE DualEdge SCSI adapter
nsp0: interrupting at 10
scsibus0 at nsp0: 8 targets, 8 luns per target
scsibus0: waiting 2 seconds for devices to settle...
sd0 at scsibus0 target 6 lun 0: <, , > disk fixed
sd0: fabricating a geometry
sd0: 1062 GB, 1088010 cyl, 64 head, 32 sec, 512 bytes/sect x 2228246209 sectors
sd0: async, 8-bit transfers
sd0 detached
scsibus0 detached
nsp0 detached

こんなディスクがあったら欲しいが、つながっているのは CD-ROM ドライブ。 inquiry データが読めてない。

2004年6月4日(金)
晴れ。

o Status byte を読むようにしたら全部 0x02 (Check Condition)。むむ?

ふとコマンドまわりをチェックしたら、CDB をポインタで持ってくる所に余計な & があった(汗)。取ってみた。

nsp0 at cardbus0 dev 0 function 0: Workbit NinjaSCSI-32UDE DualEdge SCSI adapter
nsp0: interrupting at 10
scsibus0 at nsp0: 8 targets, 8 luns per target
scsibus0: waiting 2 seconds for devices to settle...
cd0 at scsibus0 target 6 lun 0: <PIONEER, CD-ROM DR-U24X, 1.01> cdrom removable
cd0: async, 8-bit transfers

おおっ?

2004年6月5日(土)
晴れ。

o 自転車の虫ゴムを、この間買ったやつに替える。生ゴムのやつはすぐダメになるな…。

o 買い出し。暑い。

o SCSI いじり。disconnect → reconnect した後が動かない…。 このへん仕様分かんないよう。

2004年6月6日(日)
曇時々晴。朝方と夜に雨。

梅雨入りらしい。

o あやめ池遊園地閉園かー。結局行かなかったなあ…(笑)。

o gqmpeg の skin をいじって helveticalucida* に書き換えて日本語が出るように……タイトルだけ出ない。なんでや。

o SCSI いじり。あ、リコネクトまわりのコード書いてないや。てへっ(←…)。

2004年6月7日(月)
曇時々雨。昼頃に雷雨。

o リコネクトした後動かないよう…。

o gqmpeg の skin いじり。さらに bold* を書き換えたらタイトルも読めるようになった。

2004年6月8日(火)
曇時々雨。涼しい。

o なんとなく分かった。COMMAND_CONTROL のレジスタと、auto param の DMA で読ませる該当フィールドとは、どっちかを使うようにしないとダメらしい。

つうわけで、とりあえず常に auto param を使うようにしてみた。

わーい、リコネクト後も動くようになった。 試しに CD-ROM を mount してみたら見えた。まだ未実装部分がいっぱいあるけど…。

2004年6月9日(水)
曇時々晴。

o 展示会の粗品で折畳み傘をGET。しょぼいけど軽いのでかばんに入れとくか。

o 6連装 CD-ROM ドライブを試してみたら Check Condition 喰らいまくりで動かん。

2004年6月10日(木)
曇。蒸し蒸し。

o あぶく銭GET。しぶちん。

o scsipi(9) 層のソースを調べる。 xs->statusSCSI_CHECKxs->errorXS_BUSY だと、ドライバ側で Request Sense しなくても scsipi が自動的に Request Sense を発行してくれるらしい。

んなもん分かるカー。確かにマニュアルにあるんだが、XS_BUSY って名前では…。

6連装 CD-ROM ドライブも動くようになった。

CD-ROM ドライブ(連装でない)で cdparanoia で吸い出すとぷちぷちノイズが乗るが、これはドライブのせい?

2004年6月11日(金)
雨→風。

o がーそ、追い出されX。けちー。

o なんかデータ化けすると思ったら、DMA の scatter/gather テーブルを Save Pointers で更新するときに、バイトカウントだけ更新していてアドレスを更新してない…。

…修正。DA 吸い出しのぷちぷちノイズも消えた。疑ってごめん >ドライブ。

2004年6月12日(土)
雨。時々曇。

o 反応があったので hp700 の sdboot いじり。

2004年6月13日(日)
雨。時々曇。

o 8byte 削れることが分かったので日刊 sdboot (アナウンスしてないが)。

oSCSI-2 詳細解説』を見つつ SCSI ポインタまわりを書き直し。ふむふむ。

つかこの本、絶版かよ。これが無かったらどうやって SCSI ドライバを書けと……え、もう書きませんかそうですか。

o I-O DATA の TX86 (6連装CD-ROMドライブ)って、disconnect しないみたいなんだが SCSI デバイスとしてどうかと…。 CD を交換している間もバス占有…。

2004年6月14日(月)
晴れ。どんどん気温が上がる…。

今日は日の出の時刻が一番早い日らしい。

o 整合性チェックコードを入れておいたらいろいろバグが露見したので修正(汗)。

o ちょっとだけ boot いじり。

o なんか左腕(の一部)の感覚が変。

2004年6月15日(火)
からっと晴れ。

o hp700 の primary boot を commit。 このへんのコードもちょっと残ってる(笑)。

o 左腕はだいたい治ったみたい。

2004年6月16日(水)
晴れ。

特に意味はないが前にてけとーに登録していたので休み。

o バスリセットまわりを書く。 自分でバスリセットしたときにはバスリセット検出の割込みは来ないらしい。

パリティエラーまわりをちょっと書いてみるが、 入力側だけでパリティエラーを起こすのが難しいのでテストできん…。

次は AutoSCSI の restart 関連かな…。

2004年6月17日(木)
晴れ。ちょっと雲が増えてきたかな…。

o 最初にコマンドを投入するときとリコネクト時とで auto param を使って、 それ以外はふつうに restart するようにすればいいんかなあ…。

2004年6月18日(金)
晴後曇。暑い。

o AutoSCSI の restart まわりをいじる。

2004年6月19日(土)
晴後曇。夜になって雨。

o テスト用のマシンが ifconfig up で落ちまくるので試しに cvs update してみたら直った。pool まわりがバグってたか。

o CLEAR_CDB_FIFO_PTR のフラグは auto param で読ますだけだとダメなときがあるようだ(よう分からん)。 レジスタと両方に付けてみる。

o ふと Sun の HDD をつないでみる。phase 遷移がおかしい…。 ……これは、ロジアナの出番てやつ? (汗)

2004年6月20日(日)
晴時々曇。気温も湿度も高くてむわっとする。

o あきらめてロジアナ出動。

うーむ、なんか Message In での ACK の返送がうまくいってないような気分…。

o あう、未テストだった tagged queueing のコードが発動している模様。

o むむ、2byte 以上の Message In が読めないみたい。 Identify だけだったのでなんとなく動いていた模様。

2004年6月21日(月)
台風6号で暴風雨。夏至。

夕方には曇。ニイニイゼミが鳴いてるな…。

o Message In フェーズ中はずっと連続して処理するようにしてみた。 おっ、なんとなくタグ付きキューイングができてるな。

デバッグ用の printf(9) を外したら動かなくなった………。

2004年6月22日(火)
晴時々曇。

o Workbit な SCSI いじり。 ロジアナで取得したデータを見る限り、Inquiry コマンドの コマンド発行→Disconnect→Reconnect→Data In は正常に動作しているように見えるなあ。でも Inquiry データが取れない…。

Pioneer の CD-ROM のは取れるんだが、Sun の HDD (中身は Seagate) のはダメ。

わかんないよう。うわあん。

2004年6月23日(水)
曇時々晴一時雨。暑い。

o SCSI いじり。うーん。

2004年6月24日(木)
曇。

o なんとなく動いたー。

nsp0 at cardbus0 dev 0 function 0: Workbit NinjaSCSI-32UDE DualEdge SCSI adapter
nsp0: interrupting at 10
scsibus0 at nsp0: 8 targets, 8 luns per target
scsibus0: waiting 2 seconds for devices to settle...
sd0 at scsibus0 target 4 lun 0: <SEAGATE, ST11200N SUN1.05, 9500> disk fixed
sd0: 1005 MB, 1872 cyl, 15 head, 73 sec, 512 bytes/sect x 2059140 sectors
sd0: async, 8-bit transfers, tagged queueing
cd0 at scsibus0 target 6 lun 0: <PIONEER, CD-ROM DR-U24X, 1.01> cdrom removable
cd0: async, 8-bit transfers

どうやら、AutoSCSI を restart する時は auto param は使えないらしい。 これって限りなくバ(略)に近い仕様? わざわざ auto param の DMA 構造体を作ってもリコネクト時に再利用できないんじゃなあ…。

あと、Message In フェーズ中はずっと連続して処理 するのはダメで、(1) メッセージは 1byte ずつ処理する、 (2) メッセージの 2byte 目以降を受けるときには 00&04 / 02 の自動処理を切る (そうでないと AutoSCSI に食われてしまう)、てな感じでいいらしい。

次は同期転送かな。

o 出入りの眼鏡屋さんにネジの取れたフレームの応急処置をしてもらった。 合うネジが無かったのでナット付き。

2004年6月25日(金)
雨。風も吹いてるんだが気温も高い。

o 選挙の通知書が来た。

o あれー、昨日動いたのにちょっといじったら動かなくなった…。

あー、しょうもない所にバグが…(汗)。

2004年6月26日(土)
曇時々雨。

o Message Out まわりを書き直し。割と広範囲に。

HDD と CD-ROM ドライブを同時に動かすと固まる…。ダメぢゃん。

うーん、よく分かんないなあ。

2004年6月27日(日)
曇一時雨。

寝まくり。

o wsconsctl -w map+='keycode 58 = Cmd1 Control_L' とやって CapsLock を Control にしていたのだが、 CapsLock-Alt-Esc で ddb(4) に入れない。 なんか Esc が入らないみたいだが、これはこのマシンのキーボードの仕様?

仕方ないので keycode 219 = Cmd Meta_L として、Windowsキー-Esc で ddb に入れるようにした。便利(ぉぃ)。

o SCSI いじり。バグ見つけたー。

Arbitration に失敗した時に、cmd 構造体を リトライのためにコマンドリストに戻すんじゃなくて、空きリストに入れていた…。 直したらバッチソ。

つうわけで書き掛けドライバ。 大事なデータが入ったディスクを壊したりしないように注意。 そういや書き込みのテストってしてないなあ(マテ)。

2004年6月28日(月)
曇後晴。

o アクセス LED の制御めんどくさい…。 CardBus は LED 付いてないから見なかったことにするか(ぉぃ)。

2004年6月29日(火)
晴れ。暑い。

o 動いている(ディスコネクト状態も含む) cmd の数を数えるようにして LED を制御するようにした。LED 付いてないので未テスト。

簡単な HDD の書き込みテストをしてみた。書けるみたい。

2004年6月30日(水)
晴れ。

o N+I 2004 BSD BOF を IRC とストリーミングで。

o …見ながら SCSI いじり。 DualEdge (仕様がよく分からんのでテケトー)と同期転送まわりをふにふにと書く。

Sun の HDD を dd してみたが謎のエラー(parity error?)。 調べたら、ターゲットから返ってきた SDTR を reject していた…。 ネゴの手順からいうとこの reject は無視されるんだろうが、 無視されなくても文句言えないか…。修正。

o つうわけでこんな感じ。

nsp0 at cardbus0 dev 0 function 0: Workbit NinjaSCSI-32UDE DualEdge SCSI adapter
nsp0: interrupting at 10
scsibus0 at nsp0: 8 targets, 8 luns per target
scsibus0: waiting 2 seconds for devices to settle...
sd0 at scsibus0 target 4 lun 0: <SEAGATE, ST11200N SUN1.05, 9500> disk fixed
sd0: 1005 MB, 1872 cyl, 15 head, 73 sec, 512 bytes/sect x 2059140 sectors
sd0: sync (100.00ns offset 15), 8-bit (10.000MB/s) transfers, tagged queueing
cd0 at scsibus0 target 6 lun 0: <PIONEER, CD-ROM DR-U24X, 1.01> cdrom removable
cd0: sync (100.00ns offset 8), 8-bit (10.000MB/s) transfers

cd0 からの読み出しを見てみた(波形は正論理)。同期転送になってるぽい。 ターゲットの転送速度が 100ns よりちょっと速いように見えるのは気のせいかしらん。 イニシエータの転送能力は 250ns (4MB/s) くらいか。

うーん、Sun の HDD からたくさん転送していると固まる…。

日記の表紙前月(皐月)翌月(文月)
ITOH Yasufumi