Firefly-RK3288/Go Firefly-RK3288

来自Firefly wiki
跳转至: 导航搜索

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!!!

RK3288编译环境安装

GitHub地址: https://github.com/golang/go
Golong中国地址:http://golangtc.com/download

首先下载Firefly-RK3288_Ubuntu14.04固件并烧写进板子
以下有两种安装方式,建议使用第二种,因为前者安装版本比较低

从仓库安装

$ sudo apt-get install golang

如果安装不成功可尝试:

$ sudo add-apt-repository ppa:gophers/go
$ sudo apt-get update
$ sudo apt-get install golang-stable

下载压缩包安装

安装gcc工具,因为golang有些功能是使用c写的,所以构建golang的编译是必须的

$ sudo apt-get install bison gawk gcc libc6-dev make

如果安装不成功可以更新后重试

$ sudo apt-get update

下载以及解压:

$ cd /home/firefly/
$ wget golangtc.com/static/go/go1.4.2.linux-386.tar.gz
$ sudo tar -C /usr/local -xzf go1.4.2.linux-386.tar.gz

进入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

Go_Led

下面借用【GoRK3288】系列教程作者tjCFeng一个led例程进行演示
GoRK3288库下载地址:https://github.com/tjCFeng/GoRK3288
安装git(如果已经安装跳过此步)

$ sudo apt-get install git

下载GoRK3288库

$ go get github.com/tjCFeng/GoRK3288

构建goled.go文件:

$ cd /home/firefly/go
$ mkdir src/goled
$ vi src/goled/goled.go

输入以下内容:

package main
import (
	"fmt"
	"github.com/tjCFeng/GoRK3288/RK3288"
)
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亮起

GoRK3288系列教程

【GoRK3288】Rockchip RK3288, GO!GO!!GO!!!

【GoRK3288】Go语法简要说明及GoRK3288结构

【GoRK3288】GPIO操作方法(1)

【GoRK3288】GPIO操作方法(2)

【GoRK3288】PWM操作方法

【GoRK3288】TSADC操作方法

【GoRK3288】WatchDog操作方法