可以的。樹莓派是為學(xué)習(xí)計(jì)算機(jī)編程教育而設(shè)計(jì),只有信用卡大小的微型電腦,樹莓派可以用go語(yǔ)言寫的。Go是Google的RobertGriesemer,RobPike及KenThompson開(kāi)發(fā)的一種靜態(tài)強(qiáng)類型、編譯型語(yǔ)言。
10余年的坡頭網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。網(wǎng)絡(luò)營(yíng)銷推廣的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整坡頭建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)從事“坡頭網(wǎng)站設(shè)計(jì)”,“坡頭網(wǎng)站推廣”以來(lái),每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
說(shuō)明:這里筆者使用 gobot框架
官網(wǎng):
執(zhí)行下面命令:
命令執(zhí)行完成后,會(huì)生成一個(gè)main的二進(jìn)制文件,那個(gè)就是我們的程序
備注:如果你想編譯其他版本的樹莓程序?修改 GOARM 即可
GOARM=6 (Raspberry Pi A, A+, B, B+, Zero) GOARM=7 (Raspberry Pi 2, 3)
備注:總結(jié)后面有上傳腳本 ^?_?^
1.請(qǐng)確保你已經(jīng)連接到樹莓派了
2.如果無(wú)法上傳,或者報(bào)錯(cuò),請(qǐng)查權(quán)限是否正確
執(zhí)行上傳命令:
scp main pi@192.168.1.xxx :/home/pi/
1.請(qǐng)確保你已經(jīng)連接到樹莓派了
進(jìn)入 /home/pi (就是你剛上傳的文件路徑)
運(yùn)行它: ./main
祝你好運(yùn)!
1.上傳文件的時(shí)候,請(qǐng)注意命令
2.不知道如何ssh登陸樹莓派?(請(qǐng)看我上一篇文章)
3.當(dāng)然需要一點(diǎn)linux的知識(shí)
Golang也就是Go語(yǔ)言,現(xiàn)在已經(jīng)發(fā)行到1.4.1版本了,語(yǔ)言特性優(yōu)越性和背后Google強(qiáng)大靠山什么的就不多說(shuō)了。Golang的官方提供了多個(gè)平臺(tái)上的二進(jìn)制安裝包,遺憾的是并非沒(méi)有發(fā)布ARM平臺(tái)的二進(jìn)制安裝包。ARM平臺(tái)沒(méi)辦法直接從官網(wǎng)下載二進(jìn)制安裝包來(lái)安裝,好在Golang是支持多平臺(tái)并且開(kāi)源的語(yǔ)言,因此可以通過(guò)直接在ARM平臺(tái)上編譯源代碼來(lái)安裝。整個(gè)過(guò)程主要包括編譯工具配置、獲取Golang源代碼、設(shè)置Golang編譯環(huán)境變量、編譯、配置Golang行環(huán)境變量等步驟。
注:本文選用樹莓派做測(cè)試,因?yàn)闃漭墒腔贏RM平臺(tái)的。
1、編譯工具配置
據(jù)說(shuō)下個(gè)版本的golang編譯工具要使用golang自己來(lái)寫,但目前還是使用C編譯工具的。因此,首先要配置好C編譯工具:
1.1 在Ubuntu或Debian平臺(tái)上可以使用sudo apt-get install gcc libc6-dev命令安裝,樹莓派的RaspBian系統(tǒng)是基于Debian修改的,所以可以使用這種方法安裝。
1.2 在RedHat或CentOS 6平臺(tái)上可以使用sudo yum install gcc libc-devel命令安裝。
安裝完成后可以輸入 gcc --version命令驗(yàn)證是否成功安裝。
2、獲取golang源代碼
2.1 直接從官網(wǎng)下載源代碼壓縮包。
golang官網(wǎng)提供golang的源代碼壓縮包,可以直接下載,最新的1.4.1版本源代碼鏈接:
2.2 使用git工具獲取。
golang使用git版本管理工具,也可以使用git獲取golang源代碼。推薦使用這個(gè)方法,因?yàn)橐院罂梢噪S時(shí)獲取最新的golang源代碼。
2.2.1 首先確認(rèn)ARM平臺(tái)上已經(jīng)安裝了git工具,可以使用git --version命令確認(rèn)。一般linux平臺(tái)都安裝了git,沒(méi)有的話可以自行安裝,不同平臺(tái)的安裝方法可以參考:
2.2.2 克隆遠(yuǎn)程golang的git倉(cāng)庫(kù)到本地
在終端cd到你想要安裝golang的目錄,確保該目錄下沒(méi)有名為go的目錄。然后以下命令獲取代碼倉(cāng)庫(kù):
git clone
大陸地區(qū)可能會(huì)獲取失敗,在不翻墻的情況下我試了幾次都沒(méi)成功,原因大家都懂的。好在google已經(jīng)將golang也托管到github上面,所以也可以通過(guò)下面命令獲取:
git clone
視網(wǎng)絡(luò)情況,下載可能需要不少時(shí)間。我2M的帶寬花了將近兩個(gè)小時(shí)才下載完,雖然整個(gè)項(xiàng)目不過(guò)幾十兆= =
下載完成后,可以看到目錄下多了一個(gè)go目錄,里面即為golang的源代碼,在終端上執(zhí)行cd go命令進(jìn)入該目錄。
執(zhí)行下面命令檢出go1.4.1版本的源代碼,因?yàn)楝F(xiàn)在已經(jīng)有新的代碼提交上去了,最新的代碼可能不是最穩(wěn)定的:
git checkout go1.4.1
至此,最新1.4.1發(fā)行版的源代碼獲取完畢
3、設(shè)置golang的編譯環(huán)境變量
主要有GOROOT、GOOS、GOARCH、GOARM四個(gè)環(huán)境變量需要設(shè)置,先解釋四個(gè)環(huán)境變量的意義。
3.1 GOROOT
主要代表golang樹結(jié)構(gòu)目錄的路徑,也就是上面git檢出的go目錄。一般可以不用設(shè)置這個(gè)環(huán)境變量,因?yàn)榫幾g的時(shí)候默認(rèn)會(huì)以go目錄下src子目錄中的all.bash腳本運(yùn)行時(shí)的父目錄作為GOROOT的值。為了保險(xiǎn)起見(jiàn),可以直接設(shè)置為go目錄的路徑。
3.2 GOOS和GOARCH
分別代表編譯的目標(biāo)系統(tǒng)和平臺(tái),可選值如下:
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
需要注意的是這兩個(gè)值代表的是目標(biāo)系統(tǒng)和平臺(tái),而不是編譯源代碼的系統(tǒng)和平臺(tái)。樹莓派的RaspBian是linux系統(tǒng),所以這些GOOS設(shè)置為linux,GOARCH設(shè)置為arm。
3.3 GOARM
表示使用的浮點(diǎn)運(yùn)算協(xié)處理器版本號(hào),只對(duì)arm平臺(tái)有用,可選值有5,6,7。如果是在目標(biāo)平臺(tái)上編譯源代碼,這個(gè)值可以不設(shè)置,它會(huì)自動(dòng)判斷需要使用哪一個(gè)版本。
總結(jié)下來(lái),在樹莓派上設(shè)置golang的編譯環(huán)境變量,可編輯$HOME/.bashrc文件,在末尾添加下面內(nèi)容:
export GOROOT=你的go目錄路徑
export GOOS=linux
export GOARCH=arm
編輯完后保存,執(zhí)行source ~/.bashrc命令讓修改生效。
4、編譯源代碼
環(huán)境變量配置完成自后就可以開(kāi)始編譯源代碼。在go目錄下的src子目錄中,主要有all.bash和make.bash兩個(gè)腳本(另外還有兩個(gè)all.bat和make.bat腳本適用于window平臺(tái))。編譯實(shí)際上就是執(zhí)行其中一個(gè)腳本,兩者的區(qū)別在于all.bash在編譯完成后還會(huì)執(zhí)行一些測(cè)試套件。如果希望只編譯不測(cè)試,可以運(yùn)行make.bash腳本。使用cd命令進(jìn)入go下src目錄,執(zhí)行./all.bash或者./make.bash命令即可開(kāi)始編譯。由于硬件情況不同,編譯耗費(fèi)的時(shí)間不同。在我的B型樹莓派編譯過(guò)程花費(fèi)了將近半個(gè)小時(shí),編譯完成后執(zhí)行的測(cè)試套件又花費(fèi)了差不多一個(gè)小時(shí),總共花費(fèi)了一個(gè)半小時(shí)左右。
5、配置golang運(yùn)行環(huán)境變量
編譯完成后,go目錄下會(huì)生成bin目錄,里面就是go的運(yùn)行腳本。為了以后使用方法,可以將這個(gè)bin路徑添加到PATH環(huán)境變量中。同樣編輯~/.bashrc文件,因?yàn)榍懊嬖O(shè)置過(guò)GOROOT環(huán)境變量指向go目錄了,所以只需要在末尾加上
export PATH=$PATH:$GOROOT/bin
保存后同樣執(zhí)行source ~/.bashrc命令讓環(huán)境變量生效。
至此,golang源代碼編譯安裝成功。執(zhí)行g(shù)o version應(yīng)該就能看到當(dāng)前golang的版本信息,表示編譯安裝成功。
從源代碼編譯golang(sd) 還是編譯go程序?
如果是編譯go程序的話直接用go交叉編譯一個(gè)linux/arm版本的可執(zhí)行文件就行,可以裝個(gè)gox, 能同時(shí)編譯多個(gè)版本
在前一小節(jié)中介紹了點(diǎn)亮第一個(gè)LED燈,這里我們準(zhǔn)備進(jìn)階嘗試下,輸出第一段PWM波形。(PWM也就是脈寬調(diào)制,一種可調(diào)占空比的技術(shù),得到的效果就是:如果用示波器測(cè)量引腳會(huì)發(fā)現(xiàn)有方波輸出,而且高電平、低電平的時(shí)間是可調(diào)的。)
這里爪爪熊準(zhǔn)備寫成一個(gè)golang的庫(kù),并開(kāi)源到github上,后續(xù)更新將直接更新到github中,如果你有興趣可以和我聯(lián)系。 github.com/dpawsbear/bear_rpi_go
我在很多的教程中都看到說(shuō)樹莓派的PWM(硬件)只有一個(gè)GPIO能夠輸出,就是 GPIO1 。這可是不小的打擊,因?yàn)槲蚁胧褂弥辽偎膫€(gè) PWM ,還是不死心,想通過(guò)硬件手冊(cè)上找尋蛛絲馬跡,看看究竟怎么回事。
手冊(cè)上找尋東西稍等下講述,這里先提供一種方法測(cè)試 樹莓派3B 的 PWM 方法:用指令控制硬件PWM。
這里通過(guò)指令的方式掌握了基本的pwm設(shè)置技巧,決定去翻一下手冊(cè)看看到底PWM怎么回事,這里因?yàn)闆](méi)有 BCM2837 的手冊(cè),根據(jù)之前文章引用官網(wǎng)所說(shuō), BCM2835 和 BCM2837 應(yīng)該是一樣的。這里我們直接翻閱 BCM2835 的手冊(cè),直接找到 PWM 章節(jié)。找到了如下圖:
圖中可以看到在博通的命名規(guī)則中 GPIO 12、13、18、19、40、41、45、52、53 均可以作為PWM輸出。但是只有兩路PWM0 PWM1。根據(jù)我之前所學(xué)知識(shí),不出意外應(yīng)該是PWM0 和 PWM1可以輸出不一樣的占空比,但是頻率應(yīng)該是一樣的。因?yàn)闆](méi)有示波器,暫時(shí)不好測(cè)試。先找到下面對(duì)應(yīng)圖:
根據(jù)以上兩個(gè)圖對(duì)比可以發(fā)現(xiàn)如下規(guī)律:
對(duì)照上面的表可以看出從 BCM2837 中印出來(lái)的能夠使用在PWM上的就這幾個(gè)了。
為了驗(yàn)證個(gè)人猜想是否正確,這里先直接使用指令的模式,模擬配置下是否能夠正常輸出。
通過(guò)上面一系列指令模擬發(fā)現(xiàn),(GPIO1、GPIO26)、(GPIO23、GPIO24)是綁定在一起的,調(diào)節(jié)任意一個(gè),另外一個(gè)也會(huì)發(fā)生變化。也即是PWM0、PWM1雖然輸出了兩路,可以理解成兩路其實(shí)都是連在一個(gè)輸出口上。這里由于沒(méi)有示波器或者邏輯分析儀這類設(shè)備(僅有一個(gè)LED燈),所以測(cè)試很簡(jiǎn)陋,下一步是使用示波器這類東西對(duì)頻率以及信號(hào)穩(wěn)定性進(jìn)行下測(cè)試。
小節(jié):樹莓派具有四路硬件輸出PWM能力,但是四路中只能輸出兩個(gè)獨(dú)立(占空比獨(dú)立)的PWM,同時(shí)四路輸出的頻率均是恒定的。
上面大概了解清楚了樹莓派3B的PWM結(jié)構(gòu),接下來(lái)就是探究如何使用Go語(yǔ)言進(jìn)行設(shè)置。
因?yàn)槟玫搅耸謨?cè),這里我想直接操作寄存器的方式進(jìn)行設(shè)置,也是順便學(xué)習(xí)下Go語(yǔ)言處理寄存器的過(guò)程。首先需要拿到pwm 系列寄存器的基地址,但是翻了一圈手冊(cè),發(fā)現(xiàn)只有偏移,沒(méi)有找到基地址。
經(jīng)過(guò)了一段時(shí)間的努力后,決定寫一個(gè) 樹莓派3B golang包開(kāi)源放在github上,只需要寫相關(guān)程序進(jìn)行調(diào)用就可以了,以下是相關(guān)demo(pwm)(在GPIO.12 上輸出PWM波,放上LED燈會(huì)有呼吸燈的效果,具體多少頻率還沒(méi)有進(jìn)行測(cè)試)
以下是demo(pwm) 源碼
當(dāng)前名稱:樹莓派go語(yǔ)言 樹莓派 go gpio
網(wǎng)站URL:http://jinyejixie.com/article16/doscodg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、網(wǎng)站內(nèi)鏈、用戶體驗(yàn)、Google、響應(yīng)式網(wǎng)站、定制開(kāi)發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)