FreeBSDのmipsまわり

これは12-CURRENT時代の主にSOC関係の話です。mipsはもちろんディスクトップもありましたが、ほとんど手に入らないと思います。その点SOCベースのものは比較的簡単に入手できます。mipsサポートは[Tier 3](https://www.freebsd.org/platforms/index.html)でリリースは作らないけどビルドはできる状態になっています。自分はビルドは[ZRouter](https://qiita.com/yamori813/items/2fc5b14648029bb4730f)で行っています。メモリ16MのFlash4Mが最低ラインです。mipsは未だにgcc 4.2を使い続けています。

# Atheros(Qualcomm)

AR7/9やQCA955Xのサポートコードがある。唯一BIG EndianなSOC。FDT/INTRNG非対応なコードになっている。コンフィグレーションはhintsベース。大きく分けると100のEtherswitchが入ったチップと入ってないチップがあります。両方共Etherインターフェースは二つあります。データーシートはコンフィデンシャルだが漏れているものが入手可能。

mips/atheros/ar531xに古いAR2/5系のサポートコードがある。NetBSDのコードなどをベースに私が作りました。なぜこれを作ったかというと、このころのSOCにはEthernet Switchが入っていなくて外付けでいろいろなチップが使われていて、それを試したかったからです。このチップは二世代あり、最初のチップはFlashがCFIでEtherインターフェースが2つあり、後の世代はFlashがSPIでEtherが1つになりました。こちらはNON-FDTだがINTRNGは対応してあります。

# Mediatek

[Ralink時代](https://qiita.com/yamori813/items/09f976d2970cad24fd5a)のRT3050やMediatekになってからのMT7620などのコードがある。rayさんがやっていたmips/rt3050を実装し直した。FTD/INTRNG対応済み。データーシートはネットで入手可能。MediatekはSOCの種類も少なくアーキテクチャもシンプルで、私の一押し。

# Broadcom

mipsサポートの初期のコードを再実装している。BroadcomはMIPS SOCを止めてしまったので、ターゲットは結構限られるし、後期のSOCは日本ではほとんど目にしない。FDT対応はしていないがbhndというドライバーを使ってコンフィグレーションをしている。このメーカーのSOCは2種類あり、sibaを使ったものとbcma(AMBA)を使ったもの。INTRNGは対応済み。データーシートはまったく入手できない。ブートローダーがCFEというBroadcomオリジナルになっている。こちらもrayさんがやっていた物を再実装している。実装が大きくなってしまっている上にチップがいろいろあり、かなり厳しい状態。(個人的にsibaなターゲットはFreeBSDをあきらめてBareMetalでmrubyを動くようにしました。）

|チップ|タイプ|備考|
|:--|:--|:--|
|BCM4712|siba|11gの初期のWIFIチップ。Buffaloでいろいろつかわていた。メモリ16MのFlash 4Mのモデルがほとんど。Etherswitch無しの11gの最終のチップ。|
|BCM5350,2,4|siba|11gの後期のWIFIチップ。Buffaloでいろいろつかわていた。Etherswitchが内蔵されている。メモリ16MのFlash 4Mのモデルがほとんど。|
|BCM4718,BCM5356|bcma|BCM/mips最後の頃のチップ。WIFIは11n。日本ではほとんど使われてない。|
|BCM33xx|?|ケーブルモデム用のチップで、WIFI AP系のチップとは別のよう。日本にはほとんど入ってきてない。大変紛らわしいのはBMIPS3300というアーキテクチャがあること。BCM3380,3383,3384,3390まであったようです。BCM3380は珍しいデュアルコア。BCM66XXの亜流のようです。|
|BCM66xx|?|DSL用のチップでBCM33xxとCPUは同じなのではないかと思われる。6338,6348,6358,6362,6368があったよう。|
|BCM7405|?|セットトップボックス用のソリューションの模様。|

![BCM_MIPS.png](https://qiita-image-store.s3.amazonaws.com/0/104066/4c2d6fac-c175-54d8-fc59-e2d3ece517cb.png)


# 他

以前はAdmtek(Infineonに買収)やIDTなどのポートもあったのですが、ターゲットがあまりなくメモリーなどのリソースも小さかったので消されてしまいました。

# ターゲット

これらのチップは市販の無線ルーターに入っています。自分はハードオフで入手しています。ハードオフのジャンクは保障が無いのであまりお勧めはできません。ただ私の肌感では5%くらいの確率で壊れているものもあるていどで、ほとんど正常に使えます。Atheros/Mediatekはu-bootを使ってますが、NecのAtherosは独自bootなのでいじるのは難しいです。Broadcomは11gの頃の無線ルーターでは使われていましたが、11n以降では国内ではあまり使われなくなっています。

# 登場人物

## Adrian Chadd

元AtherosでAtherosとWiFiの人。mips系コミッターのメンター。オーストラリア出身でアメリカ在住。

## Oleksandr Rybalko(ray)

ZRouter.orgを始めた人。最近はあまりFreeBSDはアクティブではないけど、ZRouterは続けてます。Rayが書いたコードはいくつか書き直されてますが、いろいろ功績があります。ウクライナの人

## Oleksandr Tymoshenko(gonzo)

AtherosやAdamtekなどのドライバーを書いていました。armやdevの下にもいろいろコードがあります。gonzoさんのコードは非常に分かりやすく、私が書いてるドライバーの下敷きになっています。ウクライナ出身で今はアメリカにいるようです。

## Stefan Bethke

etherswitchを作った人。rayと最初は一緒にやってたみたいなんですが、途中から別々な開発になり、etherswitchがHEADに入りました。ドイツの人。

## Stanislav Galabov

Mediatek(Ralink)対応をFDTで書き直した人。mips/mediatekの実装はちょっと風変わりで面白いです。Mediatekのサポートはかなり広くどうやって作ったのか聞いてたかったりします。ブルガリアの人

## Landon Fuller

Broadcom周りの人。bhndやてます。bhndは作り込みが大きくなっていて、個人的にはあまり好きではありません。元Appleでアメリカの人

## Michael Zhilin

Landonと一緒にBroadcom周り。AsiaBSDCon2018に参加してました。私のレビューをいろいろ見てもらってます。仕事で日本来ることが何度かあり、会っていました。ロシアの人

## Hiroki Mori

自分はコミッターじゃないですけどいろいろいじってレビュー出してます。Atherosの古いSOCのサポートやRalinkの最初のSOCのRT2880のサポートやMediatek GPIOのGPSサポートなどなど。日本の人