GERT
FreeGERT is a modified version of Go that runs bare-metal on armv7a SOCs. The minimal set of OS primitives that Go relies on have been re-implemented entirely in Go and Plan 9 assembly inside the modified runtime. The goal of this project is to bring the benefits of a high-level, type-safe, and garbage-
About GERT
GERT (Golang Embedded Run-Time) is a research prototype that modifies the Go runtime to run bare-metal on armv7a System-on-Chips (SOCs), eliminating the need for an operating system. It re-implements essential OS primitives—such as scheduling, memory management, and concurrency—entirely in Go and Plan 9 assembly, enabling developers to write high-level, type-safe, and garbage-collected code in embedded environments. Currently targeting the Freescale iMX6 Quad SOC (Wandboard Quad), GERT includes drivers for UART, SPI, SDCARD, GPT, and IOMUX, and provides all of Go's concurrency features like goroutines and channels on bare metal. The project aims to bring the productivity and safety of Go to embedded systems while offering improved latency over Linux user-space C implementations.
Key Features
Pros & Cons
- Brings Go's type safety, garbage collection, and concurrency to bare-metal embedded systems
- Lower latency than equivalent C programs running on Linux user-space
- Full goroutine and channel support without OS overhead
- Open-source and free to use, modify, and distribute
- Includes drivers for common peripherals on iMX6, accelerating development
- Can be emulated via QEMU, enabling development without physical hardware
- Research prototype – not yet stable or suitable for production use
- Only supports the Freescale iMX6 Quad SOC (Wandboard Quad) with hard-coded memory map
- Limited to armv7a architecture; no support for other ARM variants or architectures yet
- Requires knowledge of Go runtime internals and assembly for porting to other hardware
- No official package or binary releases; must build from source
- Documentation may become outdated as the project evolves