awesome-embedded-systems
A curated list of delightful Embedded Systems libraries, RTOSes, modules, references and more!
https://github.com/embedded-boston/awesome-embedded-systems
Last synced: about 12 hours ago
JSON representation
-
Packages, Libraries and RTOSes
-
Alternative Languages (Not C/C++)
- MicroPython
- Tessel - A openWRT based embedded system which can run Javascript.
- Zig
- Nim - A statically-typed programming language inspired by Python, Ada and Modula that compiles to C, C++, and Javascript.
- DConf 2014 Talk "Tiny, Ubiquitous Machines Powered by D" - Presentation about D in tiny embedded systems.
- embed.rs - Articles about doing embedded on rust
- AdaCore - Open source maintainer of Ada with a focus on embedded use.
- Ferrett
- Tessel - A openWRT based embedded system which can run Javascript.
- Tessel - A openWRT based embedded system which can run Javascript.
- Tessel - A openWRT based embedded system which can run Javascript.
- Tessel - A openWRT based embedded system which can run Javascript.
- hubris - A lightweight, memory-protected, message-passing kernel for deeply embedded systems.
- GERT - 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.
- minilibd - "This collection has libraries and tools to compile D language programs for embedded or "bare metal" systems with the
- rust-embedded - RFCs proposed by the Rust community for better embedded systems support.
- embed.rs - Articles about doing embedded on rust
- Nerves - Uses buildroot to deploy Elixir programs running on the Erlang VM to embedded linux boards
-
TCP/IP
- lwIP - lwIP 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.
- lwIP - lwIP 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.
- uIP - A very tiny IP stack, but also a very minimal IP stack. (Not maintained anymore)
-
Frameworks
- Arduino
- AREG SDK - An interface-centric real-time asynchronous communication engine for embedded and high-end applications to enable distributed- and [mist-computing](https://csrc.nist.gov/publications/detail/sp/500-325/final), where connected Things interact and provide services, as if they act like thin distributed servers.
- ARM mbed - The 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.
-
CoAP
- libcoap - libcoap implements a lightweight application-protocol for devices that are constrained their resources such as computing power, RF range, memory, bandwith, or network packet sizes
- cantcoap - Small and lightweight coap encoder and decoder. Protocol level stuff is left to the user.
- libnyoci - A flexible CoAP stack for embedded devices and computers. RFC7252 compatible.
- microcoap - A small CoAP implementation for microcontrollers
-
CANopen
- CanFestival - CanFestival 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.
- Ixxat
- port
- ESA's microCANopen Plus
- emtas
- MicroControl
- MicroControl
- CANopenNode - CANopenNode is written in ANSI C in object-oriented way. It runs on different microcontrollers, as standalone application or with RTOS.
- Lely CANopen Library - A CANopen implementation for both masters and slaves written in C, but with a C++ interface.
- Ixxat
- CanFestival - CanFestival 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.
- Ixxat
- port
- ESA's microCANopen Plus
- MicroControl
-
Serialization
- nanopb - Nanopb 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.
- json-build - A tiny, zero-allocation JSON serializer written in ANSI C. A good fit for development in memory constrained systems.
- mpack - A C encoder/decoder for [MessagePack](http://msgpack.com) messages suitable for resource constriants embedded systems. Supports disabling dynamic memory allocation and overriding malloc, free, and realloc.
- bitproto - A 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.
- nanopb - Nanopb 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.
- tinycbor - Intel's implementation of [CBOR](http://cbor.io/) designed for their IOT-based applications and processors
-
RTOS
- RIOT - A 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.
- RTEMS - Real-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.
- SafeRTOS - Certified 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).
- PikeOS - A commercial micro-kernel based operating system with a small footprint and certified for DO-178 (avionics), IEC-61508 (industrial), ISO-26262 (automotive).
- Rocket - A 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 RTOS - Commercial, 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.
- FreeRTOS - A free use Real Time Operating system which is widely used and supports a large number of platforms.
- ContikiOS - A free Operating System with focus to provide standardized low-power wireless communication for a wide range of hardware platforms.
- TinyOS - A 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.
- RIOT - A 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.
- INTEGRITY/INTEGRITY-178 - Two 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.
- PikeOS - A commercial micro-kernel based operating system with a small footprint and certified for DO-178 (avionics), IEC-61508 (industrial), ISO-26262 (automotive).
- Nucleus RTOS - Commercial, highly scalable micro-kernel based real-time operating system designed for scalability and reliability.
-
Testing
- CppUTest - unit testing and mocking framework for C/C++ with a focus on working for embedded systems!
- Catch - A 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)
- Trompeloeil - A thread safe header only mocking framework for C++14 using the Boost Software License 1.0
- doctest - A lightweight and feature-rich C++98/C++11 single-header testing framework for unit tests and TDD.
- Mockitopp - A 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.
-
STL
- uSTL - Partial, code size implementation of the STL.
- ETL - Embedded 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.
- EASTL - Electronic Arts STL - aimed for console devices. Good descripton avaliable [HERE](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2271.html)
- ESTL - C++ STL-like library for embedded developers with C++ 98 features only to maximize target platform compatibility.
-
-
Resources
-
Standards
- SEI CERT C Coding Standard - The 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.
- Embedded C Coding Standards - Coding standards for embedded C from the Barr Group.
- Embedded C Coding Standards - Coding standards for embedded C from the Barr Group.
-
Blogs
- Interrupt - Great in-depth blog posts from MemFault. Mostly around ARM Cortex-M series processors.
- Embedded Artistry
-
Embedded Linux
- yocto - Yocto is a tool for creating custom embedded linux systems
- Buildroot - Buildroot is a simple, efficient and easy-to-use tool to generate embedded Linux systems through cross-compilation.
- SWUpdate - Linux Update agent with the goal to provide an efficient and safe way to update (local, remote, multiple update strategies) an embedded system.
- Mender - Open source over-the-air (OTA) software updater for embedded Linux devices.
-
Newsletters
- Embedsys Weekly - A weekly selection of embedded software and hardware articles.
-
Podcasts
- The Amp Hour
- Sparkgap
- Two's Complement Podcast - Discussions between Matt Godbolt and Ben Rady, revolving around testing, best practices, etc in C and C++ development.
- Embedded - Elicia White and Christopher White interview makes, hackers and engineers who work on embedded systems
- The Amp Hour
- Sparkgap
-
Videos
- EEVBlog - More on the electronics side, but David L. Jones tears apart embedded systems and electronic devices.
- The Signal Path - Electronics equipment teardowns
-
Books
- Security Engineering: A Guide to Building Dependable Distributed Systems - 10: 0471389226, ISBN-13: 978-0471389224)
- Software Development for Embedded Multi-core Systems: A Practical Guide Using Embedded Intel Architecture - 10: 0750685395, ISBN-13: 978-0750685399)
- Software Test Attacks to Break Mobile and Embedded Devices - 10: 1466575301, ISBN-13: 978-1466575301)
- Real-Time Systems: Design Principles for Distributed Embedded Applications (Real-Time Systems Series) - 10: 1441982361, ISBN-13: 978-1441982360)
- Engineering a Safer World: Systems Thinking Applied to Safety (Engineering Systems) - 10: 0262016621, ISBN-13: 978-0262016629)
- Functional Safety: An IEC 61508 SIL 3 Compliant Development Process - 10: 193497708X, ISBN-13: 978-1934977088)
- Securing Cyber-Physical Systems - 10: 1498700985, ISBN-13: 978-1498700986)
- Reliability of Safety-Critical Systems: Theory and Applications - 10: 1118112725, ISBN-13: 978-1118112724)
- Mastering Embedded Linux Programming - 10: 1784392537, ISBN-13: 9781784392536)
- Making Embedded Systems by Elicia White - Covers the basics of embedded systems architecture, design and patterns.
- Test Driven Developmet for Embedded C by James Grenning - How to approach test driven development for embedded devices written in C.
- uC/OS-III, The Real-Time Kernel by Jean J Labrosse - A 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. Simon - An introduction to embedded systems, with a good explanation to Real-time operating systems(RTOS).
- Mastering Embedded Linux Programming - 10: 1784392537, ISBN-13: 9781784392536)
- Embedded Linux Projects Using Yocto Project Cookbook - 10: 1784395188, ISBN-13: 9781784395186)
- Embedded Linux Projects Using Yocto Project Cookbook - 10: 1784395188, ISBN-13: 9781784395186)
- Software Development for Embedded Multi-core Systems: A Practical Guide Using Embedded Intel Architecture - 10: 0750685395, ISBN-13: 978-0750685399)
- Software Test Attacks to Break Mobile and Embedded Devices - 10: 1466575301, ISBN-13: 978-1466575301)
- Engineering a Safer World: Systems Thinking Applied to Safety (Engineering Systems) - 10: 0262016621, ISBN-13: 978-0262016629)
- Functional Safety: An IEC 61508 SIL 3 Compliant Development Process - 10: 193497708X, ISBN-13: 978-1934977088)
- Securing Cyber-Physical Systems - 10: 1498700985, ISBN-13: 978-1498700986)
- Modern C++ Programming with Test-Driven Development - Code Better, Sleep Better - 10: 1937785483, ISBN-13: 978-1937785482)
- Mastering Embedded Linux Programming - 10: 1784392537, ISBN-13: 9781784392536)
- uC/OS-III, The Real-Time Kernel by Jean J Labrosse - A book about the Micrium's uC/os III. It is a great resource on how RTOSes for embedded systems should work.
-
Tools
- Energia - Energia 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.
- PlatformIO - PlatformIO is an open source ecosystem for IoT development
- Energia - Energia 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.
-
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)
- Development of Real-Time Systems (coursera)
- edX Embedded Systems Course by University of Texas Austin
- 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 scratch - not 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)
- 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
- Computer Systems Design for Energy Efficiency (edx)
- Embedded Systems - Shape The World (edx)
- UNC Charlotte Embedded Systems Course
-
Sub Categories
Keywords
embedded
5
iot
4
c-plus-plus
3
cpp
3
testing
2
tdd
2
framework
2
cpp14
2
stack
2
library
2
embedded-applications
2
embedded-systems
1
emmc
1
firmware-update
1
flashes
1
fota
1
hawkbit
1
industrial-linux
1
linux
1
lua
1
ota
1
ota-firmware-updates
1
ota-updater
1
software-update
1
swupdate
1
async
1
canopennode
1
canopen
1
stl
1
modern-cpp
1
games
1
eastl
1
c-plus-plus-20
1
c-plus-plus-17
1
c-plus-plus-14
1
c-plus-plus-11
1
test-framework
1
no-dependencies
1
bdd
1
templates
1
containers
1
asynchronous
1
cli
1
coap
1
contiki
1
uip
1
cpp11
1
cpp17
1
cpp20
1
cpp23
1