本帖最后由 smart555 于 2020-11-18 17:32 编辑
开发环境介绍- 主机操作系统:Ubuntu 20.04.1 LTS 64位
- 目标arm板子平台:EVB-D335+IoT-3352
- 目标ARM板子系统:Linux embfly 4.14.67
- 目标ARM板CPU支持指令集:ARMv7
- 编程语言:go 1.15.5
- 编译工具:golang编译器(Host)
项目说明:本项目,在 ubuntu 主机上用go语言编程,实现串口读取GPS模块数据,并通过golang的交叉编译,编译成在盈鹏飞 EVB-D335 板子上可以运行的可执行程序。
硬件介绍:
如上图所示是笔者手头有的GPS模块,引出的4根线,分别为:3.3V+ GND RX TX ;熟悉GPS模块的小伙伴都清楚,一般GPS模块都是串口模式输出位置信息,上面这款也一样,串口输出,波特率是4800;用串口调试软件可以看到GPS模块的输出信息:
笔者此次用的是板载的串口2,串口编号为 /dev/ttyO2,实物接线也较简单:
详细的go程序代码,就不贴出来了,放在附件方便看官下载。我是这样编译以适用EVB-D335:
- GOOS=linux GOARCH=arm GOARM=7 go build go-serial.go
复制代码 说明下:
GOOS=linux 表示目标系统;
GOARCH=arm 表示目标硬件CPU架构;
GOARM=7 表示目标CPU支持的指令集;
go build 表示编译命令
go-serial.go 表示被编译的程序文件
执行完上面的指令,就会在当前目录生成一个可执行程序 名字为go-serial ;
ARM板子上的linux系统不用安装go语言的环境,在PC主机上用golang的交叉编译工具编译之后传到ARM板子上就可以直接运行了,这是因为golang交叉编译出来的二进制文件,只依赖于libc库,可以直接运行。如下图所示为在板子上运行效果:
当go语言遇到ARM板子,是蛮好玩的,在快乐的同时,笔者也遇到一个又一个坑,也在不断跳出坑,只盼望玩go控制ARM板卡的人越来越多,那就更好玩了。 未完待续......
|