MIPS(極路由1s[mt7620a])平台OpenWrt路由器系統內的Go應用程序開發


起因,由於coolpy5核心轉換到go語言開發,所以目前超人正在進行相關的技術攻關,在程序編寫方面一切都相對順利。由於coolpy5是一個真正的商業級性能的系統也考濾到coolpy之前的版本已經確定的coolpy是支持以家庭路由器為霧計算節點直接實現智能家居或智慧農業的離線解決方案,所以超人才進行了這一次技術預測試,也為以后coolpy這環節的閉環作准備工作。以下文章關於openwrt相關的基礎將會略過,看不懂的朋友請自行查找相關知識點。

略過知識點:

1.linux基礎(交叉編譯基礎)

2.openwrt管理(openwrt基礎)

游戲開始:

1.首先通過putty連接到路由器看看路由器cpu架構/這里邊有一個錯誤,你看到的所有cpu相關的描述都是mips字眼,其實極1s路由器的這個cpu(mt7620a)是mipsel架構,即在交叉編譯時我們所設置的goarch參數應該是mips32le才正確,如果你使用的cpu是用mips的其他路由器請自行把這個參數設置為mips32即可。

image

2.交叉編譯環境配置,go-mips32這個項目維護人數是400+人,我個人推測這可能是 golang團隊牽頭的,希望以后能正式集成到golang的新版本中。

//下載go-mips32源
git clone https://github.com/gomini/go-mips32.git
cd go-mips32/src

//配置GO編譯參數
export GOOS=linux
export GOARCH=mips32le <== Change to mips32 if mips

//執行編譯

./make.bash
cd ..

//創建編譯后文件存放文件夾
sudo mkdir /opt/mipsgo

//復制
sudo cp -R * /opt/mipsgo

//go工程參數配置
export GOROOT=/opt/mipsgo
export PATH=/opt/mipsgo/bin:$PATH

3.編譯go程序作為測試

mkdir /opt/slu

cd /opt/slu

vim main.go

//源代碼………………………………………………………….

package main

import "fmt"

func main() {
fmt.Println("hello icoolpy.com")
}
//源代碼…………………………………………………
//保存退出

由於以上已經設置了path所以在編譯打包go源代碼時要直接在要打包的.go程序文件夾下直接執行go build指令即可go build main.go

image

在當前目錄下會生成編譯后的執行文件,這個文件就是我們的程序,可以直接在極路由1s的openwrt系統里運行

image

把main文件通過WinSCP上傳到路由器文件系統

image

提權main文件,默認情況下main文件是沒有執行權限的,所以通過指令提權讓它可以被運行,修改成功后可以看到main文件顯示為綠色。

image

執行main程序測試運行

image

hello icoolpy.com已被打印出來,說明程序已正常運行。

//補充…………………………………………………………………………

如果開發后的源代碼需要引用到其他源,需要在go build 命令執行之前把這些包的源代碼放到目標目錄下(本例): /opt/mipsgo/src/

注意:如果你用的是虛擬機運行的編譯系統,在主系統拖放包到虛擬系統時要注意復制進去的文件是否都正常,最好先打包為zip再拖進虛擬系統。

結束語:

Coolpy5將以上億級的物聯網運行設備為設計開發目標的物聯網系統,將繼續支持hub節點離線運行於由路器作為霧計算終端。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM