Firefly-RK3288的GoRK3288项⽬内部⽂件
Firefly-RK3288的GoRK3288
项⽬⽂档
<;智慧云联信息技术(北京)有限公司>
版本
编制者张志明编制⽇期2015-9-14
审核者审核⽇期
批准者批准⽇期
签字⽇期
2015年9⽉14⽇
⽬录
1. Go语⾔简介 (3)
2. RK3288编译环境安装 (3)
2.1. 从仓库安装 (3)
2.2. 下载压缩包安装 (4)
3. Go_Led (5)
4. GoRK3288系列教程 (6)
4.1. 【GoRK3288】Rockchip RK3288, GO!GO!!GO (6)
4.2. 【GoRK3288】Go语法简要说明及GoRK3288结构 (10)
4.2.1. 操作符: (10)
4.2.2. 变量: (10)
4.2.3. 返回值: (10)
4.2.4. 线程(协程): (11)
4.2.
5. 通道: (11)
4.2.6. 流程控制: (11)
4.2.7. Go关键字: (11)
4.2.8. Go类型: (11)
4.2.9. ⼯程⽂件: (12)
4.3. 【GoRK3288】GPIO操作⽅法(1) (12)
4.4. 【GoRK3288】GPIO操作⽅法(2) (15)
4.5. 【GoRK3288】PWM操作⽅法 (19)
4.6. 【GoRK3288】TSADC操作⽅法 (22)
4.6.1. 单例模式: (22)
4.6.2. 多返回值: (22)
4.7. 【GoRK3288】WatchDog操作⽅法(看门狗) (24)
5. Firefly-RK3288介绍 (25)
Firefly-RK3288的GoRK3288项⽬
1.Go语⾔简介
Go语⾔由Google提供⽀持,于2007年9⽉开始浮出⽔⾯,出⾃Rob Pike、 Ken Thomason 等⼤师之⼿,是⼀种⽀持并发和垃圾回收的编译型编程语⾔。
Go语⾔专门针对多处理器系统应⽤程序的编程进⾏了优化,使⽤Go编译的程序可以媲美C或C++代码的速度,⽽且更加安全、⽀持并⾏进程。它既能像Java⼀样⾃动管理内存,⼜像C⼀样有指针。现在Go语⾔⽀持的主流操作系统有Windows、Linux、MacOS X。
如今,Go语⾔开始被更多的程序员所关注,国内外也开始有了⼀些以Go语⾔平台开发的项⽬。那么是什么样的特性让Go语⾔吸引如此众多的眼球。下⾯让我们⼀起看下Go语⾔的⼀些特性:
1.Go语⾔保留但⼤幅度简化了指针。原⽣数值类型的指针类型可按Go语法在类型前
⾯加上*,⽐如var p *C.int。⽽void*⽐较特殊,⽤Go中的unsafe.Pointer表⽰。
任何类型的指针值都可以转换为unsafe.Pointer类型,⽽unsafe.Pointer类型值也可以转换为任意类型的指针值。
2.Go语⾔⽀持多参数返回。
3.Goroutine,这个⼏乎算是Go语⾔的招牌特性了,我们只要使⽤⼀句简单的go就可
以实现类似线程的效果⽽不需要繁琐的线程操作锁操作,就基本能实现并⾏程序的效果。⼗分的简单易上⼿。
4.Interface,GO语⾔的Interface是众多使⽤者所喜欢的特性之⼀。interface与
struct之间可以相互转换,struct不需要像Java在源码中显⽰说明实现了某个接⼝,可以通过约定的形式,隐式的转换到interface。任何数据结构,只要实现interface 所定义的函数,⾃动就implemen了这个interface。
看了Go语⾔的简介,⼤家是不是开始⼼动了。下⾯是作者tjCFeng所制作的【GoRK3288】系列教程链接,让我们乘坐上Firefly的⽊筏,去遨游Golang的海洋吧!
最后再次表⽰对作者tjCFeng的感谢,正是这种开源的学习精神让我们获得更便捷的学习途径。饮⽔思源,希望从中有所收获的朋友,不要吝啬你们的经验和感悟,进⼀步发扬开源的精神。让我们⼀起GO!GO!!GO
2.RK3288编译环境安装
GitHub地址:www.doczj/doc/72618e87aaea998fcd220e67.html /golang/go
Golong中国地址:www.doczj/doc/72618e87aaea998fcd220e67.html /download
⾸先下载Firefly-RK3288_Ubuntu14.04固件并烧写进板⼦
以下有两种安装⽅式,建议使⽤第⼆种,因为前者安装版本⽐较低
2.1.从仓库安装
$ sudo apt-get install golang
如果安装不成功可尝试:
$ sudo add-apt-repository ppa:gophers/go
$ sudo apt-get update
$ sudo apt-get install golang-stable
2.2.下载压缩包安装
安装gcc⼯具,因为golang有些功能是使⽤c写的,所以构建golang的编译是必须的$ sudo apt-get install bison gawk gcc libc6-dev make
如果安装不成功可以更新后重试
$ sudo apt-get update
下载以及解压:
$ cd /home/firefly/
$ wget www.doczj/doc/72618e87aaea998fcd220e67.html /static/go/go1.4.2. $ sudo tar -C /usr/local -xzf go1.4.2.
进⼊src安装:
$ cd /usr/local/go/src
$ sudo ./all.bash
如果all.bash不能运⾏,修改对应权限后重试
$ chmod a+x all.bash
安装成功最后⼏⾏显⽰:
---
Installed Go for linux/arm in /usr/local/go
Installed commands in /usr/local/go/bin
*** You need to add /usr/local/go/bin to your PATH.
修改配置:
$ vi $HOME/.profile
在最后⼀⾏加上:
$ export PATH=$PATH:/usr/local/go/bin
$ export GOPATH=/home/firefly/go
保存退出
然后使profile⽣效:
$ source $HOME/.profile
检测是否安装成功:
$ go version
显⽰如下:
go version go1.4.2 linux/arm
3.Go_Led
下⾯借⽤【GoRK3288】系列教程作者tjCFeng⼀个led例程进⾏演⽰GoRK3288库下载地址:www.doczj/doc/72618e87aaea998fcd220e67.html /tjCFeng/GoRK3288
安装git(如果已经安装跳过此步)
$ sudo apt-get install git
下载GoRK3288库
$ go get www.doczj/doc/72618e87aaea998fcd220e67.html /tjCFeng/GoRK3288
构建⽂件:
$ cd /home/firefly/go
$ mkdir src/goled
$ vi src/
输⼊以下内容:
package main
import (
"fmt"
"www.doczj/doc/72618e87aaea998fcd220e67.html /tjCFeng/GoRK3288/RK3288"
go语言安装教程)
func main() {
defer RK3288.FreeRK3288()
P8A1, ok := RK3288.CreateGPIO(RK3288.P8, RK3288.A1)
if ok {
P8A1.Flip()
if P8A1.GetData(){
fmt.Println("power_led off")
}else{
fmt.Println("power_led on")
}
RK3288.FreeGPIO(P8A1)
}
}
保存退出然后回到src⽬录下,⽣成可执⾏⽂件:
$ go install goled/
$ sudo ./bin/goled
可以看到PowerLED熄灭,再次运⾏PowerLED亮起
4.GoRK3288系列教程
4.1.【GoRK3288】Rockchip RK3288, GO!GO!!GO
前⾔:
最近看了看Google的Go语⾔,发现有点意思,这个开源的项⽬准备⽤golang来实现。
其实开发板本⾝的驱动程序已经实现了各个功能,但是有的时候在使⽤中有些⿇烦,有可能需要修改dts⽂件重新编译内核才能够使⽤某个功能,所以打算开发这个UIO驱动的开源项⽬,⽅便程序的编写。当然,UIO也不是万能的,⽐如中断,⽬前我还没有到好的⽅法,可以完全抛开内核版本的差异导致需要重新编译驱动来提供中断消息。
按照惯例⾸先还是先从Go语⾔的介绍、开发环境的安装开始,然后稍微讲解下本项⽬所涉及到的Go的语法,后⾯再来看看整个⼯程的⽂件组成及各个库的使⽤⽅法。
由于瑞芯微的开发参考⼿册⼀般不对个⼈开放,但是经过天启科技公司(后⽂简称Firefly)的努⼒,公布了全部源代码及部分的⽂档,使开发能够顺利进⾏,所以这个开源项⽬基于Firefly-RK3288开发板的Lubuntu环境下开发。
Go语⾔是⾕歌2009发布的第⼆款开源编程语⾔, 专门针对多处理器系统应⽤程序的编程进⾏了优化,使⽤Go编译的程序可以
媲美C或C++代码的速度,⽽且更加安全、⽀持并⾏进程,⽽且可以在不损失应⽤程序性能的情况下降低代码的复杂性。
虽然Go尚未成熟,但⾕歌旗下App Engine和其他部分产品已经开始使⽤go语⾔来编写,Go的⽹站就是⽤Go所建⽴。该软件是专为构建服务器软件所设计(如Google的Gmail)。Google认为Go还可应⽤到其他领域,包括在浏览器内执⾏软件,它将成为互联⽹时代的C 语⾔。
Go可以编译为本地原⽣程序,编译后的程序已经包括了运⾏时库,单单⼀个⽂件在部署时直接扔到其他板⼦同种平台上即可直接运⾏,⾮常⽅便。同时使⽤Go建⽴的⼯程,只要不牵扯到操作系统特有的功能或接⼝,可以不做改动直接在Windows、Linux、ARM上编译,并且现在已经⽀持Android的开发(1.4版),预计下⼀版将⽀持IOS的开发。这些特点和
Free Pascal是⼀样的。
Go⽬前⽋缺的地⽅:暂时没有图形界⾯(官⽅未发布),暂时没有专⽤的开发⼯具(ARM Linux上则更少)
随着物联⽹技术的兴起,使⽤Go的⾼并发特性来实现控制服务器将会⼤⼤提⾼运⾏的性能简化开发的难度,⽽且可以作为⼀个节点控制着各种外设。这个节点设备甚⾄可以是ARM系统,并且核⼼越多性能越⾼,所以本次开发采⽤了⾼性能的Firefly-RK3288开发板进⾏开发。
提到Firefly-RK3288开发板,我不得不再次赞⼀下,这个开发板的设计⾮常⽤⼼,各种元件的安排不拥挤、不松散,赏⼼悦⽬。⾄于RK3288的性能就不⽤说了,同种⽅案的平板性能测试已经⾮常详细了。如果希望了解该开发板的更多特性,可以参考这篇评测⽂章www.doczj/doc/72618e87aaea998fcd220e67.html /evaluation/firefly-rk3288-review/。
OK,板⼦说完了,再说说Go语⾔编译环境吧。在Lubuntu下安装Go⾮常简单,可以直接从新⽴德⾥搜索安装。不过呢,这⾥的版本有点低,1.2x。现在1.4.2已经发布了,⾃⼰编译⼀下也不⿇烦,⽽且这个板⼦的性能很⾼,包括所有的测试在内也就10分钟左右。
下载,到www.doczj/doc/72618e87aaea998fcd220e67.html /golang/go下载zip⽂件或者直接git,不习惯的话去www.doczj/doc/72618e87aaea998fcd220e67.html /download直接下载包也可以。
安装,最省事的⽅法是解压到/home/go⾥,然后进⼊到src⽬录,运⾏all.bash就开始⾃动编译了。⼤约10分钟左右,编译完成,打开/home⾥的.profile⽂件,在最后添加:
保存重启,Go的环境已经搭建好了。
接下来,安装⼀个⽐较⽅便⼀点的编辑环境吧。Go语⾔⽬前还没有专⽤的IDE开发环境,⼀般在Windows上或Linux使⽤LiteIDE、Ecplise、 SublimeText等,不过到了ARM 环境下由于源⾥的版本⽐较低,⽤起来⿇烦,所以在试了⼏个⼯具后发现gedit和Geany 还可以。
这⾥就以Geany为例进⾏安装。还是到新⽴德搜索Geany,版本是1.23,默认已经
⽀持Go的⾼亮和代码⾃动完成功能了。安装的东西很少很快
标记之后包括依赖只有两项,geany主⽂件和geany-common,点击应⽤开始安装。
安装之后可以打开或新建Go⽂件了,语法⾼亮看着⽐较舒服。
编译和运⾏也⽐较⽅便。虽然没有Debug调试功能和断点设置,不过暂时够⽤了。
GoRK3288库请在www.doczj/doc/72618e87aaea998fcd220e67.html /tjCFeng/GoRK3288下载。
4.2.【GoRK3288】Go语法简要说明及GoRK3288结构
Go语⾔的语句很简单,写起来像是动态语⾔那样简单。不过虽说代码符号简单,但是刚刚接触的时候却是有些不适应,这⾥就先把使⽤ GoRK3288库的时候需要⽤到的语法列举⼀下,其他⾼深的东西以后再去学习吧。
4.2.1.操作符:
+、-、*、/、%、&、|、^、<<、>>、==、!=、|= 等这些和C语⾔是⼀样的,不过在取反的时候就不是~符号了,⽽是^。跟亦或

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。