NetBSD/hpcmips 愛好者たる私は、kernel が起動したという情報を得た ため、当然のごとく購入。
なんに使うかと言えば ... 開発 および NetBSD リファレンス および 家サーバ マシン ... の予定。
MIPS を使った その他の ルータ。
その他 興味があるルータ/小型マシン
インストール苦戦記
用意したもの
まずは、モバギに 2.5inch HD を接続し、
... NetBSD/hpcmips 1.5.2 をハードディスクにインストールする。
これは... まあ正規の手順でインストールを行えば、よい。
注意点としては、ちゃんとセットアップすること。
私は、20GB の IBM のハードディスクを使うことにしたが、
特に問題なく インストールは、できたようである。
Setup は不十分で、実際困ったのが上の注意点。
上のような環境をもっていない人は残念ながら、現状ではインストールできない。 ... と思う。
02/02/12 までの ステータス
とりあえず login できるようになって、環境のセットアップを開始。
最低必要そうな package をいれる。私は
Canna-lib-3.5b2.tgz ja-less-358.tgz Canna-server-3.5b2.tgz jpeg-6b.tgz bash-2.05nb1.tgz lha-114f.tgz gdbm-1.8.0.tgz libungif-4.1.0.tgz gettext-0.10.35nb2.tgz png-1.0.12.tgz gettext-lib-0.10.35nb1.tgz readline-4.2.tgz gettext-m4-0.10.35.tgz ruby-1.4.6.tgz gmake-3.79.1.tgz screen-3.9.10.tgz
をいれた。
次に package にないツールを make する。
make する予定なのは、
bash-1.14.7 ( スタティックリンクして /bin にいれる ) ng-1.4.3 jvim.1.7a (vim-3.0 ベース) mnews-1.22
とりあえずは、これだけないとなにも作業できない。
があぁん。ROM が こわれちゃったyo。
ICW1_1:11ICW2_1:00ICW3_1:04ICW4_1:01OCW1_1:00OCW1_2:00OCW1_3:4aend
までしか出ずにブートでけん。篠原さんの現象と一緒。あぁあ。
なんとかならんのだろうか? ... ROM はさせる。ここになんか焼いて させばなんとかなったりするのか。
焼くべきものはなんだろう。ひょっとして Grub?
2/21
とりあえず、2つ目注文。でも おなじことをすればおなじ結果になるのは 目に見えている。
壊さないような、なにか ... ジャンパーを見付けるとか したい。 あと、壊れたやつの復活方法も考える。
とりあえず 基板をしげしげと見る。こいつには、42 pin のROM 2つを さすことができる。
IC1 Lower / IC2 Upper M27V160-100XF1
なんて印刷がしてある。3 本のピンがある JP1 というのが、ROM のそばにある。
... なんとなく、ROM 切替えっぽいが...
さらに、ピンがない 穴だけの JP2 というのも ROMのそばにある。
それ以外には、JP というネーミングのものはないようだ。
さらに ... intel の Flush ROM があるが、それ以外に、ROM のようなデバイス は全くない。
ROM を 壊したら、なんらかのデバイスを持っていないかぎり復旧不可能 というのは明らか。
とりあえず、M27V160 とは... 購入可能かつ書き込み器をなんとかできるもの なのか ... 調べてみよう。
SGS-THOMSON: LOW VOLTAGE 16 MEGABIT (2MEG X 8 OR 1MEG X 16) UV EPROM AND OTP EPROM
なんかこういうものらしい。2個で4MB 。
む。ROM なんて、それそのものでなくていいはず。電気的なインターフェイスが
わかれば、別の物で代替するとかも 可能か -- 。
復活の呪文をとなえるためには、4MB も必要ない。NIC ドライバをもった
ブートローダ ... が動けば良い。
そういえば 16K ぐらいの ROM ソケットが付いた NIC ボード が普通なんだから、
128KB も あれば普通なんとかなるだろう。32bit 必要だから、16bit ものなら、
やっぱり 2 個必要 ... か。
そういえば、CN-2 JTAG とかいう 6 穴(= pin なし)のコネクタも存在する。 これ何だろう ... ちょっと気になっている。Flush に書き込むための ものとかいう 落ちだと嬉しいんだが。
* to program data into flush memory * to access an IC Device
JTAG ってなんか検査用の規格らしいという知識しかなかったけども ... そういうことができるわけか。
JTAG と Utility で検索するとなんやら 見付かる。PC と JTAG コネクタを 接続するような ケーブルがあるようだ。
ひょっとして NEC から ユーティリティがダウンロードできたりして... JTAG ケーブルを なんとかすれば、良いんじゃなかろうか。
ふうむ。これをさらにキーにすると。
よくわからないけども ... Vr4122 のマニュアルには、JTAG に基づ くインターフェイスという記載がある。互換性があって、拡張された機能が あるだけかも知れない。
よくわからないけども、JTAGを扱えるもので、GPLでソースコード公開 している。
ケーブルは、PC の パラレルポートで接続し、間に 信号レベルを合わせる ためのバッファが必要。
信号線は、5つ。グランドで 6 つだから L-Router と 数は合う。
これか。これ使うと 復活の呪文が唱えられるのか?
すぐわかる問題は...
ひとつ目は、たぶん 他の JTAG ケーブルのを参考にすればできそうだ...
まあこんな感じ。
さて、これらの信号がどう接続サレルノダロウ?
ここまでの情報をまとめると。
____ TCK TMS TDI TDO TRST GND(6)
覚悟を決めて試行錯誤しないといけないところは 残っているが、 なんとかなるかも知れない。希望が出て来たというところか。
2/23
とりあえず ... JTAG 端子の電圧を計る。
1 -4 3.33V 5 0 V
む、1 つだけ違う。
京都コンピュータの接続図から判断すれば、TRST だなぁ。
____ TCK TMS TDI TDO TRST(5) GND(6)
ということか。 A_Brief_Introduction_to_the_JTAG_Boundary_Scan_Interface によると
ということらしい、要するに TRST をなんかすると 使えるようになる。 で、TCK を ON/OFF してデータをいれたり とりだしたりする。 TMS を ON/OFF して、どのデータをどうするかを 決める。 データそのものの出入口は、TDI/TDO 。
とにかく... 4つの 不明なピンがあって、どれかが 出力で 他の 3 つは入力。 出力だけは、確定できないと 先に進めなさそう。
京都マイクロコンピュータのコネクタ上の順番を当てにして予想すれば、1 番から
____ TDI -- TCK -- TMS -- TDO -- TRST
だが... そんなの当てにならないか。TRST を 1 にしてみれば... 出力だけ 状態が変わるかもしれない。負論理でないみたいだし。
さて、ianjtag では、何をどうやっているのか → ianjtag でまとめることに
ROM ソケットに なんか指せないだろうか ...
これはこれで、
が必要だという結論。
さて、あの Morphy-one で有名な モルフィー企画 でとても似たものが あることがわかった。
うーん。なんかいい線いっているんだが、そのままでは、 L-Router の M27V160 には使えない。
データは全部公開しているので、自分で基板を発注する気になれば.... 望みのものは手に入りそうだが ... ExpressPCB データって何? 状態だからなぁ ... ちょっと無理か。
6/12 記
実物をしげしげと見てみる。
ROMwriter の製作
ROMBoardの製作
おもったより簡単であった。これで、0.5mm ピッチといえども 半田つけは恐くなくなった。
つぎは、本当に ROM が見えるか、焼けるか 確認する。... でも ちょっと 勇気がいる。... というわけで 1回やすみ。
確認をしようとして、Windows 2000 で ROMwriter のプログラムを 動かしてみた。
というわけで、USB-IO 用の Linux のドライバ を使って確認してみることに。
まずは、/proc/bus/usb/devices の確認から。
|T: Bus=01 Lev=03 Prnt=04 Port=02 Cnt=02 Dev#= 8 Spd=1.5 MxCh= 0 D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Vendor=0bfe ProdID=1003 Rev= 0.01 S: Manufacturer=Morphy Planning S: Product=generic USB IO ver.2 C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=100mA I: If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=00 Prot=00 Driver=hid E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl= 4ms
T: Bus=01 Lev=03 Prnt=04 Port=02 Cnt=02 Dev#= 9 Spd=1.5 MxCh= 0 D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Vendor=0bfe ProdID=1004 Rev= 0.01 S: Manufacturer=Morphy Planning S: Product=USB ROM Writer C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=100mA I: If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=00 Prot=00 Driver=hid E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl= 4ms
さて、汎用 USB-IO 用のドライバは、0x1004 だから linux のドライバの 制御対象になる。
やっぱり、後者の方が確かなものが作れるきがする。
Windows の ROM writer プログラムで 動作確認したかったのだが、 動かないものは、しょうがない。USB-IO ドライバというベースもあるし、 VB 版のソースもあるし、気が楽だ。
ドキュメントを読むと 汎用 USB-IO とは かなり違う。 次のコマンドがあって、ROM Writer 専用になっている。
あ、注意点として、ROM の抜き差しをするときは、電源を切らないといけない らしい。
コマンドの詳細 (VB のソースから)
0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00を ReadAndWriterToDevice
0x32, A23-A16, A15-A8, A7-A0, 0x00, 0x00, 0x00, 0x00を ReadAndWriterToDevice し、ReadBuffer(4)... ReadBuffer(7) の 4バイト を読みこむ。
0x33, A23-A16, A15-A8, A7-A0, DATA0, DATA1, DATA2, DATA3を ReadAndWriterToDevice する。
0x34 , A23-A16, A15-A8, A7-A0, 0x00, 0x00, 0x00, 0x00を ReadAndWriterToDevice する。 セクタアドレス の表現はよくわからない。
0x01 xx : ポート0 に ライト 0x02 0x : ポート1 に下位 4bit をライト 0x03 : ポート0 リード 0x04 : ポート1 リード 0x10 xx: P0 に書き込み P1_0 をパルス。 0x11 xx: P0 に書き込み P1_1 をパルス。 0x12 xx: P0 に書き込み P1_2 をパルス。 0x13 xx: P0 に書き込み P1_3 をパルス。 0x14 : P1_0 をパルスしながら P0 リード 0x15 : P1_1 をパルスしながら P0 リード 0x16 : P1_2 をパルスしながら P0 リード 0x17 : P1_3 をパルスしながら P0 リード 0x30 a2 a1 a0 0x00 : 1 バイト読みこみ 0x31 a2 a1 a0 xx : 1 バイト書き込み
?? 0x00 をつけて HID に WriteFile 20 ms ? まつ ... なんかよくわからん。
Linux の USB-IO のドライバを見てみる。
6/29 今までよくわからなかったのだが、usb_set_report というのは、 set_report というコマンドを コントロール用エンドポイント(#0) に 対するコマンドであった。これで 8 バイトを送り込む。 Write の場合は、もどり値を見ない。 Read の場合は、エンドポイント(#1) に データが 8 バイトでてくるので それを読みこむ。
ここらへん ごにょごにょしていけば、なんとかなりそうだ。
02/06/24
ROM writer 動作確認は 進捗ないけども、L-Router 用 ROM ボードを 設計してみた。L-Router に直接挿すために
という工夫をしてみた。
これ OLIMEX に発注すれば。 復活用 ROM を 欲しい人に配れたりするかも。( 動くかどうかは 未確認なので 、動くのならという条件がある) ただ、ROM ライターもっていないと 自由度がかなり減る。 やっぱり モルフィー企画の USB ROM ライターが ROMライターを 最も安く手にはいる方法ではないかと思う。
6/29
ROM Writer
USB-IO ドライバをどう変更すれば良いか分かって来た。
通信の部分は、
s->buf の 8 バイトにデータを入れる。 s->buf[0] はコマンド。 usb_set_report(s->dev, s->ifnum, 0, 2, s->buf, 8); musbio_read_data(mf); s->iBuf の 8 バイトにリードしたデータが入っている。 s->iBuf[0] は、set_report したデータと同じ。 s->iBuf[1-3] は、最後に読んだアドレス
.... なんか変だ。
read data がいつでも どの場所でも ほぼ同じ。 write を出すと帰ってこない。次のコマンドで、timeout してしまう。
あぁ。ちゃんと ROM Writer が作れていなかったのかも。
とにかくボードの ROM Writer の部分が 動かないことは分かった。
ROM がダメなのか.. ボードがダメなのかは不明。動いているのは、USB の
チップ。チップから出ている PORT の先のどこかがまずいわけだ。
0x01 xx : ポート0 に ライト 0x02 0x : ポート1 に下位 4bit をライト 0x03 : ポート0 リード 0x04 : ポート1 リード 0x10 xx: P0 に書き込み P1_0 をパルス。 0x11 xx: P0 に書き込み P1_1 をパルス。 0x12 xx: P0 に書き込み P1_2 をパルス。 0x17 : P1_3 をパルスしながら P0 リード
この辺のコマンドを使えるようにして、状態を固定し、 ROM ソケット電圧をテスターで計っていくしかないか。
回路を見ると 0x10 P0 に書き込み P1_0 をパルス パルス撰択のレジスタ にデータを書き込む パルス撰択のレジスタ の状態と パルス先 0 ADDR0(A7-A0) 書き込み 1 ADDR1(A15-A8) 書き込み 2 ADDR2(A21-A16) 書き込み 3 Flush ~WE 4 Flush ~OE 5 Flush ~RESET 0x11 xx: P0 に書き込み P1_1 をパルス。 パルス撰択のレジスタ で指定された 信号線 を ↓↑ 0x12 xx: P0 に書き込み P1_2 をパルス。 Flush の ~CE をパルス 0x17 : P1_3 をパルスしながら P0 リード 双方向バッファ の 切り替えをして、 Flush ROM の データを読む とういう動きをする。P1_1,P1_2,P1_3 を独立に制御しても意味なさそうだから 0x02 0x : ポート1 に下位 4bit をライト という機能と 併用する必要がありそうだ。 手順としては o PORT0 に書き込んだ値が、Flush の DATA に出ているかどうか。 o パルス撰択レジスタ にデータを書き込めるかどうか o ADDR0,ADDR1,ADDR2 に データを書き込めるかどうか 注意点としては、 o 当然だが ROM を抜くこと o PORT0 を入力にしないで、P1_3 を 0 にするのはまずい。
これで一応の確認ができて、かつ動かないとすれば ROM の方が失敗している かも知れない。そのときは、2 枚目の ROM を挿してみることにする。
とりあえず ドライバ類を一旦フィックス。
それにしても一発で動かないのは痛いなぁ。 直す技術は もちあわせていないぞ。
02/07/03
パルス撰択のレジスタ にデータを書き込む ... これ自体がちゃんとできない ことが分かった。USB のチップからの信号はちゃんと 思い通りに設定 できている。
0x10 P0 に書き込み P1_0 をパルス 0x02 0x : ポート1 に下位 4bit をライト のコマンドを使用すして ./romtest diag 1000 ./romtest diag 1007 とかすれば、パルス撰択のレジスタ にデータを書き込めたはずだったのだが... LVC 574 からはそんな信号は出ていない。入力は設定どおりに変わる。 で、 ./romtest diag 020e などとして、クロック信号がちゃんと入るかを確認したが OK。 あれだ、最初こわごわハンダを付けたので、ランドだけハンダが載って 実際は chip は ハンダ付けされていなかった所があった。 チェックが不充分だかったのかもしれない。 ハンダを しっかり付け直してみることにしよう。
02/07/04
ハンダを付け直した。
どういうふうにやったかというと、 少量のハンダを ハンダごての先につけて、ランドおよびチップの足を モップするように塗った..というかんじ。
フラックスはちゃんと塗っている。ハンダは、0.3mm の糸ハンダ。
で、結論からいうと、0-100 の 256 バイトはちゃんと読めたし かけた。
ここまで できると、あと ちゃんと動かない可能性があるのは、A9-A1X が 接触しているかどうかぐらいになる。
次は、全エリアを書いてコンペアしてみようと思っている。 ちゃんとできたかどうか も重要だが、どれぐらい時間がかかるものなのか? 3 分なら待てるが 30分だと厭だとか ...
遅いはずだとは思ったが... 遅いねぇ。 1回に 4 バイト読むのだが、 秒間 122 回しか 読みこみができない。パケットの往復に 8m sec かかっている。8 バイト送って 8 バイト受け取っているから、 15K bps ぐらい。低速でも 1.5Mbps なんだから 1/100 も帯域を 使えていない。おそい理由はやはりレイテンシか。
02/07/16
ちょっとメモ:
ハードディスクをオリジナルのケース(W120 , H22, D200) に入れるのは無理がある。 それで、ケースを物色していたのだが、よさげなのが見付かった。
タカチUCシリーズ の UC16-5-22 (W160, H50, D220) 。AA(アイボリー)が、2960円。DD(黒/パネル銀) が 3220円@ 千石。
横幅が 4cm もあまるから、基板の横に 秋月の 5V3A スイッチング電源 モジュール(W25, H30, D45)を入れて ... ハードディスクは、蓋に 穴あけて直接ネジ止め。
パネルの工作は面倒そうだが、失敗して 見映えが悪くなっても使えない ということにはならないだろう。
ハードディスクは、2.5inch を使う。3.5inch は物理的には入りそうだが 熱くなりそうだし、ちょっと恐い。 ( ちなみに 3.5inch の場合電源は 5V/12V ... スイッチング電源は 昔秋月で売っていた 5/12V スイッチング電源が使えるかも知れない)
02/08/08
千石にいって、UC16-5-22 を見てきた、DD(黒/パネル銀) をみた瞬間に 買うことをきめてしまった。AA(アイボリー)とちがって高級感がある。
側の材質は 2mm ぐらいの厚さのアルミ。前面/後面のパネルは、 側に溝が掘ってあって、ハメ込む。溝は前後 3 カ所ぐらいあるので、 事情にあわせて、位置を変えることができる。
これなら、筐体に直接 ハードディスクを マウントした方がよさそうだ。 ひょっとしたら、3.5inch でも OK かも知れない。
02/07/21
ここに書くのを忘れていたが、L-Router 用 ROM ボードの発注は、 7/12 にした。たぶんとっくに AirMail で発送されていて、 到着まち。
L-Router の復活も いよいよである。
さて、ROM の中にいれるものを一切検討していないが、ぜいたくをいわなければ 何とおりかの方法がある。
たぶんモニタが起動してくるんじゃないかなぁ。よくわからないが。
無圧縮だと 1MB には入らないものの、なんとかして NetBSD を立ち上げることができれば、あとはなんとでもなりそうだ。 たとえ、多少不具合のある現在のカーネルでも、たちあがりさえすれば、 ( 今のカーネルはリセットせずに カーネルを立ちあげ直す機能をもっているので) 別のカーネルを boot することができる。
ROM の修復するのもたぶんできるだろう。
02/08/03
romboard が OLIMEX から到着しているので、とりあえず 1set 2 個 組んでみた。 いちおう、Morphy USB ROM Writer から read/write できたようだ。
全域のテストをしていないので、どこかアドレスピンが ブリッジしていたり、 接触していなくてもわからないし、データバスの上位についても同じことが言える。
完成度への信頼というのは、実際に なにかを ROM にいれて動かすときに重要 なので、できる範囲でチェックはしておきたい。
それはともかく、 いよいよ ソフトをまじめに考える段階にたどりついた。
実をいうと、自分の read-only の方のホームページ EAGLE に Flash ROM Board について記述している。ここまで書いて動かなかったらどうしようと 思っていたのだが、一応想定範囲では動いているようなので、 写真を いれることができた。