Skip to content
Embedded Go edited this page Jan 12, 2021 · 2 revisions

FAQ

1. How Embedded Go compiler differs from the reference Go compiler?

The Embedded Go compiler is the reference Go compiler with some additions to support bare-metal programming. As it's based on the original one it should generate the same binary code for all originally supported platforms (linux/amd64, windows/amd64, etc.) so you don't need two different compilers for OS and no-OS (bare-metal) programming.

2. What was added to the original Go compiler?

Embedded Go compiler supports three additional GOOS/GOARCH targets: noos/thumb, noos/riscv64, linux/thumb.

noos/thumb is intended for 32-bit ARM microcontrolers (ARMv7-M, ARMv8-M ISA). noos/riscv is intended for 64-bit RISCV systems-on-chip (SOCs). linux/thumb was created mainly to facilitate testing GOARCH=thumb but can be used in place of linux/arm to produce smaller binaries for all systems that support Thumb2 ISA (almost all ARMv7-A and ARMv8-A CPUs).

To support embedded programming there are some additional packages in the standard library, all placed in embedded directory (do not confuse with embed which was introduced later and is for embedding files).