ADM5120

お約束ですが、このページのいかなる記載においても著者は一切の責任をおいません。

CG-WLBARAGLという初期のMIPS SOCを使った無線ルーターがたまたま手元に転がり 込んだので、調べてみたいと思う。この機種はADM5120というMIPS SOCを使っていて このチップは初期のFreeBSD MIPSサポートのターゲットだった。

写真(2015-04-07 23.11) 写真(2015-04-05 23.18)

と思ったが、不明なブートが入っていてCFIでまたJTAGが ないのでとりあえず放置かな。 このSOCにはUSB 1.1が入っているがパターンがなく、フラッシュが2Mというのも厳しい。

佐藤益弘さんのページ では元々のBootとU-Bootの二段重ねにしているようだ。

びんずめ堂さんも Linux化を行っていた。

U-Bootを128K以内でビルドして元々のブートにxmodemで上書きできるといいのだが、 JTAGの保険がないので、別のターゲットで試した方が良いのかも。

とりあえずJTAGがあるバッファローのADM5120をつかった 有線ルータを108円でHardOffで購入してきてUrJTAG でみてみた。

IMGP1793

上記の参考にしているページによるとこの機種はちょっと いじる とUSBが使えるようだがFreeBSDのソースツリーにはADM5120のUSBのコードはない。

ZRouterのsocsにはADM5120がないので、適当にコピーしてsys/mips/adm5120のファイル を利用するように書き換えてみた。

BBR-MEM

佐藤さんのページのU-Bootを書き込んで、ZRouterでビルドしたカーネルを直接メモリ にロードして起動を試したが、以下のようにエラーになった。

BBR-4MG/HG # setenv ipaddr 10.10.10.190
BBR-4MG/HG # setenv serverip 10.10.10.3
BBR-4MG/HG # tftpboot 0x80800000 Buffalo_BBR-4HG_kernel.kbin.oldlzma.uboot
Using adm0 device
TFTP from server 10.10.10.3; our IP address is 10.10.10.190
Filename 'Buffalo_BBR-4HG_kernel.kbin.oldlzma.uboot'.
Load address: 0x80800000
Loading: #################################################################
 #################################################################
 ##########################################
done
Bytes transferred = 880106 (d6dea hex)
BBR-4MG/HG # bootm 0x80800000
## Booting image at 80800000 ...
 Image Name: FreeBSD Kernel Image
 Created:2015-05-03 0:51:00 UTC
 Image Type: MIPS Linux Kernel Image (unknown compression)
 Data Size:880042 Bytes = 859.4 kB
 Load Address: 80001000
 Entry Point:80001000
 Verifying Checksum ... OK
Unimplemented compression type 3
BBR-4MG/HG # 

ZRouterにはUBOOT_KERNEL_COMPRESSION_TYPEという設定値があり、lzmaを指定しているが U-Bootにそのコードが無いのが原因だ。関係する部分をbzip2に変更して試してみた。

BBR-4MG/HG # setenv ipaddr 10.10.10.190
BBR-4MG/HG # setenv serverip 10.10.10.3
BBR-4MG/HG # tftpboot 0x80300000 Buffalo_BBR-4HG_kernel.kbin.bz2.uboot
Using adm0 device
TFTP from server 10.10.10.3; our IP address is 10.10.10.190
Filename 'Buffalo_BBR-4HG_kernel.kbin.bz2.uboot'.
Load address: 0x80300000
Loading: #################################################################
         #################################################################
         ##########################################################
done
Bytes transferred = 957925 (e9de5 hex)
BBR-4MG/HG # bootm 0x80300000
## Booting image at 80300000 ...
   Image Name:   FreeBSD Kernel Image
   Created:      2015-05-03   2:27:07 UTC
   Image Type:   MIPS Linux Kernel Image (bzip2 compressed)
   Data Size:    957861 Bytes = 935.4 kB
   Load Address: 80001000
   Entry Point:  80001000
   Verifying Checksum ... OK
   Uncompressing Kernel Image ... OK

Starting kernel ...

entry: mips_init()
Cache info:
  picache_stride    = 4096
  picache_loopcount = 2
  pdcache_stride    = 4096
  pdcache_loopcount = 2
cpu0: MIPS Technologies processor v11.128
  MMU: Standard TLB, 16 entries
  L1 i-cache: 2 ways of 256 sets, 16 bytes per line
  L1 d-cache: 2 ways of 256 sets, 16 bytes per line
  Config1=0x1e994c8a<WatchRegs,EJTAG>
Physical memory chunk(s):
0x2c8000 - 0xffffff, 13860864 bytes (3384 pages)
Maxmem is 0x1000000
KDB: debugger backends: ddb
KDB: current backend: ddb
Copyright (c) 1992-2012 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 10.0-CURRENT #1: Sun May  3 11:23:17 JST 2015
    hiroki@microserver:/usr/home/hiroki/ZRouter/obj/usr/home/hiroki/ZRouter/zrou
ter/tmp/mips.mipsel/usr/home/hiroki/ZRouter/FreeBSD/head/sys/usr/home/hiroki/ZRo
uter/obj/usr/home/hiroki/ZRouter/zrouter/conf/Buffalo_BBR-4HG mips
Preloaded elf kernel "kernel" at 0x802be47c.
real memory  = 16777216 (16384K bytes)
Physical memory chunk(s):
0x00354000 - 0x00f7efff, 12759040 bytes (3115 pages)
avail memory = 12521472 (11MB)
random device not loaded; using insecure entropy
null: <null device, zero device>
mem: <memory>
nexus0: <MIPS32 root nexus>
clock0: <Generic MIPS32 ticker> on nexus0
Timecounter "MIPS32" frequency 175000000 Hz quality 800
Event timer "MIPS32" frequency 175000000 Hz quality 800
Device configuration finished.
Timecounters tick every 10.000 msec
Trying to mount root from cd9660:/dev/map/rootfs.uncompress []...
mountroot: waiting for device /dev/map/rootfs.uncompress ...
Mounting from cd9660:/dev/map/rootfs.uncompress 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/acd0 ro
          (which is equivalent to: mount -t cd9660 -o ro /dev/acd0 /)

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

mountroot> 

USBやCFIが見えてないので、そのコードを追加する必要がある。おそらくNetBSD方面 にはあるのかもなので持ってくるといいのかも。

海外ではADM5120を使ったMikrotik RouterBOARD RB133cという開発用の基板が販売 されていて、FreeBSDを試している人もいるようだ。

Eiji KawauchiさんがNetBSDを試されていました。 PDF

FreeBSD 12Rのリリース前にコードの整理で、adm5120のコードは消されてしまいました。 メモリが少ないターゲットがほとんどだったのでしかたありません。

とはいえ、いろいろ調べたのもあるのでBare Metalのmrubyを試そうと思います。



Copyright (C) 2015 Hiroki Mori All Rights Reserved.