(このページの最終更新日: 2007-02-04)
実験用筐体
左下の黄色のスイッチがコンソール切り替え(J2から)
右下のコネクタがシリアルコンソール(3.5φステレオミニピンジャック;J1から)
台は玄箱
(目次)
LinkStation (MIPS) のメモ
MIPSなLinkStationたち
- HD-LANv3
- HD-HLANv2
- HD-HLWG
ハードウェア
- CPU
- IDT 79RC32H434-400BC
- MIPS32 4Kcコア
- キャッシュはライトスルーのみ?
- いろいろ内蔵
- PCIコントローラ
- SPI(マスタのみ)
- I2C(未使用)
- Ethenet MAC
- UART(1つ)
- DDRコントローラ(折角のDDRなのにバス幅は16ビット)
- その他もろもろ
- 浮動小数点サポートは無し(ソフトでエミュレート)
- MIPS32 4Kcコア
- IDT 79RC32H434-400BC
- USBコントローラ(HD-HLANv2,HD-HLWG)
- NEC D720101GJ
- ehci & ohciドライバ
- NEC D720101GJ
- 電源管理
- Freescale MC68HC908JL8
- TeraStationと同じ
- "NASIDT001"のマーク有り(HD-HLANv2)
- 通常はUARTの先に接続されている
- Freescale MC68HC908JL8
- ATAコントローラ
- ITE IT8211AF
- TeraStationと同じ
- iteideドライバ
- よく見たらアクセスLEDのパターンが有る
- TeraStationと同じ
- ITE IT8211AF
- RTC
- RICOH RS5C348A
- SPI接続
- ドライバ無し(要作成)
- 論理フォーマットはRS5C372とそっくり
- SPI接続
- RICOH RS5C348A
- Ethernet PHY
- Realtek RTL8201CP
- ukphyドライバ ?
- Realtek RTL8201CP
メモリマップ(工事中)
- 内部ペリフェラルレジスタマップ(オフセットは暫定値)
| 0x18000018 | SYSID | System Identification |
| 0x18008000-0x1800800b | Reset and Initialization | |
| 0x18008000 | RESET | Reset |
| 0x18008004 | BCV | Boot configuration |
| 0x18008008 | CEA | CPU error address |
| 0x18010000-0x18010057 | Device Controller | |
| 0x18018000-0x18018027 | DDR Controller | |
| 0x18020000-0x18020007 | PMBus Arbiter | |
| 0x18028000-0x1802803b | Counter/Timers | |
| 0x18030030-0x1803003f | System Integrity Functions | |
| 0x18038000-0x1803803f | Interrupt Controller | |
| 0x18040000-0x18040077 | DMA Controller | |
| 0x18048000-0x1804803b | IPBus Arbiter | |
| 0x18050000-0x18050017 | GPIO Controller | |
| 0x18058000-0x18058043 | UART | |
| 0x18060000-0x1806024b | Ethernet Interface | |
| 0x18068000-0x1806802b | I2C | |
| 0x18070000-0x1807001b | Serial Peripheral Interface | |
| 0x18078000-0x18078013 | NVRAM(control) | |
| 0x1807a000-0x1807a07f | NVRAM(memory area) | |
| 0x18080000-0x1808005f | PCI Bus Interface | |
| 0x18088010-0x18088037 | PCI Messaging Unit |
- RAM(以下はすべて同じものを指しているはず)
| 0x00000000-0x03ffffff | 64MB | (物理メモリ) |
| 0x80000000-0x83ffffff | 64MB | kseg0 |
| 0xa0000000-0xa3ffffff | 64MB | kseg1 |
- 現在のメモリマップ@NetBSD(IPBus側)
| 0x00000000-0x0fffffff | 256MB | DDR-SDRAM | 先頭64MBにのみ実装 |
| 0x10000000-0x17ffffff | 128MB | PCI Memory | |
| 0x18000000-0x181fffff | 2MB | On-Chip Peripheral | 上記参照 |
| 0x18200000-0x187fffff | 6MB | 未使用 | |
| 0x18800000-0x18bfffff | 4MB | PCI I/O | |
| 0x18c00000-0x18ffffff | 4MB | (PCI Memory) | |
| 0x19000000-0x1fbfffff | |||
| 0x1fc00000-0x1fffffff | 4MB | FLASH-ROM |
NetBSDを移植するのに不足しているもの
- ブートローダー(済)
- CPUサポート(汎用コードを使用)
- メモリ周り初期化(済)
- PCIバス周り初期化(済)
- 割り込み周り初期化(済)
- UART(シリアル)ドライバ(済)
- Ethernet (MAC)ドライバ(済)
- SPIドライバ
- idtspiドライバ(仮称)
- GPIOも同時に触る必要あり
- RTC@SPIドライバ
- rs5c348rtcドライバ(仮称)
- (移植者の気力・体力・時間・知識・その他もろもろ)
- 最後にMIPSを触ったのは9年くらい前かな…完全に忘れている…
移植のベースとするのはどれが良いか
- MIPS-LinkStationは『IDT 79EB434 評価ボード』をベースにしたらしい。
- 既存のMIPS(Little Endian)な移植
- algor
- Algorithmics, Ltd.の評価ボード用(P-4032, P-5064, P-6032)
- この会社、もう無い?
- Algorithmics, Ltd.の評価ボード用(P-4032, P-5064, P-6032)
- arc
- Advanced RISC Computing仕様の装置(ワークステーション?)用
- cobalt
- コバルトキューブ用
- evbmips
- Malta評価ボード用
- AlchemyのPB1000, PB1500
- hpcmips
- PDA用
- playstation2
- PlayStation2用
- pmax
- DECstation/DECsystem用
- sbmips
- Broadcomの評価ボード用
- algor
- 定番としてevbmips以下に入れることになると思う。
- MALTA上ではMIPS32 4Kcが動いているらしいのでこれをベースにする。
- 他のものも勉強がてら眺めてみる。
ブートローダー実験
- (別ページへ移動)
- だいたい動いた気がするので
近日公開予定。一応公開しました。
NetBSDカーネル移植実験
デバッグ方法の検討メモ
- (カーネルを含めた)デバッグはシリアルコンソールが頼り。
- コード上の各チェックポイントでシリアルコンソールに文字を出力し、どこまで到達したか、またはどのように分岐したかをチェックする。
- シリアル周辺はLinux側で初期化されているため、気にせずポートへ出力すればよい(はず)。
- cacheが無効なkseg1の0xb8058000にバイトライトすれば良い(はず)。
-
『はず』ばかり orz - ブートローダー側(Linux kernel module)での動きは確認。
- *((volatile unsigned char *)0xb8058000) = '@'; で@がシリアルに出力された。
-
- 欲張ってたくさん出力しようとするとFIFOが溢れるので、ゆっくり出すか、そもそも欲張らないようにすべし。
- cacheが無効なkseg1の0xb8058000にバイトライトすれば良い(はず)。
電源管理のメモ (内容の信憑性は低い)
- 電源スイッチON時: "IIII\\\\" (Boot ROMが出している)
- mc_ctld開始時: "AAAAFFFFJJJJ>>>>VVVV" ">>>>ZZZZ"(←ACK)
- 定期動作: "VVVV" (40秒間隔で繰り返し)
- DISK FULL LEDの消灯だが、Watchdogへの餌やりになっている。
- 電源管理プロセッサからのメッセージに対するACK: ">>>>ZZZZ" (これを返さないと電源が落ちる)
シリアルコンソール周辺情報
- 別ページへ移動
参考サイト
- IDT(CPU資料) http://www.idt.com/?genID=79RC32434
- Linux全般の話題
http://linkstationwiki.org/→ http://linkstationwiki.net/ - Debian化 http://www.geishuettner.de/docs/Linkstation/
- 山下さんBBS(シリアルコンソール) http://www.yamasita.jp/linkstation/BBS/2453.html
- 山下さんBBS(ブートローダー周辺情報) http://www.yamasita.jp/linkstation/BBS/115.html
- メモリマップはR3000で良い?(Wikipedia) http://ja.wikipedia.org/wiki/R3000
- RTC(5C348) http://www.ricoh.co.jp/LSI/product_rtc/4wire/5c348/
- 関係ないけれどMIPS系のCPUなので...TX39/H3 マニュアル http://www.semicon.toshiba.co.jp/prd/micro/td/tx39/pdf/844d4aa.pdf
- (やっぱり日本語って良いなぁ orz)
- (追記予定)
雑記(妄想)
- ブートローダーはnbloaderをベースで考える(insmodで対応)
- MIPS依存なところはakmemのコードを参考にするつもり
- MIPSアセンブラを再勉強する必要あり(レジスタは32ビットが32個だっけ?)
- kseg0,1が有るので、ブート時にMMU周りは気にする必要は無いはず。
- メモリや割り込みの初期化は必須
- メモリの初期化はLinuxに頼っても良いかも
- シリアルのサポートも(最初は)必須
- 電源管理のためには必須。
- 最初はコンソールにしておき、後で電源管理に向ける。
- 向けた後はコンソールはNULLコンソールとしてログインはTelnet等、ネットワーク経由のみとする。
- PCIバス初期化が出来ればハードディスクとUSBはOK
- Ethernetは最初はUSB接続のみでも良いか
- RTCはSPI接続なので最初はダミーで済ませる
- MINI PCIをいじれたら面白そう
- 普通のPCIコネクタ化出来ないかな?
資料
蛇足
Linux関連はこちらへ移動
- ブートローダー実験メモ(初期)
- Linuxカーネルのリコンパイル実験メモ(初期)
- Debian化
- パーティション入れ替えスクリプト
ハードウェア情報はこちらへ移動
- 電源ユニット
- へたりかけのFANを延命
48458
このwikiの更新情報RSS