Go语言编译器TinyGo,基于LLVM,在微控制器和小系统上编译和运行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go语言编译器TinyGo,基于LLVM,在微控制器和小系统上编译和运行相关的知识,希望对你有一定的参考价值。

参考技术A

TinyGo是一个为微控制器、WebAssembly(Wasm)和命令行工具等小型场景设计的Go语言编译器。TinyGo重用了Go语言工具和LLVM使用的库,以编译用Go语言编写的程序。目前,该项目在GitHub上已经积累了10.1k的Star。

如下为一个示例程序,当运行在任何支持的带板载LED的主板上时,则会点亮内置LED。

上述程序可以在单片机、Adafruit ItsyBitsy M0微控制器或任何支持的带内置LED的板上进行编译和不需要修改的运行,只要设置正确的TinyGo编译器目标即可。例如,设置如下目标可以编译和点亮 单片机。

项目概述

TinyGo项目旨在将Go语言引入到具有单进程或核心的微控制器和小系统。TinyGo类似于emgo,但主要的区别在于作者想要保留Go内存模型。另一个区别在于TinyGo在内部使用LLVM,因而可以获得更小更高效的代码以及更高的灵活性。

创建TinyGo项目的初衷是,如果Python可以在微控制器上运行,Go语言当然也应该能够在更低级微设备上运行。

支持设备

你可以为微控制器、WebAssembly和Linux编译TinyGo程序。目前,TinyGo支持以下85种微处理器板。

更多技术细节请参阅原项目。

以上是关于Go语言编译器TinyGo,基于LLVM,在微控制器和小系统上编译和运行的主要内容,如果未能解决你的问题,请参考以下文章

LLVM 3.9 发布,编译器架构

Go 支持 MCU 吗?

iOS代码加密的几种方式

Rust 语言 1.25 版本发布,编译器升级至 LLVM 6

LLVM 之 IR 篇:如何基于新 Pass 框架扩展 LLVM IR 优化器

Day02 Go语言流程控制数组切片