Skip to content

smuehlst/circle-stdlib

Repository files navigation

circle-stdlib

Status badge for master branch Status badge for develop branch

Overview

The goal of this project is to provide C and C++ standard library support for the Raspberry Pi bare metal environment Circle.

Newlib is used as the standard C library. The fork circle-newlib contains the changes for building Newlib in combination with Circle.

mbed TLS can optionally be used for TLS connections in Circle (call configure with --opt-tls, see also the README file for circle-mbedtls).

Getting Started

Prerequisites

A toolchain from Arm GNU Toolchain Downloads:

Building the Libraries

Add the toolchain to the path, then:

git clone --recursive https://github.com/smuehlst/circle-stdlib.git
cd circle-stdlib
./configure
make

This configures the build for the default 32-bit toolchain with the arm-none-eabi- prefix.

The configure script has the following options:

$ ./configure -h
usage: configure [ <option> ... ]
Configure Circle with newlib standard C library and mbed TLS library.

Options:
  -d, --debug                    build with debug information, without optimizer
  -h, --help                     show usage message
  -n, --no-cpp                   do not support C++ standard library
  -o, --option <name>[=<value>]  additional preprocessor define (optionally with value)
                                 can be repeated
  --opt-tls                      build with mbed TLS support
  -p <string>, --prefix <string> prefix of the toolchain commands (default: arm-none-eabi-)
  --qemu                         build for running under QEMU in semihosting mode
  -r <number>, --raspberrypi <number>
                                 Circle Raspberry Pi model number (1, 2, 3, 4, 5, default: 1)
  --softfp                       use float ABI setting "softfp" instead of "hard"
  -s <path>, --stddefpath <path>
                                 path where stddef.h header is located (only necessary
                                 if script cannot determine it automatically)

To clean the project directory, the following commands can be used:

make clean
make mrproper   # removes the configuration too

Building the Samples

make build-samples

Running and Debugging the Programs

The resulting executables are normal Circle bare-metal applications. Circle's standard installation and debugging instructions apply.

For running the programs under QEMU see Circle's corresponding notes on QEMU.

Release History

See CHANGELOG.md.

License

This project is licensed under the GNU GENERAL PUBLIC LICENSE Version 3 - see the LICENSE file for details

Acknowledgements