Marvell


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

長い事物色していたのだが安いものがなくやっと524円でWZR-AMPG300NHが手に はいったのでビルドしてみたが数行でハングアップする。WZR-AMPG300NHは これと 同じもののようだ。Linksys WRT350Nというモデルも似た構成の模様。

ブートして数行で固まるのはdtsのメモリサイズが間違えていたためでした。 いろいろdtsを変えて試していたらrootfsのマウントまで進むようになった。

WZR-AMPG300NHをターゲットにしてちょっといじっている。このルータは88F5181 というSOCを搭載している。ブートはU-Bootで^Cで止めてオペレーションできる。

Flashは0xff80000から8M(0x800000)のCFIがついている。マップは以下のようだ。

0x00000000-0x00780000 : "rootfs"
0x00780000-0x007a0000 : "user_property"
0x007a0000-0x007c0000 : "uboot_environ"
0x007c0000-0x00800000 : "uboot"

mipsのu-bootはFlashの先頭にu-bootがあるが、このターゲットは最後にある。 JTAGピンもなくバックアップもとれないので、消してしまわないように注意した方が 良い。

88F5182のデータシートなどのPDFはネットでダウンロードできるが88F5181のデータ シートはなぜかない。

88F5182はデータシートを見るとnandなFlashを使う事を想定しているようなのだが、 このターゲットはnor(CFI)なflashが付いている。cfiのチップの場所に別のチップを 付けるパターンがあるので、nandのFlashを実装するパターンなのかもしれない。

db88f5182.dtsというファイルを参考にしているのだが、これのcfiのエントリーは mrvl,lbc(localbus)の下にあり、localbusにぶら下がるcfiが必要だがそのコードは ないので、実際には使えていないと思う。

試しにUSBをいれてビルドしてみたところUSBのprobeの後に固まる。。。

FreeBSDのwikiに Marvellのページがあるが、FDTが入る前の内容だったりしてあまり参考に ならない。

Marvellの100のSwitchのコードをいじったついでに、リトライしてみた。

このSOCはアドレスの最後の方にFlashがいるのだが、現在のFreeBSDのコードはここを devmapしない仕様になっていて、cfiなどのドライバを利用する事が出来ないようだ。 (2017/03)

この機種のU-BootはflashのU-Boot形式の実行イメージをロードして実行するのでは なくCRAMFSのrootfsから実行ファイルを読み出して、実行するようだ。こいうタイプの U-BootでFreeBSDをflashから起動するのはかなりなんぎだ。とりあえずカーネルだけ CRAMFSに置いてflashに焼いて実行するのが良いみたい。

いろいろ調べていたらFreeBSDのMLで2011年くらいに "Embedded switch instead of stadard PHY"とという話題があり、このタイプの ターゲットが話に出ていたようです。その後2012年にetherswitchの発表があった ようです。

ログインできるようになりました。(2017/03/30)

EtherSwitchに88E6131というチップを使っていて、dev/etherswitch/e6000sw/e6000sw.c とdev/mgeを修正して使えるようにしてみたのだがCPUポートが有効にならない。。。



ブートログ


Copyright (C) 2016 Hiroki Mori All Rights Reserved.