An open API service indexing awesome lists of open source software.

awesome-embedded-software

:stars: List of software (HW interfaces, libs, protocols, etc) specifically suitable for resource-constrained Embedded Systems (low-memory and low-power) like 8-bit, 16-bit and 32-bit microcontrollers.
https://github.com/iDoka/awesome-embedded-software

Last synced: 11 days ago
JSON representation

  • Protocols

    • Protocol Parsers

      • LwESP - Lightweight ESP AT commands parser library to communicate with ESP8266 or ESP32 Wi-Fi module using AT commands.
      • lwpkt - Lightweight packet protocol structure for multi-device communication focused on RS-485.
      • lwow - Lightweight onewire protocol library optimized for UART hardware on embedded systems.
      • panStamp-SWAP - Simple Wireless Abstract Protocol for any existing ISM radio.
      • panStamp-uSWAP - Micro SWAP stack for MCU's connected via UART.
      • MIN - Microcontroller Interconnect Network protocol version 2.0.
      • libCoAP - C implementation of a lightweight application-protocol for devices that are constrained their resources such as computing power, RF range, memory, bandwidth, or network packet sizes. This protocol, CoAP, is standardized by the IETF as RFC 7252.
      • LwGSM - Library for SIMCOM GSM modules to communicate with AT commands and RTOS from host device.
    • Radio Frequency Protocols

      • RadioHead - Packet Radio library for embedded microprocessors.
      • Adafruit's RadioHead - Packet Radio library for embedded microprocessors with [docs](http://www.airspayce.com/mikem/arduino/RadioHead/).
    • Web Server

      • mongoose - Embedded Web Server and Embedded Networking Library. It implements event-driven non-blocking APIs for TCP, UDP, HTTP, WebSocket, MQTT.
      • libevhtp - Extremely-fast and secure embedded HTTP servers with ease.
      • libμhttpd - Very flexible, lightweight and fully asynchronous HTTP server library based on libev and http-parser.
      • sandbird - Tiny (800sloc) embeddable HTTP server written in C89.
      • libevhtp - Extremely-fast and secure embedded HTTP servers with ease.
  • Storage

    • Data Bases

      • FlashDB - Ultra-lightweight database that supports key-value and time series data.
      • PureDB - Portable and tiny set of libraries for creating and reading constant databases.
      • UnQLite - Embedded NoSQL, Transactional Database Engine.
      • Vedis - Embedded Implementation of Redis (an embeddable datastore C library built with over 70 commands similar in concept to Redis but without the networking layer since Vedis run in the same process of the host application).
      • microkvs - Tiny key-value store for persisting configuration data on microcontrollers.
    • Filesystems

      • FatFS - FAT filesystem implementation.
      • lwext4 - An ext2/ext3/ext4 filesystem library for microcontrollers.
      • LevelX - Provides Flash Wear Leveling for FileX and Stand Alone purposes.
      • ufat - Low-memory feature-complete VFAT implementation.
      • fat_io_lib - Small footprint, low dependency, C code implementation of a FAT16 & FAT32 driver.
      • SdFat - Arduino FAT16/FAT32 exFAT Library.
      • fat32 - Lighweight FAT32 file system written in C with no thirdparty dependencies. It requires a small port which provide functions for initializing, reading and writing to the MSD.
      • emfat - FAT32 emulation library for stm32f4.
      • OpenFAT - FAT filesystem implementation for embedded processors.
      • uC-FS - Compact, reliable, high-performance, and thread-safe embedded file system for microprocessors, microcontrollers, and DSPs. An optional journaling component provides fail-safe operation while maintaining FAT compatibility.
      • littlefs - Little fail-safe filesystem designed for microcontrollers.
      • UFFS - Filesystem for NAND devices with wear leveling and good fault tolerance.
      • FatFS - FAT filesystem implementation.
      • LevelX - Provides Flash Wear Leveling for FileX and Stand Alone purposes.
    • Flash Memory

      • FCB - Flash Circular Buffer provides an abstraction through which you can treat flash like a FIFO.
      • EasyFlash - Lightweight embedded flash memory library.
      • FlashAlgo - Framework for building Arm Cortex-M "FLM" style flash programming algorithms.
  • Uncategorized

    • Embeddable Scripts and Languages

      • Apache NuttX Apps - Collection of tools, shells, network utilities, libraries, interpreters and can be used with the NuttX RTOS.
      • modm - Barebone embedded C++20 library generator for AVR, SAM and ARM Cortex-M Microcontrollers (supported 3534 devices).
      • cembed - Small utility for embedding files in a C header.
      • incbin - One-header library for compile-time embedding binary and textual files.
      • WTX - A set of web-oriented tools.
  • User Interface

    • CLI

      • cli - CLI (Command Line Interface) example build in pure C. Designed for MCU, support block/non-block mode input.
      • terminal - Command Line Interface for microcontrollers. Flexible terminal settings allow you to integrate it with any microcontroller, without much effort.
      • SerialMenu - Arduino library to easily create menus on the serial console.
      • terminal-server - Terminal server for MCU.
      • microsh - Shell for Small Embedded Devices.
      • cmd-l - Command line handler for embedded devices.
      • embedded-cli - Single-header CLI with history and autocompletion for embedded systems.
      • microshell - Lightweight pure C implementation of virtual shell, compatible with VT100 terminal. Support root tree, run-time mounting paths, global commands, and much more.
      • microrl - Micro read line library for small and embedded devices with basic VT100 support.
    • Logging

      • embedded-log - Small and beautiful embedded log library for mcu.
      • embedded-diagnostic-logger - Lightweight logger framework for small microcontroller based projects. Multilevel log and token based string transfer.
      • EasyLogger - Ultra-lightweight (ROM<1.6K, RAM<0.3k), high-performance C/C++ log library.
      • trice - Super fast and tiny embedded device C printf-like trace code (works also inside interrupts) and real-time PC logging (trace ID visualization).
      • spdlog - Very fast, header-only/compiled, C++ logging library.
      • elog - Log system is thinked for embedded systems with mininmal resource utilization. The log system is designed to minimize memory compsumition in flash or RAM, enable an eficient in-ram loggin buffer with very efficient storage.
    • Menu

      • ProMenu - Advanced Generic Application Menu Library. ProMenu Library is used for fast implementing advanced user menus. It supports nesting, numeric settings, text settings, boolean values and events. Library is implemented in C++ with build-in Arduino port, but it is easy to port to different architecture.
      • BBmenu - Simple portable CLI menu for misc tasks (it is based on text menus, easily defined in a file).
      • micromenu-v2 - Tiny text-orientated menu library in C for embedded use.
    • printf

      • Embedded_Printf - Embedded version of the famous "printf( )" function. The idea is create an simple and efficient library to meet some common needs in embedded systems.
      • xprintf - Complete fprintf() formatting implementation, suitable for embedded use.
      • lwprintf - Lightweight printf library optimized for embedded systems.
      • tinyprintf - Tiny printf and sprintf library for small embedded systems.
      • xprintf-fp - Printf for embedded system with floating point support.
      • xprintf-io - Compact string I/O library. It is ideal for tiny microcontrollers that has insufficient program memory for regular printf function. The recommended use is: writing formatted strings into LCD or UART and for debug/maintenance console.
      • tiny-printf - Tiny, fast, non-dependent and fully loaded printf implementation for embedded systems. Extensive test suite passing.
      • tiny-printf new - Enhanced and maintained fork of `tiny-printf`. Tiny, fast(ish), self-contained and fully loaded printf, sprinf etc.
      • mini-printf - Minimal printf() implementation for embedded projects.
      • nanoprintf - The smallest public printf implementation for its feature set.
      • fmt - Modern formatting library providing a fast and safe alternative to C stdio and C++ iostreams.
      • emio - Very small binary footprint std::format like formatting using C++20.
    • scanf

      • scanf - Portable implementation of scanf input functions in C.
      • ft_scanf - Simple scanf %s %c %d.