IDT 79RC32334でFreeBSD

以前から気になっていたのですが、IDT 79RC32334を使った[IO DataのWN-G54/AXP](http://telec.org/feature/feature6.html)がハムフェアで0円の箱に入っていたので、もらってきていじってみました。SDRAM16MのFlash4Mなので、そのままでFreeBSDは起動できると思われます。

![写真（2017-09-04 22.08）.jpg](https://qiita-image-store.s3.amazonaws.com/0/104066/d0de07de-167b-06c5-d67d-2893a596a1e2.jpeg)


このモデルはNetgearのWG602v1と同じ基板を使っているようです。

分解してみたら、PowerとLANのLEDが外されていました。たしかに設置場所によっては、チカチカして目障りかもしれませんし、外す事で消費電力も下がると思われます。さすがハムフェアのジャンクです。

このボードのJ1はJTAG/EJTAGの24ピン1.24mmピッチのコネクタで配列はデータシートにあります。J3とJ4はUARTのコネクタでJ4が0のフルでJ3が1のTX/RXだけになってます。

[u-bootをビルドしてくれている人](https://sites.google.com/site/shihsung/rc32xxx-soc/wg602)がいてまずこれをインストールしてみました。

このu-bootはnetconsoleなビルドでとりあえずネットワークで操作する事にします。netconsoleはUDPのブロードキャストを使って動いているようです。

u-bootのソースツリーのtools下にnetconsoleというスクリプトが用意されているのでこれを使うのが良いです。このスクリプトはncだけだとうまく動かなかったので、同じディレクトリのncb.cをコンパイルしたバイナリも使います。

IDTはアメリカのシリコンバレーの会社で、このSOCは2000年くらいからあるMIPS系SOCの先駆けで、FreeBSDのsys/mips/idtにコードがある32434の前の製品になります。MIPS4Kの前にあったのEnhancements to MIPS IIのようです。RC32434は4Kのようです。IDTは現在はMIPSなSOCは作っていないようです。

![スクリーンショット（2017-10-02 9.37.09）.png](https://qiita-image-store.s3.amazonaws.com/0/104066/8137ae54-f887-d53f-9758-3637020a900b.png)


RC32334とRC32434は型番が違いのですが、ほとんど違ったチップのようです。RC32434にはTulip系のネットワークインターフェースが入っていますが、RC32334にはありません。割り込みコントローラやPCIコントローラーもアドレスも違うし構成も全く違うようです。

RC32334でキャッシュをオンで起動すると落ちるので、オフのオプション(MIPS_DISABLE_L1_CACHE)を指定しています。

ZRouterのsocとboardsにエントリーを作り、sys/mips/idtを使いごにょごにょしてとりあえず起動しました。sys/mips/idtはもうだれもビルドしてないような気もしますが、エラーも無くビルドはできました。

```
U-Boot 2009.11 (Jan 17 2010 - 14:10:57)

Board: Netgear WG602(CPU Speed 150 MHz)
DRAM:  16 MB
Flash:  4 MB
*** Warning - bad CRC, using default environment

cmd line: (null) 
Cache info:
  picache_stride    = 0
  picache_loopcount = 0
  pdcache_stride    = 0
  pdcache_loopcount = 0
  max line size     = 0
cpu0: Unknown cid 0 processor v0.24
  MMU: Standard TLB, 0 entries 
  L1 i-cache: disabled  L1 d-cache: disabled  L2 cache: disabled
Physical memory chunk(s):
0x375000 - 0xffffff, 13152256 bytes (3211 pages)
Maxmem is 0x1000000
KDB: debugger backends: ddb
KDB: current backend: ddb
Copyright (c) 1992-2017 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
        The Regents of the University of California. All rights reserved.
FreeBSD is a registered trademark of The FreeBSD Foundation.
FreeBSD 12.0-CURRENT #17 edef34f(zrouter)-dirty: Mon Sep  4 20:24:38 JST 2017
    hiroki@microserver:/storage/home/hiroki/obj/storage/home/hiroki/zrouter/tmp/
mips.mipsel/storage/home/hiroki/freebsd/sys/IOData_WN_G54AXP mips
gcc version 4.2.1 20070831 patched [FreeBSD]
Preloaded elf kernel "kernel" at 0x80370360.
real memory  = 16777216 (16384K bytes)
Physical memory chunk(s):
0x00401000 - 0x00f8afff, 12099584 bytes (2954 pages)
avail memory = 11829248 (11MB)
arc4random: no preloaded entropy cache
mem: <memory>
null: <full device, null device, zero device>
nexus0: <MIPS32 root nexus>
random: harvesting attach, 8 bytes (4 bits) from nexus0
clock0: <Generic MIPS32 ticker> on nexus0
Timecounter "MIPS32" frequency 165000000 Hz quality 800
Event timer "MIPS32" frequency 165000000 Hz quality 800
random: harvesting attach, 8 bytes (4 bits) from clock0
obio0 at mem 0-0x1ffffffe on nexus0
pcib0 on obio0
pci0: <PCI bus> on pcib0
pci0: domain=0, physical bus=0
found-> vendor=0x0014, dev=0x1808, revid=0x14
        domain=0, bus=0, slot=0, func=0
        class=18-08-00, hdrtype=0x08, mfdev=0
        cmdreg=0x0014, statreg=0x1808, cachelnsz=20 (dwords)
        lattimer=0x00 (0 ns), mingnt=0x00 (0 ns), maxlat=0x00 (0 ns)
pci0: <unknown> at device 0.0 (no driver attached)
random: harvesting attach, 8 bytes (4 bits) from pci0
random: harvesting attach, 8 bytes (4 bits) from pcib0
uart0: <16550 or compatible> on obio0
uart0: console (115200,n,8,1)
uart0: fast interrupt
uart0: PPS capture mode: DCD
random: harvesting attach, 8 bytes (4 bits) from uart0
uart1: <Non-standard ns8250 class UART with FIFOs> on obio0
uart1: console (115200,n,8,1)
uart1: fast interrupt
uart1: PPS capture mode: DCD
random: harvesting attach, 8 bytes (4 bits) from uart1
random: harvesting attach, 8 bytes (4 bits) from obio0
cfi0 at mem 0xbfc00000-0xbfffffff on nexus0
device_attach: cfi0 attach returned 6
Device configuration finished.
Timecounters tick every 10.000 msec
tcp_init: net.inet.tcp.tcbhashsize auto tuned to 512
Trying to mount root from cd9660:/dev/map/rootfs.uzip []...
mountroot: waiting for device /dev/map/rootfs.uzip...
Mounting from cd9660:/dev/map/rootfs.uzip failed with error 19.

Loader variables:

Manual root filesystem specification:
  <fstype>:<device> [options]
      Mount <device> using filesystem <fstype>
      and with the specified (optional) option list.

    eg. ufs:/dev/da0s1a
        zfs:tank
        cd9660:/dev/cd0 ro
          (which is equivalent to: mount -t cd9660 -o ro /dev/cd0 /)

  ?               List valid disk boot devices
  .               Yield 1 second (for background tasks)
  <empty line>    Abort manual input

mountroot> 
```

Linuxはu-boot同様にUDPを使ったnetconsoleを使えるようですが、FreeBSDではサポートされていないので上記はJ4のuart0のTXの出力になります。

課題

* 古いFlashのためかcfiが認識されていない
* pci接続のreも認識されてない
* sys/mips/idtは434決め打ちになっているところがあるので整理が必要かも

pciが何となく動いてそうなので、何かに用途があったら続きをやってみたいと思います。

u-bootつぶしてしまって、ur-jtagでも見てみたがcpuは見えるがflashが見えないので、断念しました。

JTAGコネクタはハーフピッチで以下のような並びのようです。

![写真（2023-04-01 14.12）.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104066/fc60c65f-a46c-5e9e-e8f2-da26af81fafb.jpeg)

|Pin|Name|
|:--|:--|
|1|TRST*|
|3|TDI|
|5|TDO|
|7|TMS|
|9|TCLK|
|11|RST*|
|21|Debugboot|
|23|Ref Vol|

いつのまにかIDTはRenesasに買収されてしまいました。