golang樹莓派,樹莓派 golang

本文目錄一覽:

golang操作sqlite3

MacBook Linux Windows等系統安裝sqlite3

MacBook Linux 樹莓派raspberrypi安裝Golang環境

樹莓派中怎麼編譯golang,求大神支招

我現在也用vscode,不過基本上都是寫代碼,編譯運行不用這個,都是命令行,vscode裡面有個插件可以允許在命令面板中調用多種類型的cmd,記得叫start any shell好像,你可以試試。

如何在樹莓派上從源代碼構建Golang

第一步是安裝Mercurial,這是Google用來管理Go源代碼的版本控制系統。

sudo apt-get install -y mercurial

對於Mercurial系統來說,其主要的命令行接口是hg,有了這個你就能下載Golang的源代碼。下面的命令將把構建Golang所必須的源代碼下載到/usr/local/go目錄中去:

sudo hg clone -u default

這一過程大約需要10分鐘,取決於你的網速有多快了。一旦下載完成,你就可以開始構建的過程了。用cd命令將當前目錄修改為/usr/local/go/src,然後開始構建過程:

sudo ./all.bash

構建過程中會在終端上輸出很多內容,大部分都是一些信息提示。整個構建過程大概需要90分鐘到2小時。

構建進程會提示我們將Go的二進制包所在的目錄添加到系統PATH中去。要做到這一點你需要編輯.profile文件,每次你創建一個新的shell會話時,Bash都會處理這個文件。用cd命令將你的當前目錄切換回home,使用nano編輯器編輯.profile文件:

nano .profile

在文件最底部,添加如下這行:

export PATH=$PATH:/usr/local/go/bin

鍵入CTRL + X來退出nano編輯器,然後輸入Y來確定編輯過的文件已保存。按下ENTER鍵來保持當前文件名不變。

你需要退出當前的終端然後重新開啟另一個(如果你用的是桌面環境),或者也可以登出再登入(如果你用的是純命令行界面)。

要驗證Go是否安裝正確,可以創建一個名為hello.go的文件,然後寫下如下代碼(著名的hello world又來了):

package main

import “fmt”

func main() {

fmt.Printf(“Hello Make Tech Easier!\n”)

}

要運行它,請在終端上輸入:

1

go run hello.go

程序的輸出結果是一行文本:Hello Make Tech Easier!

如何編譯arm linux的go

Golang也就是Go語言,現在已經發行到1.4.1版本了,語言特性優越性和背後Google強大靠山什麼的就不多說了。Golang的官方提供了多個平台上的二進制安裝包,遺憾的是並非沒有發布ARM平台的二進制安裝包。ARM平台沒辦法直接從官網下載二進制安裝包來安裝,好在Golang是支持多平台並且開源的語言,因此可以通過直接在ARM平台上編譯源代碼來安裝。整個過程主要包括編譯工具配置、獲取Golang源代碼、設置Golang編譯環境變量、編譯、配置Golang行環境變量等步驟。

註:本文選用樹莓派做測試,因為樹莓派是基於ARM平台的。

1、編譯工具配置

據說下個版本的golang編譯工具要使用golang自己來寫,但目前還是使用C編譯工具的。因此,首先要配置好C編譯工具:

1.1 在Ubuntu或Debian平台上可以使用sudo apt-get install gcc libc6-dev命令安裝,樹莓派的RaspBian系統是基於Debian修改的,所以可以使用這種方法安裝。

1.2 在RedHat或CentOS 6平台上可以使用sudo yum install gcc libc-devel命令安裝。

安裝完成後可以輸入 gcc –version命令驗證是否成功安裝。

2、獲取golang源代碼

2.1 直接從官網下載源代碼壓縮包。

golang官網提供golang的源代碼壓縮包,可以直接下載,最新的1.4.1版本源代碼鏈接:

2.2 使用git工具獲取。

golang使用git版本管理工具,也可以使用git獲取golang源代碼。推薦使用這個方法,因為以後可以隨時獲取最新的golang源代碼。

2.2.1 首先確認ARM平台上已經安裝了git工具,可以使用git –version命令確認。一般linux平台都安裝了git,沒有的話可以自行安裝,不同平台的安裝方法可以參考:

2.2.2 克隆遠程golang的git倉庫到本地

在終端cd到你想要安裝golang的目錄,確保該目錄下沒有名為go的目錄。然後以下命令獲取代碼倉庫:

git clone

大陸地區可能會獲取失敗,在不翻牆的情況下我試了幾次都沒成功,原因大家都懂的。好在google已經將golang也託管到github上面,所以也可以通過下面命令獲取:

git clone

視網絡情況,下載可能需要不少時間。我2M的帶寬花了將近兩個小時才下載完,雖然整個項目不過幾十兆= =

下載完成後,可以看到目錄下多了一個go目錄,裡面即為golang的源代碼,在終端上執行cd go命令進入該目錄。

執行下面命令檢出go1.4.1版本的源代碼,因為現在已經有新的代碼提交上去了,最新的代碼可能不是最穩定的:

git checkout go1.4.1

至此,最新1.4.1發行版的源代碼獲取完畢

3、設置golang的編譯環境變量

主要有GOROOT、GOOS、GOARCH、GOARM四個環境變量需要設置,先解釋四個環境變量的意義。

3.1 GOROOT

主要代表golang樹結構目錄的路徑,也就是上面git檢出的go目錄。一般可以不用設置這個環境變量,因為編譯的時候默認會以go目錄下src子目錄中的all.bash腳本運行時的父目錄作為GOROOT的值。為了保險起見,可以直接設置為go目錄的路徑。

3.2 GOOS和GOARCH

分別代表編譯的目標系統和平台,可選值如下:

GOOS GOARCH

darwin 386

darwin amd64

dragonfly 386

dragonfly amd64

freebsd 386

freebsd amd64

freebsd arm

linux 386

linux amd64

linux arm

netbsd 386

netbsd amd64

netbsd arm

openbsd 386

openbsd amd64

plan9 386

plan9 amd64

solaris amd64

windows 386

windows amd64

需要注意的是這兩個值代表的是目標系統和平台,而不是編譯源代碼的系統和平台。樹莓派的RaspBian是linux系統,所以這些GOOS設置為linux,GOARCH設置為arm。

3.3 GOARM

表示使用的浮點運算協處理器版本號,只對arm平台有用,可選值有5,6,7。如果是在目標平台上編譯源代碼,這個值可以不設置,它會自動判斷需要使用哪一個版本。

總結下來,在樹莓派上設置golang的編譯環境變量,可編輯$HOME/.bashrc文件,在末尾添加下面內容:

export GOROOT=你的go目錄路徑

export GOOS=linux

export GOARCH=arm

編輯完後保存,執行source ~/.bashrc命令讓修改生效。

4、編譯源代碼

環境變量配置完成自後就可以開始編譯源代碼。在go目錄下的src子目錄中,主要有all.bash和make.bash兩個腳本(另外還有兩個all.bat和make.bat腳本適用於window平台)。編譯實際上就是執行其中一個腳本,兩者的區別在於all.bash在編譯完成後還會執行一些測試套件。如果希望只編譯不測試,可以運行make.bash腳本。使用cd命令進入go下src目錄,執行./all.bash或者./make.bash命令即可開始編譯。由於硬件情況不同,編譯耗費的時間不同。在我的B型樹莓派編譯過程花費了將近半個小時,編譯完成後執行的測試套件又花費了差不多一個小時,總共花費了一個半小時左右。

5、配置golang運行環境變量

編譯完成後,go目錄下會生成bin目錄,裡面就是go的運行腳本。為了以後使用方法,可以將這個bin路徑添加到PATH環境變量中。同樣編輯~/.bashrc文件,因為前面設置過GOROOT環境變量指向go目錄了,所以只需要在末尾加上

export PATH=$PATH:$GOROOT/bin

保存後同樣執行source ~/.bashrc命令讓環境變量生效。

至此,golang源代碼編譯安裝成功。執行go version應該就能看到當前golang的版本信息,表示編譯安裝成功。

【原創】樹莓派3B開發Go語言(四)-自寫庫實現pwm輸出

在前一小節中介紹了點亮第一個LED燈,這裡我們準備進階嘗試下,輸出第一段PWM波形。(PWM也就是脈寬調製,一種可調占空比的技術,得到的效果就是:如果用示波器測量引腳會發現有方波輸出,而且高電平、低電平的時間是可調的。)

這裡爪爪熊準備寫成一個golang的庫,並開源到github上,後續更新將直接更新到github中,如果你有興趣可以和我聯繫。 github.com/dpawsbear/bear_rpi_go

我在很多的教程中都看到說樹莓派的PWM(硬件)只有一個GPIO能夠輸出,就是 GPIO1 。這可是不小的打擊,因為我想使用至少四個 PWM ,還是不死心,想通過硬件手冊上找尋蛛絲馬跡,看看究竟怎麼回事。

手冊上找尋東西稍等下講述,這裡先提供一種方法測試 樹莓派3B 的 PWM 方法:用指令控制硬件PWM。

這裡通過指令的方式掌握了基本的pwm設置技巧,決定去翻一下手冊看看到底PWM怎麼回事,這裡因為沒有 BCM2837 的手冊,根據之前文章引用官網所說, BCM2835 和 BCM2837 應該是一樣的。這裡我們直接翻閱 BCM2835 的手冊,直接找到 PWM 章節。找到了如下圖:

圖中可以看到在博通的命名規則中 GPIO 12、13、18、19、40、41、45、52、53 均可以作為PWM輸出。但是只有兩路PWM0 PWM1。根據我之前所學知識,不出意外應該是PWM0 和 PWM1可以輸出不一樣的占空比,但是頻率應該是一樣的。因為沒有示波器,暫時不好測試。先找到下面對應圖:

根據以上兩個圖對比可以發現如下規律:

對照上面的表可以看出從 BCM2837 中印出來的能夠使用在PWM上的就這幾個了。

為了驗證個人猜想是否正確,這裡先直接使用指令的模式,模擬配置下是否能夠正常輸出。

通過上面一系列指令模擬發現,(GPIO1、GPIO26)、(GPIO23、GPIO24)是綁定在一起的,調節任意一個,另外一個也會發生變化。也即是PWM0、PWM1雖然輸出了兩路,可以理解成兩路其實都是連在一個輸出口上。這裡由於沒有示波器或者邏輯分析儀這類設備(僅有一個LED燈),所以測試很簡陋,下一步是使用示波器這類東西對頻率以及信號穩定性進行下測試。

小節:樹莓派具有四路硬件輸出PWM能力,但是四路中只能輸出兩個獨立(占空比獨立)的PWM,同時四路輸出的頻率均是恆定的。

上面大概了解清楚了樹莓派3B的PWM結構,接下來就是探究如何使用Go語言進行設置。

因為拿到了手冊,這裡我想直接操作寄存器的方式進行設置,也是順便學習下Go語言處理寄存器的過程。首先需要拿到pwm 系列寄存器的基地址,但是翻了一圈手冊,發現只有偏移,沒有找到基地址。

經過了一段時間的努力後,決定寫一個 樹莓派3B golang包開源放在github上,只需要寫相關程序進行調用就可以了,以下是相關demo(pwm)(在GPIO.12 上輸出PWM波,放上LED燈會有呼吸燈的效果,具體多少頻率還沒有進行測試)

以下是demo(pwm) 源碼

原創文章,作者:NZND,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/139698.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
NZND的頭像NZND
上一篇 2024-10-04 00:22
下一篇 2024-10-04 00:22

相關推薦

  • Python樹莓派繼電器控制風扇

    本文主要介紹如何使用Python控制樹莓派GPIO口上的繼電器去控制風扇的開關。 一、材料準備 在開始之前,我們需要準備一些材料,包括: 樹莓派 杜邦線 繼電器 風扇 二、接線方式…

    編程 2025-04-29
  • 使用Golang調用Python

    在現代軟件開發中,多種編程語言的協作是相當普遍的。其中一種使用場景是Golang調用Python,這使得在使用Python庫的同時,可以利用Golang的高性能和強大並發能力。這篇…

    編程 2025-04-29
  • 樹莓派DIY無人機一:製作基礎

    本文將介紹如何使用樹莓派製作一個可飛行的小型無人機。本文將介紹樹莓派的選型、比例積木的使用、無線電通信以及如何控制飛行器的基本運動。 一、樹莓派的選型 在DIY無人機中,樹莓派是必…

    編程 2025-04-29
  • 使用Golang創建黑色背景圖片的方法

    本文將從多個方面介紹使用Golang創建黑色背景圖片的方法。 一、安裝必要的代碼庫和工具 在開始創建黑色背景圖片之前,我們需要先安裝必要的代碼庫和工具: go get -u git…

    編程 2025-04-29
  • 樹莓派 Python全能編程實踐指南

    樹莓派是一款低成本、高性能的微型電腦,採用的是ARM架構,搭載了Linux操作系統,因其獨特的硬件和軟件特性,被廣泛應用於嵌入式系統、物聯網、機器人、智能音箱、遊戲機等領域。 Py…

    編程 2025-04-27
  • 樹莓派Python——從入門到入坑

    樹莓派是一款單片計算機,可以通過 GPIO 接口來進行硬件編程,能夠實現電子製作及硬件控制應用。同時,它也可以運行 Python,並且 Python 是其預裝的編程語言。那麼,針對…

    編程 2025-04-27
  • Python樹莓派的應用與實現

    Python作為一門高級編程語言,擁有廣泛的應用領域。結合樹莓派這種小型化的硬件設備,可以實現許多有趣的項目和實用的應用。本文將以Python樹莓派的應用為中心,從多個方面進行闡述…

    編程 2025-04-27
  • Golang中使用strings.Split函數進行字符串分割的方法

    一、Split函數的基本用法 字符串是編程中常見的數據類型,它們可以在程序中被處理、存儲和傳輸。在Go語言中,字符串也是一個基本的數據類型,而strings包提供了一些操作字符串的…

    編程 2025-04-23
  • 深入下探golang http server

    Go語言已經成為了軟件開發領域的熱門語言,它的高性能、應用廣泛、安全性好,使得它成為了眾多開發者心目中的首選編程語言。在眾多應用場景中,golang http server的應用非…

    編程 2025-04-23
  • Golang環境變量全面解析

    Golang是一門非常流行的開發語言,擁有高效的CGO、簡單易懂的語法、高並發能力等優點,然而它也需要使用環境變量來配置一些參數。在本篇文章中,我們將從多個方面對Golang環境變…

    編程 2025-04-23

發表回復

登錄後才能評論