1999-07-11 NVRAM
ふと、newsmips/newsmips/clockreg.h に書いてある
/* * Mostek MK48T02 clock. */
というコメントが目にとまる。そう、これは NVRAM。
いや、NVRAM が載ってるのは知ってんだけど。
(以前 フタを あけて 掃除した か ら)
というわけで、altavista で検索...発見。
The Mostek MK48T02 2k nvram chip has been used in Sun3/80, sun4 and sun4c systems. In sun4m systems they use the 8k version -but these are not dying yet. Sun is selling the MK48T02 for $70. In Germany they cost DM 45 / piece or DM 20 in larger quantities. From this I think that they might be between $10 and $25 in the US.
sun のやつと同じなのね。size は 2kbyte。
ROM monitor でごそごそと調べる。
> ss -d atr name/vendor ctlr mu ab sl h/w base softc rev driver slave co- bitmap c-- clock 0 0 0 - bf881fe0 - 0 - c-- console 0 0 0 - pseudo ffff3fc0 0 - esccf(0,0) c-- dmac3 0 0 0 - be200000 ffff3f80 0 - 1 0 0 - be300000 ffff3f40
clock (RTC) が 0xbf881fe0 からなので、NVRAM はこの領域を含むはず。
> md bf880000 bf880000: 0000ff41 0000ff50 0000ff32 0000ff00 ...A...P...2.... bf880010: 0000ff66 0000ff64 0000ff64 0000ff69 ...f...d...d...i bf880020: 0000ff00 0000ff00 0000ff20 0000ff20 ........... ... bf880030: 0000ff20 0000ff03 0000ff02 0000ff73 ... ...........s bf880040: 0000ff6f 0000ff6e 0000ff69 0000ff63 ...o...n...i...c bf880050: 0000ff00 0000ff00 0000ff20 0000ff21 ........... ...! bf880060: 0000ff21 0000ff03 0000ff02 0000ff01 ...!............ bf880070: 0000ff00 0000ff00 0000ff00 0000ff00 ................ bf880080: 0000ff00 0000ff00 0000ff00 0000ff00 ................ bf880090: 0000ff00 0000ff00 0000ff00 0000ff00 ................ bf8800a0: 0000ff00 0000ff00 0000ff00 0000ff00 ................ bf8800b0: 0000ff00 0000ff00 0000ff00 0000ff00 ................
これっぽい。
> md bf881000 bf881000: 0000ff00 0000ff07 0000ff55 0000ffa1 ...........U.... bf881010: 0000ff00 0000ff00 0000ff00 0000ff15 ................ bf881020: 0000ff6e 0000ff65 0000ff74 0000ff77 ...n...e...t...w bf881030: 0000ff6f 0000ff72 0000ff6b 0000ff00 ...o...r...k.... bf881040: 0000ff65 0000ff74 0000ff68 0000ff65 ...e...t...h...e bf881050: 0000ff72 0000ff6e 0000ff65 0000ff74 ...r...n...e...t bf881060: 0000ff00 0000ff00 0000ff00 0000ff00 ................ bf881070: 0000ff16 0000ff62 0000ff6f 0000ff6f .......b...o...o bf881080: 0000ff74 0000ff64 0000ff65 0000ff76 ...t...d...e...v bf881090: 0000ff00 0000ff73 0000ff63 0000ff73 .......s...c...s bf8810a0: 0000ff69 0000ff28 0000ff30 0000ff2c ...i...(...0..., bf8810b0: 0000ff30 0000ff29 0000ff00 0000ff00 ...0...)........ bf8810c0: 0000ff00 0000ff00 0000ff15 0000ff6d ...............m bf8810d0: 0000ff61 0000ff63 0000ff68 0000ff69 ...a...c...h...i bf8810e0: 0000ff6e 0000ff65 0000ff00 0000ff6e ...n...e.......n bf8810f0: 0000ff65 0000ff77 0000ff73 0000ff35 ...e...w...s...5 bf881100: 0000ff30 0000ff30 0000ff30 0000ff00 ...0...0...0.... bf881110: 0000ff00 0000ff00 0000ff00 0000ff12 ................ bf881120: 0000ff63 0000ff70 0000ff75 0000ff74 ...c...p...u...t bf881130: 0000ff79 0000ff70 0000ff65 0000ff00 ...y...p...e.... bf881140: 0000ff72 0000ff34 0000ff30 0000ff30 ...r...4...0...0
間違いないようだ。
NEWS5000 の rom monitor は環境変数みたいなものが使えて、
> set network=ethernet bootdev=scsi(0,0) machine=news5000 cputype=r4000 model=NWS-5000 mon=2
このように任意の変数を定義できる。当然電源を切ってもこれは保持されてる。
この内容がそのまま入ってるので、上の領域は間違いなく NVRAM がそのまま map
されてるんだろう。
#ちなみに、ここも 32bit 中 8bit しか使ってない変な bus。
#つっても、busspace 関数はもうちゃんと作ってあるので、
#bus_space_map あーんど bus_space_read_region_1 で何も考えず領域 copy できるけど :-)
size は 2kbyte なので、0x800。
NVRAM の 8bit が NEWS5000 では 32bit に map されてるので、
0xbf880000 〜 0x800*4 で、
0xbf880000 〜 0xbf882000 が NVRAM。そのうちの、
0xbf881fe0 〜 0xbf882000 が RTC と。
ROM monitor は、NVRAM を boot 情報の保持(default で scsi(0,0)からbootしろとか)
くらいにしか使ってないので
(だから電池が切れても時計が狂うくらいで別に支障はない)、
unix から見えてもあんまり嬉しくないんだけど、
やっぱり sparc みたいに /dev/ の下に見えるとかっこいいよなぁ、
とか思いつつ(思っただけ)、sonic の attach のつづきをやる。
#どうやらattach まではいったらしい。
#まだ ether_ifattach() してないし割り込みは影も形も、だけど :P
EOF