A curated list of awesome libraries, tutorials, projects and other related to MCU Embedded domain(almost C language). This repository aims to be a comprehensive and organized collection that will help MCU embedded developers in the world!
- clib : Package manager for the C programming language.
- C_std : Implementation of C++ standard libraries in C
- conan : Conan - The open-source C and C++ package manager
- stb : stb single-file public domain libraries for C/C++
- https://github.com/embeddedartistry/libc : libc targeted for embedded systems usage. Reduced set of functionality (due to embedded nature). Chosen for portability and quick bringup.
- https://github.com/DevSolar/pdclib : The Public Domain C Library
- https://github.com/picolibc/picolibc : picolibc - a C library designed for embedded 32- and 64- bit systems.
- Memfault Firmware SDK : Memfault Firmware SDK for embedded systems.
- Golioth Firmware SDK
- Swedish Embedded Platform SDK
- Blog : The Best and Worst MCU SDKs
- C language utility library : Versatile and easy to use C language utility library with functions and macros commonly used in various applications
- Portable Snippets : Collection of miscellaneous portable C snippets.
- stb
- Embedded Template Library (ETL)
- lwevt : 适用于【多生产者-单消费者】模型,比如多传感器数据的读取后统一管理
- NevermindZZT/cpost : c语言程序上下文切换和解耦的工具
- andsmedeiros/uevloop : A fast and lightweight event loop aimed at embedded platforms in C99.
- eerimoq/async : Asynchronous framework in C for systems where low memory usage is important.
- MicroPython : a lean and efficient Python implementation for microcontrollers and constrained systems
- PikaPython : An ultra-lightweight Python interpreter that runs with only 4KB of RAM, zero dependencies. It is ready to use out of the box without any configuration required and easy to extend with C. Similar project: MicroPython, JerryScript.
- Rust Embedded : Enabling usage of Rust on Embedded Platforms (Embedded Linux / RTOS / Bare Metal)
- C Thread Pool : A minimal but powerful thread pool in ANSI C
- protothread : 线程中的非阻塞轮询框架
- coroutine
- At-FSM : At-FSM is an open and user-friendly embedded Finite State Machine (FSM) included the Primitive State Machine (PSM) and Hierarchical State Machine (HSM).
- State Machine Design in C : A compact C finite state machine (FSM) implementation that's easy to use on embedded and PC-based systems.
- lwmem : 可控可调,挺好/realloc 有问题
- libmemory : Embedded systems memory management library. Implementations for malloc(), free(), and other useful memory management functions
- umm_malloc : Memory Manager For Small(ish) Microprocessors
- Doug Lea's malloc : g.oswego.edu/
- tbman : Memory Manager - Fast, Scalable and Easy to use
- O(1) heap : Constant-complexity deterministic memory allocator (heap) for hard real-time high-integrity embedded systems. There is very little activity because the project is finished and does not require further changes.
- lwrb : 循环buffer,适用于传感器数据的读取和发送(特别是DMA)
- Growable Memory Buffers for C99
- wl_queue : 一个C语言编写的支持任意类型的环形队列.
- fifofast : A fast, generic fifo for MCUs.
- lwpkt : 可用于打包传感器数据
- STCmdP Protocol manager
- mpaland/printf : Tiny, fast, non-dependent and fully loaded printf implementation for embedded systems. Extensive test suite passing.
- eyalroz/printf : forked [mpaland/printf] Tiny, fast(ish), self-contained and fully loaded printf, sprinf etc. implementation, mainly for embedded systems
- charlesnicholson/nanoprintf : The smallest public printf implementation for its feature set.
- cjlano/tinyprintf : A tiny printf and sprintf library for small embedded systems
- MaJerle/lwprintf : Lightweight printf library optimized for embedded systems
- blog
- rokath/trice : super fast and tiny embedded device C printf-like trace code (works also inside interrupts) and real-time PC logging (trace ID visualization)
- μP7 (micro P7) : μP7 (micro P7) is lightweight C library for sending trace/logs & telemetry data from your Micro-controller’s firmware to host/HW FIFO/cycle buffer/network/etc. for further analysis. It is designed to be integrated on almost every microcontroller, even with very limited resources.
- Zephyr Logging
- rxi/log.c : A simple logging library implemented in C99
- rdpoor/ulog : lightweight logging for embedded microcontrollers
- martinribelotta/elog : Embedded logger with minimal footprint and memory usage
- EasyLogger
- blog
- heatshrink
- heatshrink-sfh : Single-file-header, stripped-down version of the heatshrink decompression algorithm.
- tinf - tiny inflate library : Tiny inflate library (inflate, gzip, zlib)
- Golomb-Rice Coding
- kamyar-nemati/libecg : Hybrid lossless and lossy compression technique for ECG signals
- Run-length encoding algorithm
- MichaelDipperstein/rle : An ANSI C implementation of Run Length Encoding
- Huffman
- MichaelDipperstein/huffman : An ANSI C implementation of Huffman coding
- Comparison Between (RLE And Huffman) Algorithmsfor Lossless Data Compression
- Delta coding
- MichaelDipperstein/delta : an ANSI C implementation of adaptive delta coding
- BitArray
- noporpoise/BitArray
- MichaelDipperstein/bitarray
- ilanschnell/bitarray : efficient arrays of booleans for Python
- Quite OK Image Format : The “Quite OK Image Format” for fast, lossless image compression
- libpng
- LodePNG : 解码 VGA 图片需要 2.3MB 的内存空间
- SPNG : 对嵌入式比较友好,解码 VGA 图片只需要 50KB 空间
- https://github.com/richgel999/miniz : 谷歌平替 zlib
- PNGdec : Arduino PNG image decoder library
- https://github.com/misc0110/libattopng
- https://github.com/elanthis/upng
- libjpeg
- https://github.com/richgel999/picojpeg
- TinyJPEG : Single header lib for JPEG encoding. Public domain. C99. stb style.
- Libnsgif : 基本不需要额外内存空间
- https://giflib.sourceforge.net/
- https://github.com/lecram/gifdec : small C GIF decoder
- AnimatedGIF : A lightweight Arduino GIF decoder for playing animated files from memory or files on SD cards
- SFUD
- Flash Circular Buffer (FCB) : Flash circular buffer provides an abstraction through which you can treat flash like a FIFO. You append entries to the end, and read data from the beginning.
- cJSON
- Lightweight JSON text parser : Lightweight JSON parser for embedded systems
- mqttclient : A high-performance, high-stability, cross-platform MQTT client, developed based on the socket API, can be used on embedded devices (FreeRTOS / LiteOS / RT-Thread / TencentOS tiny), Linux, Windows, Mac, with a very concise The API interface realizes the quality of service of QOS2 with very few resources, and seamlessly connects the mbedtls encryp…
- Tiny AES in C : Small portable AES128/192/256 in C
- micro-ecc : ECDH and ECDSA for 8-bit, 32-bit, and 64-bit processors.
- libcrc : CRC 校验数据完整性
- CMSIS DSP : CMSIS Version 5 Development Repository
- libfixmath : Cross Platform Fixed Point Maths Library
- smolar : a tiny multidimensional array implementation in C similar to numpy, but only one file.
- Zephyr Scientific Library (zscilib) : An open-source scientific computing library for embedded systems running Zephyr OS or standalone.
- liquid-dsp : digital signal processing library for software-defined radios
- Kalman Filter C Implementation : Microcontroller targeted C library for Kalman filtering
- siglib : SigLib Digital Signal Processing and Machine Learning Library
- IQmath : Fixed Point Math Library for MSP
- bignum : A bignum library for C.
-
SOD : An Embedded Computer Vision & Machine Learning Library (CPU Optimized & IoT Capable)
-
CMSIS NN : CMSIS-NN Library
-
BitNetMCU : Neural Networks with low bit weights on low end 32 bit microcontrollers such as the CH32V003 RISC-V Microcontroller and others
-
STM32AICube : Free AI model optimizer for STM32
-
Silicon Labs Machine Learning : Silicon Labs Machine Learning Toolkit (MLTK)
-
AmbiqAI : Ludicrously ultra low power Endpoint AI.
- letter shell : 可以让串口对现有函数进行组合以及调用
- Lightweight shell : Lightweight shell implementation for embedded systems
- MultiButton : 按键管理
- Lightweight event manager : Lightweight button handler for embedded systems
- MultiTimer : 软件定时器
- perf_counter : A dedicated performance counter for Cortex-M systick. It shares the SysTick with users' original SysTick function without interfering it. This library will bring new functionalities, such as performance counter, delay_us and clock() service defined in time.h
- Lightweight Date, Time & Cron : Lightweight date, time & cron utilities for embedded systems
- Lightweight Watchdog for embedded systems : Lightweight watchdog for RTOS and embedded systems
- tslib : Touchscreen access library
- LVGL : Light and Versatile Graphics Library
- https://github.com/iDoka/awesome-embedded-software
- https://github.com/nhivp/Awesome-Embedded
- https://github.com/rust-embedded/awesome-embedded-rust
- https://github.com/fkromer/awesome-embedded-linux
We welcome your contributions! Please follow these steps to contribute:
- Fork the repo.
- Create a new branch (e.g.,
feature/new-embedded-library-resource
). - Commit your changes to the new branch.
- Create a Pull Request, and provide a brief description of the changes/additions.
Please make sure that the resources you add are relevant to the field of MCU Embedded Software. Before contributing, take a look at the existing resources to avoid duplicates.
This work is licensed under a Creative Commons Attribution 4.0 International License.