MIPS関係

始めた当時はいろいろ試していましたが、結局FreeBSDで使えるようになったのは AtherosとRalinkだけでした。(2019/1)

Realtekのチップなどはmrubyをベアメタルでのっけて使えるようにしました。 ネットワークも使えるようにしてあるので、結構使えます。(2020/4)

FreeBSD 14Rでmipsは消される事になりました。13Rでclangになって動かなくなって いたので12Rが最後になります。(2022/5)

HardOffで数百円で手に入るので、MIPSを使ったルーターが手元にたくさんある。1990 年くらいに数百万したワークステーションに入っていたCPUよりもクロックは高かったり するから驚きだ。もちろん収集している理由はZRouterでFreeBSD化するためである。 巷ではARMを使ったラズベリーパイが人気だが、10分の1くらいの価格で入手でき気軽に 試せるのと、どうしても裏をいきたい性格なのでいろいろいじっている。

安価で入手できるという事もあるのだが、昔のマシンに比べ消費電力が少なくいろいろ 遊んでもエコなのが良いとも思っている。

初期の無線ルータはARMを使った使った物もあったが2005年以降はMIPS系のSOCがよく 使われるようになったようだ。

2005年は以前はBroadcomがメジャーだったが、それ以降はAtherosもよく使われる ようになったようだ。2011年にAtherosはQualcommに買収されていてBroadcom対 Qualcommの一騎打ちの構図が見える。 Infineon(ADMtek)は無線系が弱かったのであまりシェアーをとれず、RalinkのMIPSは 後発だがnな無線チップをかなり早い時期に投入できたおかげでいろいろなメーカー で使われるようになっている。(2015/04)

一騎打ちをやってると思ったらBroadcomも買収されてしまった。もうなにがなんだか わかりません。(2015/08)

初期のSOCはPCIバスを直接出していたが、現在は必要な機能はすべてチップの中に いれてしまってPCIバスを出しているケースは少ない。

BroadcomとQualcommが戦っている間に、Ralinkが漁父の利を得ているような構図にも 見える。(2015/05)

2000年代前半は東芝やNECもMIPS SOCを作っていたようだが、なぜか現在は作っていな いようだ。 ここに2001年春のMIPSの資料がありました。

5年近くこのネタでいろいろ調べた結果、以下のような結論に至った。また将来 変わるかもしれないがとりあえず。

これらのことからFON2305/2405が最適な対象であることはたぶん当面変わらないと 思われる。

ここにバッファローの無線ルーターのOpenWRT/DD-WRTの情報があった。

メーカー機種CPUFlashDRAM BOOTシリアルコンソールJTAG
備考
Broadcom
NIKON PD-10 Broadcom BCM4712(0446) 2M(SPI) 8M CFE 3.3V 115200
このモジュールを中古カメラ屋で3つ買ってこのMIPSいじりが始まった。 一つは壊してしまい、二つ残っているが、CFEの操作は出来るがネットワークが直接 使えないのでとりあえず、ペンディングになっている。
BUFFALO WLI3-TX1-G54 Broadcom BCM4712(0726) 4M(CFI) 16M CFE 3.3V 115200
ASUS WL-500も類似のSOCを利用してるよう。このモジュールはプラスチックの はめ込みで作られていて、分解すると引っかけの爪が折れたりするので、分解は できるだけしない方が良いと思います。
BUFFALO WLA2-G54C Broadcom BCM4712 4M 16M CFE
WLI3-TX1-G54と中身は同じではないかと思うがまだバラしていない。
Canon NH-WP100 Broadcom BCM4712(0706) 8M 32M CFE
USBが付いていたので、Athrosが入っているのかと思ったらBCM4712にPCIなUSBチップ ISP1516が付いていた。シリアルは4ピンのヘッダーではなくて6ピンのヘッダーに なり、2(RX),5(TX),6(GND)となっていた。
Apple AirMac Expres Broadcom BCM4712?
プラスチックを完全に接着して形成されているためばらせません。
BUFFALO WHR-HP-G54 Broadcom BCM5352(0740) 4M(CFI) 16M CFE 1.0.37-1.08 3.3V 115200
バラした形跡はなかったがUARTのピンヘッダーが付いていた。
BUFFALO WHR-G54S Broadcom BCM5352? 4M(CFI) 16M
ヒートシンクがはってあるのでCPUの型番分からず。WLA2-G54Cはネジを使っていない のだが、このモデルはサイドのはめ込みパネルの下に一本ネジを使っている。WHR-Gが 後継になるようだが、こちらはシールの下にネジがあり、コストカットされている ようだ。
BUFFALO WCA-G Broadcom BCM5354(0927) (CFI) 8M CFE 3.3V 115200
ゲーム機用のAirStation。はめ込みで作られているが、底面の一カ所シールの下に ネジがある。PCを使わず設定するために設定キーがあり、HOLTEK HT82K68Eが使われて いる。
BUFFALO WHR-G Broadcom BCM5354 4M(CFI) 16M CFE 1.0.37-1.18 3.3V 115200
SOCの上にヒートシンクが貼ってあって製造年が分からない。電源入れているとヒート シンクは暖かくなる。こちらの機種もサイドのシールの下にネジがある。
D-Link DIR-524 Broadcom BCM5356(1114) 2M(SPI) 16M CFE 5.10.56.46 3.3V 115200
アダプタ無しを108円でHardOffで購入。D-Linkの製品は国内であまり売られて いないので珍しかったので買ってみた。シリアルつないで確認したらCFEで止められ ないし、busyboxも立ち上がっていない。。。後から気がついたがこれ74KなMIPS だった。
Linksys WAP54G Broadcom BCM4702(0232) 4M(CFI) 16M
この機種はいろいろなタイプがあって、手元にあるの機種は基板がネットで 見かける物に比べ大きく、またチップの製造年も2002年と思われ初期のバージョン の基板なのかもしれない。LINKSYSのモジュールはDD-WRTなどの初期の代表的な ターゲットだったが、分解も面倒なのであまりいじるきが起きない。 と書いていたが、改めて開けてみたら、メモリ/フラッシュも案外大きくminiPCIが二つ もあり、何かに使えるかもしれない。この機種で使われているBCM4702は初期のBroadcom のMIPS SOCでUARTが外付けになっている。
BUFFALO WBR-B11 Broadcom BCM4702(0305) 4M(CFI) 16M ?
このタイプの機種ではPowerPCが使われているものがあって、それを狙って108円で購入 したがMIPSだった。このタイプではSH3やPowerPCやMIPSが使われているようだ。 これよりもちょっと新しいモジュールの ページがあった。
Infineon
COREGA CG-WLBARAGL Infineon ADM5120(0520) 2M(CFI) 4M ? 3.3V 115200
ATHEROSのシールが貼ってあったので、ハードオフで108円で買ってきたが、開けて みたらInfineonのチップで吃驚。有線ルータ用のSOCにAtherosのPCI WIFIモジュールを 接続した機種。Broad Net Technology, INC.という会社のローダー が入っていて、システムはLinuxではないようだ。このブートローダーはxmodemで フラッシュのアップデートが出来るみたいだがFlashが2Mなので、かなり厳しい。 このチップはバッファローの有線のルータにも使われていU-Bootを焼いているページ があった。 J4がシリアルなのだがヘッダー無しの4ピンのJ5とヘッダー有りのJ6は用途不明。 このチップは元々ADMtekという会社が作っていたようだが、2004にInfineonに買収さ れたようだ。FreeBSDのmipsサポートの初期のターゲットになっていたようで、Headに ソースがあるが、ZRouterではサポートに入っていない。
BUFFALO BBR-4HG Infineon ADM5120(0549) 2M(CFI) 8M ? 3.3V 115200
ADM5120が使われていて、ネットでいじっている人がいたのでハードオフで108円で購入。 海外だとEdimax BR-6104という製品がADM5120を使っているようだ。
BUFFALO BBR-4MG Infineon ADM5120 2M(CFI) 8M ? 3.3V 115200
Realtek
COREGA CG-BARMX Realtek RTL8650 1M(CFI) 4M ?
Flashも小さいし使い道ないかも。。。
BUFFALO BBR-4HGV2 Realtek RTL8196 2M(SPI) 8M ? 3.3V 115200
BBR-4HGと同じSOCかと思ったら、なんと違っていた。RTL8196はLexraのRLX4181を 使っているとのことだ。RTL8196はWIFI APにもなるようだが、無線のチップを搭載 していない。このチップは案外新しいのだがR3000系だ。しかしMIPS16をサポートして いるようだ。ブートログ
PLANEX MZK-MF300N Realtek RTL8196 4M(SPI) 8M ? 3.3V 38400
ACジャックの下のリセットボタンを押しながら、電源を入れるとブートローダーに 落とせる。これも不明なブートローダーだがおそらく RealTekが提供しているSDKに含まれている物ではなだろうか。 このモジュールはUSBコネクタのパターンはあるが実装されてない。抵抗とコネクタ 付ければ使えるのではないかな。
Logitec LAN-W300N/R Realtek RTL8196 4M(SPI) 16M ?
IO DATA ETG2-DR Realtek RTL8198 4M(SPI) 32M ? 3.3V 38400
有線のルーターでUSBポートがあったので、買ってきてみた。不明なブートで機能も ないみたいなんで、ブートから作らないとダメかも。
Atheros
NEC WL54TE Atheros AR2313 4M(CFI) 8M vxWorks BSP 3.3V 9600bps
Atherosなチップが使われているようなので、ACアダプタ無しを108円でHardOffで 購入。この機種は部品の劣化で発熱しメーカー交換がおこなわれたようだが、購入した 物はとくにプラスチックの変色などは見かけられない。シリアルをつないで確認した ところvxWorksが入っている模様。。。シールドの中にはAR2112が入っているのでは ないかと思われる。Atherosはチップ単体としては2313という型番で、周辺チップを 含んだ型番が5313となってるような気がする。 JTAGのパターンは見当たらない。 BroadcomのvxWorksを焼き直す方法が、 ここにあった。 Atherosでも応用できるかな。。。 AR5312+VxWorks BSP+netbsdの資料。
NEC WR6670S Atheros AR2313(0737) 4M(CFI) MX29LV320CTTC 16M M12L128324A
不明のブートの上にファームも全くログを吐いていない。ブートから作らないと だめかも。 RedBoot焼いてみた。
FON FON2100E Atheros AR5315 8M(SPI) 16M RedBoot 3.3V 9600bps
実家に帰った時にHardOffで見つけたので確認用に540円で買ってみた。FTの モジュールをTX,RX,GNDを接続して起動するとなぜか起動しない。RXとGNDだけにすると RedBoot/Linuxが起動して、その後にTXを接続してコマンドでrebootすると今度は ちゃんと起動できて、RedBootで^Cで止める事も出来る。Atherosも2004年くらいはARM からライセンスを受けたようだが、その後MIPS系にシフトした模様。 おそらく同じモジュールでVxWorksなルーターの HACKネタがあった。
FON FON2201 Atheros AR2315 8M(SPI) 16M RedBoot 3.3V 9600bps
ハードオフで324円で購入。 ZRouterでは唯一Ubiquiti/RSがAR7系でRedBootを使っているようでビルドすると 5Mくらいでおさまるので、ちょっと試している。 UrJTAGで見てみた。AtherosのチップはAR2315 とAR5315は同じ物だと思うのだが、どのような使い分けになってるのだろう。
IO-DATA WN-G54/R3 Atheros AR5315 2M(SPI) 8M ?
FON2100Eも同じチップを使ってるっぽい。 AtherosのチップはBroadcomのチップに比べ情報が少ないが KIIDAX さんが調べられています。Atherosは2011年にQualcommに買収された。 元々Atherosはデータシートを公開していなかったようだが、スペックシートやGPLで 公開されたソースから情報を取得しているようだ。 ヒートシンクの下のSwitchはMarvellの88E6060と思われる。
COREGA CG-WLBARGPX Atheros AR2317(0726) 4M(SPI) 16M RedBoot 3.3V 9600
STのFlashでSWITCHはIP175Cが使われいる。何故かRedBootからのネットワークアクセスが 遅い。
NETGEAR WGR614C v7 Atheros AR2317(0611) 2M(SPI) 8M 3.3V
SWITCHにamd6996が使われています。AR231xはいろいろなSwitchが付いたモデルが あります。
NEC WR4100N Atheros AR7240(1017)
二つ手に入れたが一つは電源投入後起動しない事がある。シリアルのピッチが狭く ピンが無い物もある。
BUFFALO WHR-HP-G300N Atheros AR7240(1134) 4M(SPI) 32M U-Boot 3.3V 115200bps
AR7系の確認がしたかったのでアダプタなしのジャンクが540円と高かったが購入 してみた。BUFFALOさんはなぜにこれだけいろいろなSOCを使っているのかな。。。 U-Bootはコントロール+Cで止められるが、ログがすごい勢いででてタイミングが 分かりにくい。ZRouterでビルドしたカーネルのログ
NEC WR8100 Atheros AR9130 4M(CFI) 32M ? 3.3V 9600
SwitchがMarvelの6065付いている。入手した物は全く起動せず、壊れていた。
NEC WR8500 Atheros AR9132(0829) 4M(CFI) 32M ? 3.3V 9600
Bootは不明だがなんとNetBSDが入っていた。
BUFFALO WZR-HP-G300NH Atheros AR9132 32M(CFI) 64M(DDR) U-Boot 3.3V 115200bps
アダプタ無しを324円でハードオフで購入。アダプタは12Vで手持ちが使えた チップの上に放熱シートが貼ってあって、チップの型番が確認できていない。 こちらはGigaのスイッチにRTL8366SRを使っているようだ。このモデルは スイッチにG301NHと同じRTL8366RBを使った物がある。
BUFFALO WZR-HP-G301NH Atheros AR9132 32M(CFI) 64M(DDR) U-Boot 3.3V 115200bps
このモデルの基板にはSDカードのソケットがありSPIの4本とプロテクトのGPIO 1本が 接続されているようなパターンがあるが、調べてみたが機能しないようです。 AR9132 rev 2にはSPIのロジックが入っていないような気がします。ひょっとすると 入ったチップもあったがCFIなFlashを使っていてSPI未使用なケースは入ってない チップに置き換えられたのかもしれません。ひょっとするとSPIではなくてGPIOなの かもしれませんが調べてません。
BUFFALO WZR-600DHP Atheros AR7161 U-Boot 3.3V 115200bps
スイッチはAR8316。このタイプの筐体は二種類あってゴム足が出っ張っているものと ぺったりしたものがある。ネジもぺったりしている方が小さくて出っ張っている方は 大きい。ACアダプタも特殊形状のコネクタと通常形状のものがある。
BUFFALO WZR-HP-G302H Atheros AR7242(1129) 16Mx2(SPI) 64M(DDR2)
アダプタ無しを324円でハードオフで購入。アダプタは12Vで手持ちが使えた WZR-HP-G300NHと同じタイプのアンテナなのだが、付け根の強度が弱くハードオフで 買ってきた両方とも壊れていた。おそらくデザインとコストを削るために、作り込ん だのだろうが、普通のアンテナにした方が良かったのではないだろうか。 GigaのスイッチにAR8316を使っている。SOCよりもこちらの方が大きい。 シリアルコンソールをつないだが信号が確認できない。オシロで見ても波形が確認できず、 そもそもHiが2.6Vな気がする。
Ralink
COREGA CG-WLBARGNS Ralink RT2780F(0817) 4M(CFI) 16M(K4S641632K×2) U-Boot 3.3V 57600bps
おそらくRT2880Fと同形の一世代目のRalink MIPS SOCと思われる。WRTR-226GNのOEM と思われる。
FON FON2305E Ralink RT3050F(0947) 2M(SPI) 32M U-Boot 3.3V 57600bps
D-LinkのDAP-1350もRalinkのチップを使ってる模様。CFIのFlashを実装する パターンとUSBのパターン有り。シリアルのヘッダーの穴がFON2405Eにはないが こちらにはあるので、実験にはこちらの方が良いかも。Ralinkも2011年にMediaTek に買収されている。BroadcomもAtherosもデーターシートがネット上に存在しないが、 Ralinkは見つける事が出来た。Ralinkは2007年くらいにはRT1310というARM系のSOC を製造していたようだが、その後MIPS系に鞍替えした模様。 RT1310は5V Technologiesの5VT1310のOEMだったのでは無いかと思われる。 RalinkはRT3050の前にRT2880というMIPS系のチップを作っていたようで、RT2880 はWIFIやEtherが別チップになっていたが、RT3050ではすべて1チップに詰め込んだ ようだ。
FON FON2405E Ralink RT3050F(1016) 2M(SPI) 32M U-Boot 3.3V 57600bps
PLANEX MZK-WNH Ralink RT3050F(0942) 4M(CFI) 16M U-Boot 3.3V 57600bps
RT3050でCFIを使っているので確認用にHardOffでACアダプタ無しを108円で購入。 秋葉でも前に見かけたが、最近はあまり見かけず、先日一つ見つけたが900円くらい で高価だった買わずにいた。アダプタは12V 1Aセンター+が使えるようだ。ずいぶん ケースがよこれていて、開けてみたら中も埃だらけだった。PLANEXのこのタイプの ケースははめ込みだが、バラしたはずみで、全面の爪が引っかかってる部分が割れて しまった。JTAGのパターンはない。 MZK-W300NH2という機種は同じ基板でメモリが倍で、RFも2つとなっているようだ。 チップにはRT3050FとプリントしてあるがFreeBSDを起動してみたところCHIP_IDは RT3052であった。なんだかな。。。 BOOT_FROMはb00 : boot from external 16-bit flashだった。FONがメモリ/フラッシュ ともに倍になっているので、あまり利用価値はないが、GPIOが8(9かも)でていることと Etherが5ポートあるので、なにかに使えるかもしれない。 この機種は基板が二種類あって、一つの方にはUSBのパターンがある模様。
COREGA CG-WLR300N Ralink RT3052F(0842) 8M(CFI) 32M U-Boot 3.3V 57600bps
324円でHardoffで購入。開けてみたらRT3052がシールドの中にあった。ACアダプタ コネクタ付近のコンデンサー TEAPO製 470uF 10V (C638, C662) が膨らんでいたので、不安定になったので手放したものかもしれない。とりあえず秋月 で470uF 16Vを一個10円で購入して交換してみた。ネットで検索しても故障の情報が ちらほらある。USBコネクタもついていてフラッシュとメモリも大きくシリアルパターン もあり、壊れた物を安く入手できれば良いターゲットかも。10度以下の寒い時期に 起動するると立ち上がらない事がある。そのまま通電して放置して電源を入れなおすと 上がったりする。暖かくなると再現しなくなる。
COREGA CG-WLR300GNV Ralink RT3052F(1047) 8M(CFI) 64M U-Boot 3.3V 57600bps
このモジュールはREALTEKのスイッチのRTL8366RBを使っている。RT3052にも スイッチは入ってるのだが、100MのスイッチでGigaにするために使っているようだ。 そのおかげで、ずいぶん基板が大きくなっている。 試しにカーネルを起動してみようかと思ったが、"rtl8366rb_initChip() failed!" とでてネットワークが認識されてなさげだ。どうしてだろう。。。昔懐かしいkermitも 使えるようだが、さすがにシリアルは遅いのでEtherでどうにかしたい。 このモジュールはBelkin F5D8235-4と似た構成のようだ。どちらもGemtekのOEMのようだ。 一次的U-Bootからネットワークが使えたので、FreeBSDを焼いてみたいが、またネット が使えなくなった。症状はU-BootとFreeBSDともにINパケットはSOCに到達している のだが、SOCからのOUTパケットが出て行かないようだ。どうもなんらかの故障のようだ。
BUFFALO WHR-G300N Ralink RT3052F(0941) 4M(CFI) 32M U-Boot 3.3V 57600bps
ハードオフで540円と高価だったが、このタイプのモジュールは手元に無かったので 購入してみた。
NEC
I/O Data WN-AG/BBR NEC VR4131(0332) 1Mx2(CFI) 8M
IDTのチップかと思って購入したらNECの古いチップだった。このチップはUARTが外付け のようで、U4/NA1がそのためのパターンと思われるが実装されていないので、手が 付けられない。無線はmini PCIのAR5212が使われている。
ZyDAS
Buffalo BLR3-TX4L ZD2001 2M(CFI) 8M
チップの上にヒートシンクが乗っていて型番が確認できないが こちらの情報から MIPS R3000系のZD2001とのこと。当初TX49かと勘違いしていた。 ZD2001はWavePlusのOEMの模様。おそらくWP32xxなのだと思うがWP3200やWP3206とは 別のような気がする。 実装されているチップは2002年後半の製造。 このモデルはかなり後になって、ネット側から設定が変えられる脆弱性が 報告 されていた。
BRECIS
COREGA WLBAR-54GT MSP2007?
FreeBSDのサポートはないが、アンテナの折れた物を324円でコレクションしてみた。 MSP200xはMMUが無いタイプの用でFreeBSDは起動できないと思う。


MIPSアーキテクチャを採用したワンチップマイコンの PIC32MX(4K)
A MIPS32 Simulator QtSpim



MIPS SOC

ソースレポジトリ

こちらを 参考にgitの追っかけを図にしてみた。

以下のコマンドで準備する。この操作は一度で大丈夫です。

% git remote add upstream https://github.com/freebsd/freebsd.git

1で本家とローカルのmasterを同期させる。masterに自分の修正を入れていなければ この操作でコンフリクトが発生する事はありません。と書いたのですが、なぜか コンフリクトが発生する事があります。とりあえず下の手順でファイルを確認して 戻して、ファイルをgithubからcurlでコピーして、commitしてもう一度mergeします。

% git checkout master
% git fetch upstream
% git merge upstream/master

2で自分のリモートmasterを更新する。

% git push

3でブランチを更新する。この操作では自分が修正したファイルがmasterでも修正されて しまうと、コンフリクトしますのでこつこつ調整してください。

% git checkout mybranch
% git merge master

私はgitのコンフリクトのファイルを修正するのがあまり好きでないので、 コンフリクトしたファイルを確認して、いったん戻してコンフリクトしたファイルを masterからひっぱって、mergeしたあとにコンフリクトしたファイルを調整するように しています。

% git status -s | grep ^UU
% git reset --hard HEAD
% git checkout master -- hogehoge.c
% git commit -a -m "back to master"
% git merge master

4で自分のリモートブランチを更新する。

% git push

FreeBSDのレビューの事は Qiitaに書きました

headが12になって11を追いかけるときは以下のようにする。

分岐したBETAはheadからmargeされるので、masterを追いかけていればBETAを追い かけていることになる。

% git merge upstream/stable/11

リモートのmasterをマージするときは以下のようにします。

% git fetch
% git merge origin/master


(c) 2001-2010 Hiroki Mori