Go Wiki: MIPS上のGo

はじめに

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

対応アーキテクチャ

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

アーキテクチャ 現状 GOMIPS値 GOARCH値
ビッグエンディアン (例: ar71xx) サポート対象 GOMIPS=softfloat GOARCH=mips
リトルエンディアン サポート対象 該当なし GOARCH=mipsle

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

  • Linux上のMIPS。ar71xxベースのOpenWrtデバイスでテスト済み。

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 Mobile Companionには、Atheros AR1311プロセッサ、8MBフラッシュ、64MB 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で動作し、16MBフラッシュと128MB 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で動作し、16MBフラッシュと128MB 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 classicプロセッサ、16MBフラッシュ、128MB 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 classicプロセッサ、8MBフラッシュ、64MB 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の一部です。