Go 支持 MCU 吗?

Posted

技术标签:

【中文标题】Go 支持 MCU 吗?【英文标题】:Does go supports in MCU? 【发布时间】:2021-05-30 18:18:47 【问题描述】:

我已经探索过,Go 是否支持微控制器单元。有一些信息是TinyGo。怀疑 TinyGo 是否等同于在 Linux 中支持的 Golang。

【问题讨论】:

您的意思是 MCU 作为某个特定品牌的概念吗?我想知道你为什么把那个词的词大写。如果你想问 Go 是否支持“嵌入式”平台的开发,那么答案是“视情况而定”。 1) AFAIK,Go 的两个“普通”实现不支持在任何硬件架构的裸机上运行;每个都需要一个操作系统; 2) Go 的现有实现支持 Linux 作为操作系统和它运行的一堆硬件拱门;完整列表是here。 …现在是资源消耗的问题。 Go 主要用于实现网络服务器,这些服务器以每核几个 kRPS 的速率处理请求;这暗示与性能相关的各种旋钮可能会被调整以迎合这些工作负载,而不是那些通常在低调嵌入式解决方案中发现的那些。特别是,Go 实现了垃圾收集,这意味着正在运行的程序通常有大量内存专用于“浮动垃圾”(已生成但尚未收集)。库存 Go 工具链生成的编译后的可执行映像的大小也很大。 ...我想这就是 TinyGo 这样的项目存在的原因:他们试图将 Go 编程的相对简单性及其一流品质的工具链带入 Go 通常使用的低调环境。正如他们所说,“您的里程可能会有所不同”。如果你想在 ARM 设备上运行 Linux 的系统上使用 Go,试试看。如果您想在更受限制的环境中使用它,像 TinyGo 这样的自定义解决方案可能更适合您。 【参考方案1】:

简短的回答:是的,当使用TinyGo时。

长答案: 截至编写 TineGo 时,直接支持的不止70 different microcontroller boards。还有关于65 different peripheral devices。

TinyGo 是一个新的编译器,它是用 Go 编写的,消耗普通的 Go 代码。它还利用 LLVM 编译器工具链来生成微控制器所需的二进制文件。 使用 TinyGo,您可以在 Arduino UNO 上将简单的 HelloWorld 程序从大约 1MB 二进制大小缩小到大约 480 字节。

TinyGo 重新实现了 Go 标准库的大部分,但不是全部。 查看this site 了解有关标准库支持的更多详细信息。

IDE 集成: 为了获得良好的开发者体验,TinyGo 团队还提供了VSCode Extension,它提供了将上下文切换到您当前使用的板的功能。这样,Go 语言服务器和智能感知等就可以在编码时帮助您。

Jetbrains 也在开发 Goland Extension,它提供的功能至少与 VSCode 扩展相同,甚至更多。

总结: TinyGo 还不是 Go 的替代品,但您已经可以使用 TinyGo 构建非常棒的东西。如果你想从微控制器项目开始并想使用 Go,那么选择 TinyGo。

【讨论】:

以上是关于Go 支持 MCU 吗?的主要内容,如果未能解决你的问题,请参考以下文章

Spark支持通过GO语言编写程序吗

Go语言必须支持多返回值函数,你知道为什么吗?

Go语言必须支持多返回值函数,你知道为什么吗?

Arduino推出最强开发板J-Link全面支持N32系列MCU2023届嵌入式世界大会

go 的选项模式

5V系统和3.3V系统电平转换