vzvca / circle-stdlib

Standard C and C++ Library Support for Circle

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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:
  -c, --clean                    clean build results and exit
  -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

Building the Samples

make build-samples

Current Release

v6.0

Previous Releases

v5.0

  • 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.

v4.0

  • Synced with Circle Step 34.
  • Added CStdlibApp, CStdlibAppScreen, CStdlibAppStdio and CStdlibAppNetwork for easier application creation (thanks to Rene Stange).

v3.0

  • 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.

v2.0

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.

V1.0

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

License:GNU General Public License v3.0


Languages

Language:C++ 52.8%Language:C 42.9%Language:Shell 3.0%Language:Makefile 1.3%