Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Raspberry Pi
  3. Circle

Circle

GPL-3.0C

A C++ bare metal programming environment for Raspberry Pi, providing libraries and drivers for hardware control without an OS.

Visit WebsiteGitHubGitHub
2.3k stars298 forks0 contributors

What is Circle?

Circle is a C++ bare metal programming environment for Raspberry Pi single-board computers, enabling developers to write low-level applications that run directly on the hardware without an operating system. It provides comprehensive libraries to interact with the board's peripherals, offering full hardware control and real-time capabilities for embedded development.

Target Audience

Embedded systems developers and hobbyists working with Raspberry Pi hardware who need direct hardware access, real-time performance, or want to build custom firmware without an OS. This includes those developing IoT devices, robotics controllers, custom peripherals, or educational bare-metal projects.

Value Proposition

Developers choose Circle for its clean, object-oriented C++ interface to Raspberry Pi hardware, extensive driver support (including USB, networking, displays, and storage), and multi-core/architecture compatibility across most Raspberry Pi models. Unlike OS-based approaches, it eliminates OS overhead for maximum hardware control and deterministic performance.

Overview

A C++ bare metal environment for Raspberry Pi with USB (32 and 64 bit)

Use Cases

Best For

  • Building real-time applications on Raspberry Pi that require deterministic timing and direct hardware access.
  • Developing custom embedded systems or IoT devices without OS overhead, using drivers for GPIO, I2C, SPI, USB, and networking.
  • Creating educational projects to learn bare-metal programming and computer architecture on Raspberry Pi hardware.
  • Writing low-level firmware or bootloaders that interact directly with Raspberry Pi peripherals like displays, sound, or storage.
  • Developing multi-core applications on Raspberry Pi 2/3/4/5 using Circle's cooperative scheduler and synchronization primitives.
  • Debugging low-level hardware interactions with Circle's kernel logging, exception handlers, GDB support, and Kernel Address Sanitizer.

Not Ideal For

  • Projects requiring Bluetooth connectivity for wireless peripherals or audio devices.
  • Applications needing advanced graphics acceleration like OpenGL ES 2.0 or OpenVG for rich UIs or gaming.
  • Teams wanting a Linux-based ecosystem with package management, standard system calls, and broad third-party library support.
  • Quick prototyping projects where OS overhead is acceptable and pre-configured services like Raspbian are preferred.

Pros & Cons

Pros

Comprehensive Hardware Drivers

Circle provides extensive, object-oriented C++ classes for GPIO, USB, networking, displays, and more, as detailed in the features table, enabling full hardware control without OS interference.

Multi-Core and Architecture Flexibility

Supports both 32-bit (AArch32) and 64-bit (AArch64) builds across Raspberry Pi 2/3/4/5 with multi-core processing, allowing scalable bare-metal applications.

Advanced Debugging Ecosystem

Includes kernel logging, hardware exception handlers, GDB support, QEMU emulation, and a Kernel Address Sanitizer (Kasan) for memory debugging, as outlined in the debug support section.

Active Development and Updates

Regular releases like 50.1 add features (e.g., NVMe driver, Kasan) and fixes, with detailed documentation and community-driven add-ons ensuring ongoing relevance.

Cons

Steep Setup Complexity

Requires downloading specific toolchains (e.g., GCC 14.3.1), editing configuration files like Rules.mk, and manual SD card firmware copying, which is cumbersome compared to OS-based setups.

Inconsistent Model Support

Features vary by Raspberry Pi model; for instance, the frame buffer is 'limited' on Pi 5, FIQ is unsupported, and some drivers like NVMe are experimental, leading to fragmentation.

Limited Ecosystem Integration

As a bare-metal environment, it lacks the vast library ecosystem of Linux, requiring developers to port or implement functionality from scratch, increasing development time.

Frequently Asked Questions

Quick Stats

Stars2,276
Forks298
Contributors0
Open Issues13
Last commit3 days ago
CreatedSince 2014

Tags

#embedded-systems#bare-metal#tcp-ip#arm-architecture#c-plus-plus#hardware-drivers#raspberry-pi#usb#real-time#low-level-programming#networking

Built With

G
GCC
C
Clang/LLVM
L
LVGL
w
wpa_supplicant
C
C++

Links & Resources

Website

Included in

Raspberry Pi16.2k
Auto-fetched 5 hours ago

Related Projects

AdGuard HomeAdGuard Home

Network-wide ads & trackers blocking DNS server

Stars35,659
Forks2,434
Last commit19 hours ago
Sonic PiSonic Pi

Code. Music. Live.

Stars11,904
Forks981
Last commit17 hours ago
Pi-KVMPi-KVM

Open and inexpensive DIY IP-KVM based on Raspberry Pi

Stars10,183
Forks559
Last commit6 days ago
PoisonTapPoisonTap

Exploits locked/password protected computers over USB, drops persistent WebSocket-based backdoor, exposes internal router, and siphons cookies using Raspberry Pi Zero & Node.js.

Stars6,478
Forks982
Last commit7 years ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub