IDT 79RC32334에서 FreeBSD

5895 단어 ZRouterFreeBSDMIPS
이전부터 신경이 쓰여 있었지만 IDT 79RC32334를 사용한 IO Data의 WN-G54/AXP이 햄 페어로 0 엔의 상자에 들어 있었기 때문에, 받고 괴롭혀 보았습니다. SDRAM16M의 Flash4M이므로, 그대로 FreeBSD는 기동할 수 있다고 생각됩니다.



이 모델은 Netgear의 WG602v1과 동일한 기판을 사용하는 것 같습니다.

분해해 보니 Power와 LAN의 LED가 꺼졌습니다. 확실히 설치 장소에 따라서는, 치카치카 해 눈부신지도 모르고, 떼어내는 것으로 소비 전력도 내려간다고 생각됩니다. 과연 햄 페어의 정크입니다.

이 보드의 J1은 JTAG/EJTAG의 24핀 1.24mm 피치 커넥터로 배열은 데이터시트에 있습니다. J3와 J4는 UART의 커넥터로 J4가 0의 풀로 J3가 1의 TX/RX만이 되어 있습니다.

u-boot를 빌드하는 사람 그래서 먼저 이것을 설치하려고했습니다.

이 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는 만들지 않은 것 같습니다.



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> 

리눅스는 u-boot처럼 UDP를 사용한 netconsole을 사용할 수있는 것처럼 보이지만 FreeBSD에서는 지원되지 않으므로 위는 J4의 uart0 TX 출력입니다.

도전
  • 오래된 플래시를 위해 또는 cfi가 인식되지 않습니다
  • pci 연결의 re도 인식되지 않습니다
  • sys/mips/idt는 434결정이 되어 있는 곳이 있으므로 정리가 필요할지도

  • pci가 어쩐지 움직여 그렇기 때문에, 무언가에 용도가 있으면 계속을 해 보고 싶습니다.

    u-boot 중얼거리고 ur-jtag에서도 보았지만 cpu는 보이지만 flash가 보이지 않기 때문에, 단념했습니다.

    좋은 웹페이지 즐겨찾기