CG-WLBARAGLという初期のMIPS SOCを使った無線ルーターがたまたま手元に転がり 込んだので、調べてみたいと思う。この機種はADM5120というMIPS SOCを使っていて このチップは初期のFreeBSD MIPSサポートのターゲットだった。
と思ったが、不明なブートが入っていてCFIでまたJTAGが ないのでとりあえず放置かな。 このSOCにはUSB 1.1が入っているがパターンがなく、フラッシュが2Mというのも厳しい。
佐藤益弘さんのページ では元々のBootとU-Bootの二段重ねにしているようだ。
びんずめ堂さんも Linux化を行っていた。
U-Bootを128K以内でビルドして元々のブートにxmodemで上書きできるといいのだが、 JTAGの保険がないので、別のターゲットで試した方が良いのかも。
とりあえずJTAGがあるバッファローのADM5120をつかった 有線ルータを108円でHardOffで購入してきてUrJTAG でみてみた。
上記の参考にしているページによるとこの機種はちょっと いじる とUSBが使えるようだがFreeBSDのソースツリーにはADM5120のUSBのコードはない。
ZRouterのsocsにはADM5120がないので、適当にコピーしてsys/mips/adm5120のファイル を利用するように書き換えてみた。
佐藤さんのページの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を試そうと思います。