Skip to content

MountMerlin/circle-stdlib

 
 

Repository files navigation

circle-stdlib

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

Building the Libraries

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

Building the Samples

make build-samples

Current Release v10.0

Current Release v9.0

  • Synced with Circle Step 39.1.
  • AArch64 support.
  • Removed deprecated build script build.bash (use configure and make instead).

Previous Releases

  • 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 35.1.
  • Added support for <dirent.h> functions.
  • Added support for time()-related functions.
  • mbed TLS support implemented by Rene Stange.
  • Added configure script and Makefile to replace build.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.

License

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

Acknowledgements

About

Standard C and C++ Library Support for Circle

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • C++ 50.0%
  • C 48.8%
  • Makefile 1.2%