Go Wiki: MIPS 上での Go

はじめに

Go プログラムは、たとえば x86/x86_64 ビルドシステム上でクロスコンパイルして、MIPS ターゲットマシンで実行できます。

サポートされるアーキテクチャ

Go は、以下の MIPS アーキテクチャファミリをサポートしています。(他にもありますか?)

アーキテクチャ ステータス GOMIPS 値 GOARCH 値
ビッグエンディアン (例: ar71xx) サポート GOMIPS=softfloat GOARCH=mips
リトルエンディアン サポート n/a GOARCH=mipsle

サポートされるオペレーティングシステム

MIPS システム上で Go を実行するためにテストされたバージョンは Go 1.13 です。

ヒントとコツ

ar71xx OpenWrt 向けのビルド

これにより、Go プログラムをビルドし、不要な文字列とシンボルを削除してサイズを最小限に抑え、さらに圧縮してサイズを最小限に抑えます。

env GOOS=linux GOARCH=mips GOMIPS=softfloat  go build -trimpath -ldflags="-s -w" 'server.go'
upx -9 server

成功事例

MIPS ハードウェアにはさまざまな形状とサイズがあります。Arm システムで Go のビルドと実行に成功した場合は、ここに結果を詳しく記載してください。

アーキテクチャ: ar71xx

オペレーティングシステム: OpenWrt

D-Link DIR-505 モバイルコンパニオンには、Atheros AR1311 プロセッサ、8 MB のフラッシュ、および 64 MB の RAM が搭載されています。この容量は限られていますが、ネットワークなどから Go アプリケーションを /tmpfs にロードして、そこから実行できます。

デバイスの詳細については、https://openwrt.org/toh/d-link/dir-505 を参照してください。

Teltonika RUT955

アーキテクチャ: ar9344

オペレーティングシステム: RutOS (OpenWrt ベース)

Teltonika RUT955 は、Atheros Wasp MIPS 74Kc CPU を 550 MHz で実行し、16 MB のフラッシュと 128 MB の RAM を搭載しています。内蔵フラッシュはほとんどのアプリケーションには不十分ですが、Micro SD または USB スティックを追加できます (SD から直接アプリケーションを実行すると信頼性が低いですが、/tmpfs にコピーしてそこから実行すると問題なく動作します)。内蔵 IO、GPS などは Modbus TCP を介してアクセスでき、RS232/RS485 ポートは問題なく動作しました。Go 1.14.6、1.15.3 および 1.21.1 でテスト済み (GOARCH=mips, GOMIPS=softfloat)。

デバイスの詳細については、https://teltonika-networks.com/product/rut955/ を参照してください。

Teltonika RUT956

アーキテクチャ: MediaTek MT7628AN ver:1 eco:2

オペレーティングシステム: RutOS (OpenWrt ベース)

Teltonika RUT956 は、Mediatek MIPS 24KEc CPU を 580 MHz で実行し、16 MB のフラッシュと 128 MB の RAM を搭載しています。内蔵フラッシュはほとんどのアプリケーションには不十分ですが、USB スティックを追加できます。内蔵 IO、GPS などは Modbus TCP を介してアクセスでき、RS232/RS485 ポートは問題なく動作しました。Go 1.21.1 でテスト済み (GOARCH=mipsle, GOMIPS=softfloat)。GOMIPS が設定されていない場合、illegal instruction が出力されることに注意してください。

デバイスの詳細については、https://teltonika-networks.com/product/rut956/ を参照してください。

アーキテクチャ: ath79 (ar71xx と同じハードウェアですが、ネイティブカーネルサポートがあります)

オペレーティングシステム: OpenWrt

TP-Link Archer A6 には、Atheros QCA9563 MIPS 24K クラシックプロセッサ、16 MB のフラッシュ、および 128 MB の RAM が搭載されています。フラッシュストレージは限られており、ストレージ拡張用の USB ポートがないため、プログラムはネットワークから /tmpfs にロードされ、実行されます。

デバイスの詳細については、https://openwrt.org/toh/hwdata/tp-link/tp-link_archer_a6_us_tw を参照してください。

Belkin F7D7302 WiFi ルーター

アーキテクチャ: mipsel_74kc

オペレーティングシステム: DD-WRT

Belkin F7D7302 には、Broadcom BCM4716 リトルエンディアン MIPS 74K クラシックプロセッサ、8 MB のフラッシュ、および 64 MB の RAM が搭載されています。フラッシュストレージは非常に限られていますが、USB ポートがあるため、プログラムをフラッシュドライブにロードして実行できます。

デバイスの詳細については、https://openwrt.org/toh/belkin/f7d3302 を参照してください。

AVM FRITZ!Box 7362 SL

システムタイプ: xRX200 rev 1.2
CPU モデル: MIPS 34Kc V5.6

オペレーティングシステム: OpenWrt 21

デバイスの詳細については、https://openwrt.org/toh/avm/avm_7362_sl を参照してください。


このコンテンツは、Go Wiki の一部です。