Go Wiki: MIPS 上での Go
はじめに
Go プログラムは、たとえば x86/x86_64 ビルドシステム上でクロスコンパイルして、MIPS ターゲットマシンで実行できます。
サポートされるアーキテクチャ
Go は、以下の MIPS アーキテクチャファミリをサポートしています。(他にもありますか?)
アーキテクチャ | ステータス | GOMIPS 値 | GOARCH 値 |
---|---|---|---|
ビッグエンディアン (例: ar71xx) | サポート | GOMIPS=softfloat | GOARCH=mips |
リトルエンディアン | サポート | n/a | GOARCH=mipsle |
サポートされるオペレーティングシステム
- Linux 上の MIPS。ar71xx ベースの OpenWrt デバイスでテスト済み。
推奨される Go バージョン
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 のビルドと実行に成功した場合は、ここに結果を詳しく記載してください。
D-Link DIR-505 モバイルコンパニオン
アーキテクチャ: 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/ を参照してください。
TP-Link Archer A6 WiFi ルーター
アーキテクチャ: 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 の一部です。