Go Wiki: MIPS上のGo
はじめに
Goプログラムは、例えばx86/x86_64ビルドシステム上でクロスコンパイルして、MIPSターゲットマシンで実行できます。
対応アーキテクチャ
Goは以下のMIPSアーキテクチャファミリーをサポートしています。(他にもありますか?)
| アーキテクチャ | 現状 | GOMIPS値 | GOARCH値 |
|---|---|---|---|
| ビッグエンディアン (例: ar71xx) | サポート対象 | GOMIPS=softfloat | GOARCH=mips |
| リトルエンディアン | サポート対象 | 該当なし | 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 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/で確認できます。
TP-Link Archer A6 WiFiルーター
アーキテクチャ: 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の一部です。