【发布时间】: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 这样的自定义解决方案可能更适合您。