awesome-embedded-systems

Embedded System Library

A curated collection of libraries, frameworks, and tools for building embedded systems applications.

A curated list of delightful Embedded Systems libraries, RTOSes, modules, references and more!

GitHub

796 stars
48 watching
99 forks
last commit: over 2 years ago
Linked from 2 awesome lists


Table of Contents / Packages, Libraries and RTOSes / TCP/IP

lwIPlwIP is a small independent implementation of the TCP/IP protocol suite that has been initially developed by Adam Dunkels. Supports DHCP with AutoIP fallback, UDP, TCP, and an interrupt driven model
uIP908over 9 years agoA very tiny IP stack, but also a very minimal IP stack. (Not maintained anymore)

Table of Contents / Packages, Libraries and RTOSes / CoAP

cantcoap86almost 5 years agoSmall and lightweight coap encoder and decoder. Protocol level stuff is left to the user
libcoaplibcoap implements a lightweight application-protocol for devices that are constrained their resources such as computing power, RF range, memory, bandwith, or network packet sizes
microcoap338over 8 years agoA small CoAP implementation for microcontrollers
libnyoci27over 6 years agoA flexible CoAP stack for embedded devices and computers. RFC7252 compatible

Table of Contents / Packages, Libraries and RTOSes / CANopen

CanFestivalCanFestival focuses on providing an ANSI-C platform independent CANopen® stack that can be built as master or slave nodes on PCs, Real-time IPCs, and Microcontrollers
CANopenNode1,478almost 2 years agoCANopenNode is written in ANSI C in object-oriented way. It runs on different microcontrollers, as standalone application or with RTOS
Lely CANopen LibraryA CANopen implementation for both masters and slaves written in C, but with a C++ interface
Ixxat
port
ESA's microCANopen Plus
emtas
MicroControl

Table of Contents / Packages, Libraries and RTOSes / Serialization

nanopbNanopb is a plain-C implementation of Google's Protocol Buffers data format. It is targeted at 32 bit microcontrollers, but is also fit for other embedded systems with tight (2-10 kB ROM, <1 kB RAM) memory constraints
mpack549over 3 years agoA C encoder/decoder for messages suitable for resource constriants embedded systems. Supports disabling dynamic memory allocation and overriding malloc, free, and realloc
tinycbor507about 2 years agoIntel's implementation of designed for their IOT-based applications and processors
bitproto132about 2 years agoA fast, lightweight and easy-to-use bit level data interchange format for serializing data structure. Its syntax is similar to protobuf, but very suitable for the embedded systems
json-build38almost 2 years agoA tiny, zero-allocation JSON serializer written in ANSI C. A good fit for development in memory constrained systems

Table of Contents / Packages, Libraries and RTOSes / RTOS

TinyOS1,416about 3 years agoA operating system designed for low-power wireless devices, such as those used in sensor networks, ubiquitous computing, personal area networks, smart buildings, and smart meters
ContikiOS3,726over 2 years agoA free Operating System with focus to provide standardized low-power wireless communication for a wide range of hardware platforms
FreeRTOSA free use Real Time Operating system which is widely used and supports a large number of platforms
RIOTA free OS for IoT devices providing foundational trust services. The trust services include device identity, sealing, attestation, and data integrity. The term “Robust” is used because the minimal trusted computing base is tiny, and because RIoT capabilities can remotely re-establish trust in devices that have been compromised by malware
RTEMSReal-Time Executive for Multiprocessor Systems or RTEMS is an open source Real Time Operating System (RTOS) that supports open standard application programming interfaces (API) such as POSIX. It is used in space flight, medical, networking and many more embedded devices using processor architectures including ARM, PowerPC, Intel, Blackfin, MIPS, Microblaze and more
SafeRTOSCertified version of FreeRTOS by TUEV SUED against IEC 61508 (basic functional safety standard) up to SIL3 (the highest safety integrity level for a single software component), ISO 26262 ASIL D (automotive standard) and EN62304 (medical device standard)
INTEGRITY/INTEGRITY-178Two commercial RTOS variants targeting to power embedded systems with total reliability, absolute security, and maximum real-time performance. The variant INTEGRYTY-178 has a lot of safety and security certifications
PikeOSA commercial micro-kernel based operating system with a small footprint and certified for DO-178 (avionics), IEC-61508 (industrial), ISO-26262 (automotive)
RocketA free embedded operating system specifically designed to quickly and easily build small, intelligent devices in Wind Rivers cloud-based development environment, Wind River Helix™ App Cloud
Nucleus RTOSCommercial, highly scalable micro-kernel based real-time operating system designed for scalability and reliability
uC/osµC/OS-II and µC/OS-III are preemptive, highly portable, and scalable real-time kernels. You can test them out for free, but you must pay to put them into a product
TI-RTOSA real-time operating system for TI microcontrollers, It Includes TCP/IP and USB stacks, a FAT file system, and device drivers, Most of the TI-RTOS components are released under the BSD License

Table of Contents / Packages, Libraries and RTOSes / Testing

CppUTestunit testing and mocking framework for C/C++ with a focus on working for embedded systems!
ceedling, unity and cmockUnit testing, mocking and build framework written in C with ruby for generating and building
doctest6,010almost 2 years agoA lightweight and feature-rich C++98/C++11 single-header testing framework for unit tests and TDD
Mockitopp77about 5 years agoA C++ mocking framework inspired by the ideas developed for Mockito written by Szczepan Faber, et al. The purpose is to provide similar construction semantics for creating mock objects leading to smaller, more readable test cases. It is designed to be a lightweight framework allowing you to mock dependencies for a system under test using a simple descriptive domain specific language. The goal is to help create simpler, less brittle test cases; ultimately, leading to less maintenance overhead in the future
Trompeloeil819almost 2 years agoA thread safe header only mocking framework for C++14 using the Boost Software License 1.0
Catch18,841almost 2 years agoA modern, C++-native, header-only, test framework for unit-tests, TDD and BDD - using C++11, C++14, C++17 and later (or C++03 on the Catch1.x branch)

Table of Contents / Packages, Libraries and RTOSes / Frameworks

Arduino
AREG SDK285almost 2 years agoAn interface-centric real-time asynchronous communication engine for embedded and high-end applications to enable distributed- and , where connected Things interact and provide services, as if they act like thin distributed servers
ARM mbedThe ARM mbed IoT Device Platform provides the operating system, cloud services, tools and developer ecosystem to make the creation and deployment of commercial, standards-based IoT solutions possible at scale

Table of Contents / Packages, Libraries and RTOSes / Alternative Languages (Not C/C++)

minilibd"This collection has libraries and tools to compile D language programs for embedded or "bare metal" systems with the gdc compiler. The main focus is STM32 controllers but the library and build tools are easy to port to any processor."
DConf 2014 Talk "Tiny, Ubiquitous Machines Powered by D"Presentation about D in tiny embedded systems
hubris3,050almost 2 years ago-A lightweight, memory-protected, message-passing kernel for deeply embedded systems
rust-embedded1,936almost 2 years agoRFCs proposed by the Rust community for better embedded systems support
embed.rsArticles about doing embedded on rust
NervesUses buildroot to deploy Elixir programs running on the Erlang VM to embedded linux boards
AdaCoreOpen source maintainer of Ada with a focus on embedded use
TesselA openWRT based embedded system which can run Javascript
JerryScript6,976almost 2 years agoA JavaScript engine intended to run on a very constrained devices such as microcontrollers. Designed for the Internet of Things
NimA statically-typed programming language inspired by Python, Ada and Modula that compiles to C, C++, and Javascript
Zig
Ferrett: Ferret is a free software Clojure implementation for real time embedded control systems. Generated code is self contained ISO C++11, it is not tied to any one compiler, generated code should be 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
GERT861about 6 years ago: GERT is a modified version of Go that runs bare-metal on armv7a SOCs. The minimal set of OS primitives that Go relies on have been re-implemented entirely in Go and Plan 9 assembly inside the modified runtime. The goal of this project is to bring the benefits of a high-level, type-safe, and garbage-collected language to bare-metal embedded environments
MicroPythonis a lean and efficient implementation of the Python 3 programming language that includes a small subset of the Python standard library and is optimised to run on microcontrollers and in constrained environments

Table of Contents / Packages, Libraries and RTOSes / STL

ESTL62over 10 years agoC++ STL-like library for embedded developers with C++ 98 features only to maximize target platform compatibility
ETL2,274almost 2 years agoEmbedded Template Library which offers compile time defined container sizes, full C++ 03 and partial C++ 11 compatibility, deterministic behaviour, additional components for the embedded domain, etc
uSTLPartial, code size implementation of the STL
EASTL8,317about 2 years agoElectronic Arts STL - aimed for console devices. Good descripton avaliable

Table of Contents / Resources / Other Lists

Single File Libs9,035over 2 years agoSingle File libraries for C++ and C. Some might be useful for embedded systems use

Table of Contents / Resources / Podcasts

EmbeddedElicia White and Christopher White interview makes, hackers and engineers who work on embedded systems
The Amp Hour
Sparkgap
Two's Complement PodcastDiscussions between Matt Godbolt and Ben Rady, revolving around testing, best practices, etc in C and C++ development

Table of Contents / Resources / Blogs

Embedded Artistry-
InterruptGreat in-depth blog posts from MemFault. Mostly around ARM Cortex-M series processors

Table of Contents / Resources / Newsletters

Embedsys WeeklyA weekly selection of embedded software and hardware articles

Table of Contents / Resources / Videos

EEVBlogMore on the electronics side, but David L. Jones tears apart embedded systems and electronic devices
The Signal PathElectronics equipment teardowns

Table of Contents / Resources / Books

Security Engineering: A Guide to Building Dependable Distributed SystemsAnderson, Ross J.: , John Wiley & Sons, 2nd, 2008 (ISBN-10: 0471389226, ISBN-13: 978-0471389224)
Software Development for Embedded Multi-core Systems: A Practical Guide Using Embedded Intel ArchitectureDomeika, Max: , Newnes, 1st, 2008 (ISBN-10: 0750685395, ISBN-13: 978-0750685399)
Embedded Linux Projects Using Yocto Project CookbookGonzález, Alex: , Packt Publishing Limited, 1st edition, 2015 (ISBN-10: 1784395188, ISBN-13: 9781784395186)
Software Test Attacks to Break Mobile and Embedded DevicesHagar, Jon Duncan: , Chapman & Hall/Crc, 1st, 2013 (ISBN-10: 1466575301, ISBN-13: 978-1466575301)
Real-Time Systems: Design Principles for Distributed Embedded Applications (Real-Time Systems Series)Kopetz, Hermann: , Springer, 2nd, 2011 (ISBN-10: 1441982361, ISBN-13: 978-1441982360)
Engineering a Safer World: Systems Thinking Applied to Safety (Engineering Systems)Leveson, Nancy G.: , The MIT Press, 1st, 2012 (ISBN-10: 0262016621, ISBN-13: 978-0262016629)
Functional Safety: An IEC 61508 SIL 3 Compliant Development ProcessMedoff, Michael and Faller, Rainer: , exida.com LLC, 3rd, 2014 (ISBN-10: 193497708X, ISBN-13: 978-1934977088)
Securing Cyber-Physical SystemsPathan, Al-Sakib Khan: , Crc Press Inc, 1st, 2015 (ISBN-10: 1498700985, ISBN-13: 978-1498700986)
Reliability of Safety-Critical Systems: Theory and ApplicationsRausand, Marvin: , Wiley, 1st, 2014 (ISBN-10: 1118112725, ISBN-13: 978-1118112724)
Modern C++ Programming with Test-Driven Development - Code Better, Sleep BetterLangr, Jeff: , OReilly, 1st edition, 2013 (ISBN-10: 1937785483, ISBN-13: 978-1937785482)
Mastering Embedded Linux ProgrammingSimmonds, Chris: , Packt Publishing Limited, 1st edition, 2015 (ISBN-10: 1784392537, ISBN-13: 9781784392536)
Making Embedded Systems by Elicia WhiteCovers the basics of embedded systems architecture, design and patterns
Test Driven Developmet for Embedded C by James GrenningHow to approach test driven development for embedded devices written in C
uC/OS-III, The Real-Time Kernel by Jean J LabrosseA book about the Micrium's uC/os III. It is a great resource on how RTOSes for embedded systems should work
An Embedded Software Primer by David E. SimonAn introduction to embedded systems, with a good explanation to Real-time operating systems(RTOS)

Table of Contents / Resources / Standards

Embedded C Coding StandardsCoding standards for embedded C from the Barr Group
SEI CERT C Coding StandardThe SEI CERT C Coding Standard is a software coding standard for the C programming language to improve the safety, reliability, and security of software systems

Table of Contents / Resources / Tools

PlatformIOPlatformIO is an open source ecosystem for IoT development Cross-platform build system. Continuous and IDE integration. Arduino and ARM mbed compatible
EnergiaEnergia is an open-source electronics prototyping platform, it brings the Wiring and Arduino framework to the Texas Instruments MSP430 based LaunchPad, it includes an IDE that is based on Processing
XODAn open source visual programming platform for Arduino-compatible boards

Table of Contents / Resources / Embedded Linux

yoctoYocto is a tool for creating custom embedded linux systems
BuildrootBuildroot is a simple, efficient and easy-to-use tool to generate embedded Linux systems through cross-compilation
Mender998almost 2 years agoOpen source over-the-air (OTA) software updater for embedded Linux devices
SWUpdate1,462almost 2 years agoLinux Update agent with the goal to provide an efficient and safe way to update (local, remote, multiple update strategies) an embedded system

Table of Contents / Resources / Courses

C++ programming in Qt FrameWork Part I (udemy)not free
C++ programming in Qt Framework: Part II (udemy)not free
Computer Systems Design for Energy Efficiency (edx)
Cybersecurity Fundamentals - Construction of Secure Systems (coursera)Landing page for 5 courses about security with relation to embedded systems
Development of Real-Time Systems (coursera)
Embedded Systems - Shape The World (edx)
FPGA Turbo Series - Communication Protocols
FPGA Turbo Series - Implementing a UART
Fun & Easy Embedded Microcontroller Communication Protocols (Udemy)Content: I2C/TWI, SPI, UART, MODBUS RTU, CAN, USB, ETHERNET, PCIE
Introduction to Qt: A C++ Cross Platform Application Framework (pluralsight)not free
Integrating Qt Quick with C++ (pluralsight)not free
Learn FreeRTOS from scratchnot free - Learn about FreeRTOS basics. Practise it's APIs with different examples
Linux OS in Embedded Systems & Linux Kernel Internals(1/2) (Udemy)not free
Linux OS in Embedded Systems & Linux Kernel Internals(2/2) (Udemy)not free
ARM Cortex-M Bare-Metal Embedded-C Programming (Udemy)
ARM Cortex-M Assembly Programming (Udemy)
Introduction to Embedded Systems using 8051 Microcontroller (Udemy)
Mastering Microcontroller with Peripheral Driver Development (Udemy)
Embedded Systems Programming on ARM Cortex-M3/M4 Processor (Udemy)
Foundation course on Embedded Linux (Udemy)
Hands-on Embedded Systems, ARM Cortex Tutorials - ADCs (Udemy)
edX Embedded Systems Course by University of Texas Austin
System Validation (1): Automata and behavioural equivalences (coursera)
System Validation (2): Model process behaviour (coursera)
UNC Charlotte Embedded Systems Course
QT C++ GUI Tutorial For Beginners (udemy)not free
How To Implement Your First VHDL Design on FPGA (udemy)
Learn VHDL and FPGA Development (udemy)
FPGA Design Learning VHDL (udemy)
Learn VHDL Design for use in FPGA and ASIC Digital Systems (udemy)
Learn VHDL, ISE and FPGA by Designing a basic Home Alarm (udemy)
The Embedded Pre-Interview! (udemy)not free - Evaluate your Embedded Systems knowledge, in just 100 minutes, for any entry level job

Backlinks from these awesome lists:

More related projects: