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).
- Linux or Windows 10 Subsystem for Linux (WSL).
- gcc ARM toolchain on the path. Successfully tested with:
- gcc version 7.3.1 20180622: gcc-arm-none-eabi-7-2018-q2-update-linux.tar.bz2 from https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads
- gcc version 8.2-2019.01 32-bit and 64-bit:
- gcc-arm-8.2-2019.01-x86_64-arm-eabi.tar.xz from https://developer.arm.com/open-source/gnu-toolchain/gnu-a/downloads
- gcc-arm-8.2-2019.01-x86_64-aarch64-elf.tar.xz from https://developer.arm.com/open-source/gnu-toolchain/gnu-a/downloads
git clone --recursive https://github.com/smuehlst/circle-stdlib.git
cd circle-stdlib
./configure
make
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
-p <string>, --prefix <string> prefix of the toolchain commands (default: arm-none-eabi-)
-r <number>, --raspberrypi <number>
Circle Raspberry Pi model number (1, 2, 3, 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)
--opt-tls build with mbed TLS support
To clean the project directory, the following commands can be used:
make clean
make mrproper # removes the configuration too
make build-samples
Current Release v10.0
- Synced with Circle Step 39.2.
Current Release v9.0
- Synced with Circle Step 39.1.
- AArch64 support.
- Removed deprecated build script
build.bash(useconfigureandmakeinstead).
- Synced with Circle Step 39.
- mbed TLS support updated to release 2.16.0.
- Synced with Circle Step 37.
- mbed TLS support updated to release 2.14.1.
- Circle is now included from its default repository. To sync an existing clone of the circle-stdlib repository, enter the following commands:
git submodule sync libs/circle
git submodule update --init --remote libs/circle
- Synced with Circle Step 36.
- Synced with Circle Step 35.1.
- Added support for <dirent.h> functions.
- Added support for time()-related functions.
- mbed TLS support implemented by Rene Stange.
- Added
configurescript andMakefileto replacebuild.bash. build.bash is deprecated and will be removed in a future release.
- Synced with Circle Step 34.
- Added CStdlibApp, CStdlibAppScreen, CStdlibAppStdio and CStdlibAppNetwork for easier application creation (thanks to Rene Stange).
- Synced with Circle Step 33.
- Implemented stdin/stdout/stderr based on Circle's CConsole class.
- A build of circle-stdlib with ARM gcc toolchains that include Newlib out-of-the-box now provides support for C and C++ standard libraries. This is due to the fact that the Newlib provided by the toolchain is replaced by circle-stdlib's Newlib build, and the toolchain's standard C++ library works with the replaced Newlib.
This release implements Newlib's open(), close(), read() and write() system calls bases on Circle's I/O functions. This enables stdio functionality. A small test program demonstrates the use of stdio file system functions with Circle.
Initial build of Newlib with Circle, without any systems calls being implemented.
This project is licensed under the GNU GENERAL PUBLIC LICENSE Version 3 - see the LICENSE file for details