此存储库是工具,软件包和教程的目录,可让您在硬件项目中介绍Go。
# 为什么选go?
- Go可以针对主要在非实时嵌入式操作系统范围内的平台和体系结构。
- 对Linux的ARMv5,ARMv6,ARMv7和ARMv8支持
- ARMv7,ARMv8,x86对Android的支持
- 实验性OpenWRT
- 开箱即用的交叉编译故事。
- 例如,运行GOOS=linux GOARCH=arm go build以从Mac或Windows机器为ARM / linux板构建二进制文件。不需要其他配置。
- Go中内置的并发原语使得编写并发程序变得更加容易。
- 在实施硬件控制器方面的强大优势。
- 在实施网络设备方面的强大优势。
- Go是垃圾收集语言,但是自Go 1.4起,垃圾收集器的占用空间已得到显着改善。即使对于大堆,暂停时间也被定为10ms或更短,并且在非实时操作系统上并不是一个明显的缺点-OS调度程序的抢占性质比暂停时间更是一个主要问题。
- Go的网络堆栈质量高且维护良好。网络是物联网的核心组件。
- Go提供了现成的HTTP,HTTPS和HTTP / 2客户端/服务器实现。
- 标准库可能缺少P2P协议的更高级别的实现,但是社区正在努力弥补这一空白。
- 社区还投入时间来实施更新的以物联网为目标的网络协议,例如COAP。
- 与其他高级编程语言(如Python和Java)不同,使用Go语言在Go中编写C绑定非常简单。从Go上下文中依赖现有的C / C ++库要容易得多。
- 例如,portmidi (opens new window)绑定。请参阅源代码,以了解如何在同一个Go文件中混合和匹配Go和C代码。
- 类似于C的语法使现有的IoT /嵌入式编程人员(大多熟练使用C语言)可以在无需过多了解该语言的情况下读写Go。
- Go程序可编译为静态二进制文件,并且不需要主机(例如VM)上的运行时。部署是复制/粘贴二进制文件。
- Go拥有强大的社区人物,从早期开始就从事硬件方面的工作。
- Gobot在第一届GopherCon上首次亮相。
- 社区已经提供了许多围绕硬件和机器人技术的库和框架。可以在go硬件上找到列表。
- Go高效,快速且内存占用少。
- 服务器和客户端(连接的设备或移动设备)之间的代码重用。
- 例如,gRPC Go在服务器,Android,iOS和嵌入式Linux上开箱即用。
# 讲解
- (版本1.5及更高版本) 交叉编译指南 (opens new window)
- (执行1.4及更低版本)) 交叉编译指南 (opens new window)
- 查阅ARM技巧,已知问题和成功案例 (opens new window)