tinyprintf - printf replacement for embedded programming

  •        138

printf-c.cc is a C++ module that replaces certain C-language libc functions with a tiny alternatives suitable for embedded programs. What -Wl,--wrap,somefunc does it replaces all calls to somefunc with calls to __wrap_somefunc, and all calls to __real_somefunc with calls to the original somefunc. It is handy when you need to replace a library function that is not declared “weak”.




Related Projects

mbed-os - Arm Mbed OS is a platform operating system designed for the internet of things

  •    C

Arm Mbed OS is an open source embedded operating system designed specifically for the "things" in the Internet of Things. It includes all the features you need to develop a connected product based on an Arm Cortex-M microcontroller, including security, connectivity, an RTOS and drivers for sensors and I/O devices. The release notes detail the current release. You can also find information about previous versions.

RT-Thread - A Tiny and Elegant IoT Operating System

  •    C

RT-Thread (Real-Time Thread) is an open source embedded real-time operating system. It has a strong scalability: from a nano kernel running on a tiny MCU, for example ARM Cortex-M0, or Cortex-M¾/7, to a rich feature system running on MIPS32, ARM Cortex-A, even the emerging open source RISC-V architecture is supported. RT-Thread can run either on single-core systems or on symmetric multi-core processors(SMP) systems.

tinyformat - Minimal, type safe printf replacement library for C++

  •    C++

All user facing functions are defined in the namespace tinyformat. A namespace alias tfm is provided to encourage brevity, but can easily be disabled if desired. Three main interface functions are available: an iostreams-based format(), a string-based format() and a printf() replacement. These functions can be thought of as C++ replacements for C's fprintf(), sprintf() and printf() functions respectively. All the interface functions can take an unlimited number of input arguments if compiled with C++11 variadic templates support. In C++98 mode, the number of arguments must be limited to some fixed upper bound which is currently 16 as of version 1.3. Supporting more arguments is quite easy using the in-source code generator based on cog.py - see the source for details.

mbed - Tool for Rapid Prototyping with Microcontrollers

  •    C

The mbed Software Development Kit (SDK) is a C/C++ microcontroller software to write code for ARM microcontrollers. It provides enough hardware abstraction to be intuitive and concise, but powerful enough to build complex projects. It includes all the base level startup code, C runtime and library pre-integrated and tested for the target microcontrollers, and high-level MCU peripheral APIs that allow you to drive the peripherals of the microcontrollers without going near a datasheet.

QP Active Object (Actor) Frameworks

  •    C

Event-driven, RTOS-like, active object frameworks for microcontrollers

zinc - The bare metal stack for rust

  •    Rust

Zinc is an experimental attempt to write an ARM stack that would be similar to CMSIS or mbed in capabilities but would show rust's best safety features applied to embedded development. Zinc is mostly assembly-free and completely C-free at the moment. One of the goals of zinc is to figure out, how much of the usual RTOS stack is it possible to write in rust in a safe manner, while keeping the resource usage profile low enough (comparable to C/C++ code).

Tengine - Tengine is a lite, high performance, modular inference engine for embedded device

  •    C++

Tengine, developed by OPEN AI LAB, is a lite, high-performance, and modular inference engine for embedded device. Tengine is composed of six modules: core/operator/serializer/executor/driver/wrapper.

printbf - Brainfuck interpreter inside printf

  •    Brainfuck

Generic POSIX printf itself can be Turing complete as shown in Control-Flow Bending. Here we take printf-oriented programming one step further and preset a brainfuck interpreter inside a single printf statement. An attacker can control a printf statement through a format string vulnerability (where an attacker-controlled string is used as first parameter to a printf-like statement) or if the attacker can control the first argument to a printf statement through, e.g., a generic memory corruption. See the disclaimer below for practical in the wild considerations.

blynk-library - Blynk library for embedded hardware

  •    C++

Blynk provides iOS and Android apps to control any hardware over the Internet or directly using Bluetooth. You can easily build graphic interfaces for all your projects by simply dragging and dropping widgets, right on your smartphone. Blynk is the most popular IoT platform used by design studios, makers, educators, and equipment vendors all over the world. Please find examples on how to use different types of connections (transports) and how to do make something great with Blynk. You can easily apply any type of board/connection to all examples.

ferret - Ferret is a free software lisp implementation for real time embedded control systems.

  •    Makefile

Ferret is a free software lisp implementation designed to be used in real time embedded control systems. Ferret lisp compiles down to self contained C++11. Generated code is portable between any Operating System and/or Microcontroller that supports a C++11 compliant compiler. It has been verified to run on architectures ranging from embedded systems with as little as 2KB of RAM to general purpose computers running Linux/Mac OS X/Windows. A program that sums the first 5 positive numbers.

tock - A secure embedded operating system for Cortex-M based microcontrollers

  •    Rust

Tock is an embedded operating system designed for running multiple concurrent, mutually distrustful applications on Cortex-M based embedded platforms. Tock's design centers around protection, both from potentially malicious applications and from device drivers. Tock uses two mechanisms to protect different components of the operating system. First, the kernel and device drivers are written in Rust, a systems programming language that provides compile-time memory safety, type safety and strict aliasing. Tock uses Rust to protect the kernel (e.g. the scheduler and hardware abstraction layer) from platform specific device drivers as well as isolate device drivers from each other. Second, Tock uses memory protection units to isolate applications from each other and the kernel. Tock is documented in the doc folder. Read through the guides there to learn about the overview and design of Tock, its implementation, and much more.


  •    Shell

This project is not under active development any more. Consider using https://launchpad.net/gcc-arm-embedded instead! A very simple build script for bare metal arm toolchain. NO LINUX!

EmbeddedXEN Virtualization Framework


EmbeddedXEN results from several Years of Research in the field of ARM-based CPUs and hypervisor technology based on XEN. The overall architecture has been revisited in order to support the hardware diversity of ARM CPUs platforms and provide an excellent framework to deal with a native OS and a third-party OS cross-compiled from a different ARM CPU. EmbeddedXEN provide a virtualized hardware interface to the third-party OS. EmbeddedXEN has been initiated and is under current development a

FeatherCNN - FeatherCNN is a high performance inference engine for convolutional neural networks.

  •    C++

FeatherCNN, developed by Tencent TEG AI Platform, is a high-performance lightweight CNN inference library. FeatherCNN is currently targeting at ARM CPUs, and is capable to extend to other devices in the future. Highly Performant FeatherCNN delivers state-of-the-art inference computing performance on a wide range of devices, including mobile phones (iOS/Android), embedded devices (Linux) as well as ARM-based servers (Linux).

arm-tutorial-rpi - Raspberry-Pi Bare Metal Tutorial

  •    C

You can build on linux, windows, or MAC - all you need is the arm-none-eabi toolchain. For all platforms, you can get the required toolchain used in this tutorial from the GCC-ARM-embedded project - Most OS distributions now have at least the 4.8 toolchain, however the following will fix problems with using the 4.9 toolchain.

Embedded-Master-ARM - Open Enbedded Software Foundation Android Distribution for Embedded systems

  •    C

Open Enbedded Software Foundation Android Distribution for Embedded systems

Diskless Embedded Technology PC

  •    Shell

DIET-PC (DIskless Embedded Technology Personal Computer) is a software kitset enabling IT professionals to build an open source GUI appliance based on commodity x86 (PC), PowerPC (Mac) or ARM (handheld) hardware, using an embedded Linux methodology.

monkey - Monkey HTTP Server

  •    C

Monkey is a fast and lightweight Web Server for Linux. It has been designed to be very scalable with low memory and CPU consumption, the perfect solution for Embedded Linux and high end production environments. Besides the common features as HTTP server, it expose a flexible C API which aims to behave as a fully HTTP development framework, so it can be extended as desired through the plugins interface.