├── .gitattributes ├── README.md ├── code-of-conduct.md └── contributing.md /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # awesome-embedded [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome) 2 | 3 | > A curated list of delightful Embedded Systems [libraries, RTOSes, packages,](#packages-libraries-and-rtoses) and [references](#resources)! 4 | 5 | *Please read the [contribution guidelines](contributing.md) before contributing.* 6 | 7 | # Table of Contents 8 | 9 | 10 | 11 | - [Packages, Libraries and RTOSes](#packages-libraries-and-rtoses) 12 | - [TCP/IP](#tcpip) 13 | - [CoAP](#coap) 14 | - [CANopen](#canopen) 15 | - [Open Source](#open-source) 16 | - [Proprietary](#proprietary) 17 | - [Serialization](#serialization) 18 | - [RTOS](#rtos) 19 | - [Free or Open Source](#free-or-open-source) 20 | - [Commercial](#commercial) 21 | - [Testing](#testing) 22 | - [Frameworks](#frameworks) 23 | - [Alternative Languages (Not C/C++)](#alternative-languages-not-cc) 24 | - [D](#d) 25 | - [Rust](#rust) 26 | - [Elixir](#elixir) 27 | - [Ada and Spark](#ada-and-spark) 28 | - [Javascript](#javascript) 29 | - [Nim](#nim-lang) 30 | - [Zig](#zig-lang) 31 | - [Clojure](#clojure) 32 | - [Golang](#golang) 33 | - [STL](#stl) 34 | - [Resources](#resources) 35 | - [Other Lists](#other-lists) 36 | - [Podcasts](#podcasts) 37 | - [Videos](#videos) 38 | - [Books](#books) 39 | - [Standards](#standards) 40 | - [Tools](#tools) 41 | - [Embedded Linux](#embedded-linux) 42 | - [Courses](#courses) 43 | - [License](#license) 44 | 45 | 46 | 47 | ## Packages, Libraries and RTOSes 48 | 49 | ### TCP/IP 50 | 51 | - [lwIP](http://savannah.nongnu.org/projects/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. 52 | - [uIP](https://github.com/adamdunkels/uip) - A very tiny IP stack, but also a very minimal IP stack. (Not maintained anymore) 53 | 54 | ### CoAP 55 | 56 | - [cantcoap](https://github.com/staropram/cantcoap) - Small and lightweight coap encoder and decoder. Protocol level stuff is left to the user. 57 | - [libcoap](https://libcoap.net/) - 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 58 | - [microcoap](https://github.com/1248/microcoap) - A small CoAP implementation for microcontrollers 59 | - [libnyoci](https://github.com/darconeous/libnyoci) - A flexible CoAP stack for embedded devices and computers. RFC7252 compatible. 60 | 61 | ### CANopen 62 | 63 | #### Open Source 64 | 65 | - [CanFestival](http://www.canfestival.org/) - 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. 66 | - [CANopenNode](https://github.com/CANopenNode/CANopenNode) - CANopenNode is written in ANSI C in object-oriented way. It runs on different microcontrollers, as standalone application or with RTOS. 67 | - [Lely CANopen Library](https://gitlab.com/lely_industries/co) - A CANopen implementation for both masters and slaves written in C, but with a C++ interface. 68 | 69 | #### Proprietary 70 | 71 | - [Ixxat](https://www.ixxat.com/products/products-industrial/protocol-software-and-apis/protocol-software/canopen-protocol-software) 72 | - [port](http://www.port.de/en/products/canopen.html) 73 | - [ESA's microCANopen Plus](http://www.canopenstore.com/pip/microcanopen-plus.html) 74 | - [emtas](https://www.emtas.de/en/produkte/canopen-master-stack) 75 | - [MicroControl](http://www.microcontrol.net/en/products/protocol-stacks/canopen/) 76 | 77 | ### Serialization 78 | 79 | - [nanopb](https://koti.kapsi.fi/jpa/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. 80 | - [mpack](https://github.com/ludocode/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. 81 | - [tinycbor](https://github.com/01org/tinycbor) - Intel's implementation of [CBOR](http://cbor.io/) designed for their IOT-based applications and processors 82 | - [bitproto](https://github.com/hit9/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. 83 | - [json-build](https://github.com/lcsmuller/json-build) - A tiny, zero-allocation JSON serializer written in ANSI C. A good fit for development in memory constrained systems. 84 | 85 | ### RTOS 86 | #### Free or Open Source 87 | 88 | - [TinyOS](https://github.com/tinyos/tinyos-main) - 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. 89 | - [ContikiOS](https://github.com/contiki-os/contiki) - A free Operating System with focus to provide standardized low-power wireless communication for a wide range of hardware platforms. 90 | - [FreeRTOS](http://www.freertos.org/) - A free use Real Time Operating system which is widely used and supports a large number of platforms. 91 | - [RIOT](https://github.com/RIOT-OS/) - 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. 92 | - [RTEMS](https://www.rtems.org/) - 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. 93 | 94 | #### Commercial 95 | 96 | - [SafeRTOS](https://www.highintegritysystems.com/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). 97 | - [INTEGRITY/INTEGRITY-178](http://www.ghs.com/products/rtos/integrity.html#performance) - 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. 98 | - [PikeOS](https://www.sysgo.com/products/pikeos-hypervisor/) - A commercial micro-kernel based operating system with a small footprint and certified for DO-178 (avionics), IEC-61508 (industrial), ISO-26262 (automotive). 99 | - [Rocket](http://www.windriver.com/products/operating-systems/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. 100 | - [Nucleus RTOS](https://www.mentor.com/embedded-software/nucleus/) - Commercial, highly scalable micro-kernel based real-time operating system designed for scalability and reliability. 101 | - [uC/os](https://www.micrium.com/rtos/kernels/) - µ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. 102 | - [TI-RTOS](www.ti.com/tool/ti-rtos) - A 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. 103 | 104 | ### Testing 105 | 106 | - [CppUTest](https://cpputest.github.io/) - unit testing and mocking framework for C/C++ with a focus on working for embedded systems! 107 | - [ceedling, unity and cmock](http://www.throwtheswitch.org/) - Unit testing, mocking and build framework written in C with ruby for generating and building. 108 | - [doctest](https://github.com/onqtam/doctest) - A lightweight and feature-rich C++98/C++11 single-header testing framework for unit tests and TDD. 109 | - [Mockitopp](https://github.com/tpounds/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. 110 | - [Trompeloeil](https://github.com/rollbear/trompeloeil) - A thread safe header only mocking framework for C++14 using the Boost Software License 1.0 111 | - [Catch](https://github.com/catchorg/Catch2) - 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) 112 | 113 | ### Frameworks 114 | 115 | - [Arduino](https://www.arduino.cc/) 116 | - [AREG SDK](https://github.com/aregtech/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. 117 | - [ARM mbed](https://www.mbed.com/en/) - 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. 118 | 119 | ### Alternative Languages (Not C/C++) 120 | 121 | #### D 122 | 123 | - [minilibd](https://bitbucket.org/timosi/minlibd) - "This collection has libraries and tools to compile D language programs for embedded or "bare metal" systems with the 124 | gdc compiler. The main focus is STM32 controllers but the library and build tools are easy to port to any processor." 125 | - [DConf 2014 Talk "Tiny, Ubiquitous Machines Powered by D"](https://archive.org/details/dconf2014-day02-talk07) - Presentation about D in tiny embedded systems. 126 | 127 | #### Rust 128 | 129 | - [hubris](https://github.com/oxidecomputer/hubris) -A lightweight, memory-protected, message-passing kernel for deeply embedded systems. 130 | - [rust-embedded](https://github.com/rust-embedded/rfcs) - RFCs proposed by the Rust community for better embedded systems support. 131 | - [embed.rs](http://embed.rs/) - Articles about doing embedded on rust 132 | 133 | #### Elixir 134 | 135 | - [Nerves](http://nerves-project.org/) - Uses buildroot to deploy Elixir programs running on the Erlang VM to embedded linux boards 136 | 137 | #### Ada and Spark 138 | 139 | - [AdaCore](https://github.com/AdaCore) - Open source maintainer of Ada with a focus on embedded use. 140 | 141 | #### Javascript 142 | 143 | - [Tessel](https://tessel.io/) - A openWRT based embedded system which can run Javascript. 144 | - [JerryScript](https://github.com/Samsung/jerryscript) - A JavaScript engine intended to run on a very constrained devices such as microcontrollers. Designed for the Internet of Things. 145 | 146 | #### Nim 147 | 148 | - [Nim](https://nim-lang.org/) - A statically-typed programming language inspired by Python, Ada and Modula that compiles to C, C++, and Javascript. 149 | 150 | #### Zig 151 | 152 | - [Zig](https://ziglang.org/) 153 | 154 | #### Clojure 155 | 156 | - [Ferrett](https://ferret-lang.org/): Ferret is a free software Clojure implementation for real time embedded control systems. 157 | 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. 158 | 159 | #### Golang 160 | 161 | - [GERT](https://github.com/ycoroneos/G.E.R.T): 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. 162 | 163 | #### MicroPython 164 | - [MicroPython](https://micropython.org/) is 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. 165 | 166 | ### STL 167 | 168 | - [ESTL](https://github.com/esrlabs/estl-teaser) - C++ STL-like library for embedded developers with C++ 98 features only to maximize target platform compatibility. 169 | - [ETL](https://github.com/etlcpp/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. 170 | - [uSTL](https://github.com/msharov/ustl) - Partial, code size implementation of the STL. 171 | - [EASTL](https://github.com/electronicarts/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) 172 | 173 | ## Resources 174 | 175 | ### Other Lists 176 | 177 | - [Single File Libs](https://github.com/nothings/single_file_libs) - Single File libraries for C++ and C. Some might be useful for embedded systems use. 178 | 179 | ### Podcasts 180 | 181 | - [Embedded](http://embedded.fm/) - Elicia White and Christopher White interview makes, hackers and engineers who work on embedded systems 182 | - [The Amp Hour](http://www.theamphour.com/) 183 | - [Sparkgap](http://thesparkgap.net/) 184 | - [Two's Complement Podcast](https://www.twoscomplement.org/) - Discussions between Matt Godbolt and Ben Rady, revolving around testing, best practices, etc in C and C++ development. 185 | 186 | ### Blogs 187 | 188 | - [Embedded Artistry](https://embeddedartistry.com/) - 189 | - [Interrupt](https://interrupt.memfault.com/blog/) - Great in-depth blog posts from MemFault. Mostly around ARM Cortex-M series processors. 190 | 191 | ### Newsletters 192 | 193 | - [Embedsys Weekly](https://embedsysweekly.com/) - A weekly selection of embedded software and hardware articles. 194 | 195 | ### Videos 196 | 197 | - [EEVBlog](https://www.eevblog.com/) - More on the electronics side, but David L. Jones tears apart embedded systems and electronic devices. 198 | - [The Signal Path](https://thesignalpath.com/blogs/) - Electronics equipment teardowns 199 | 200 | ### Books 201 | 202 | - Anderson, Ross J.: [Security Engineering: A Guide to Building Dependable Distributed Systems](http://eu.wiley.com/WileyCDA/WileyTitle/productCd-0470068523.html), John Wiley & Sons, 2nd, 2008 (ISBN-10: 0471389226, ISBN-13: 978-0471389224) 203 | - Domeika, Max: [Software Development for Embedded Multi-core Systems: A Practical Guide Using Embedded Intel Architecture](https://www.elsevier.com/books/software-development-for-embedded-multi-core-systems/domeika/978-0-7506-8539-9), Newnes, 1st, 2008 (ISBN-10: 0750685395, ISBN-13: 978-0750685399) 204 | - González, Alex: [Embedded Linux Projects Using Yocto Project Cookbook](https://www.packtpub.com/virtualization-and-cloud/embedded-linux-projects-using-yocto-project-cookbook), Packt Publishing Limited, 1st edition, 2015 (ISBN-10: 1784395188, ISBN-13: 9781784395186) 205 | - Hagar, Jon Duncan: [Software Test Attacks to Break Mobile and Embedded Devices](https://www.crcpress.com/Software-Test-Attacks-to-Break-Mobile-and-Embedded-Devices/Hagar/p/book/9781466575301), Chapman & Hall/Crc, 1st, 2013 (ISBN-10: 1466575301, ISBN-13: 978-1466575301) 206 | - Kopetz, Hermann: [Real-Time Systems: Design Principles for Distributed Embedded Applications (Real-Time Systems Series)](http://www.springer.com/de/book/9781441982360), Springer, 2nd, 2011 (ISBN-10: 1441982361, ISBN-13: 978-1441982360) 207 | - Leveson, Nancy G.: [Engineering a Safer World: Systems Thinking Applied to Safety (Engineering Systems)](https://mitpress.mit.edu/books/engineering-safer-world), The MIT Press, 1st, 2012 (ISBN-10: 0262016621, ISBN-13: 978-0262016629) 208 | - Medoff, Michael and Faller, Rainer: [Functional Safety: An IEC 61508 SIL 3 Compliant Development Process](https://www.amazon.com/Functional-Safety-Compliant-Development-Process/dp/193497708X/ref=sr_1_1?s=books&ie=UTF8&qid=1487104979&sr=1-1&keywords=An+IEC+61508+SIL+3+Compliant+Development+Process), exida.com LLC, 3rd, 2014 (ISBN-10: 193497708X, ISBN-13: 978-1934977088) 209 | - Pathan, Al-Sakib Khan: [Securing Cyber-Physical Systems](https://www.crcpress.com/Securing-Cyber-Physical-Systems/Pathan/p/book/9781498700986), Crc Press Inc, 1st, 2015 (ISBN-10: 1498700985, ISBN-13: 978-1498700986) 210 | - Rausand, Marvin: [Reliability of Safety-Critical Systems: Theory and Applications](http://eu.wiley.com/WileyCDA/WileyTitle/productCd-1118112725.html), Wiley, 1st, 2014 (ISBN-10: 1118112725, ISBN-13: 978-1118112724) 211 | - Langr, Jeff: [Modern C++ Programming with Test-Driven Development - Code Better, Sleep Better](https://pragprog.com/book/lotdd/modern-c-programming-with-test-driven-development), OReilly, 1st edition, 2013 (ISBN-10: 1937785483, ISBN-13: 978-1937785482) 212 | - Simmonds, Chris: [Mastering Embedded Linux Programming](https://www.packtpub.com/networking-and-servers/mastering-embedded-linux-programming), Packt Publishing Limited, 1st edition, 2015 (ISBN-10: 1784392537, ISBN-13: 9781784392536) 213 | - [Making Embedded Systems by Elicia White](https://www.amazon.com/Making-Embedded-Systems-Patterns-Software/dp/1449302149) - Covers the basics of embedded systems architecture, design and patterns. 214 | - [Test Driven Developmet for Embedded C by James Grenning](https://www.amazon.com/Driven-Development-Embedded-Pragmatic-Programmers/dp/193435662X/ref=asap_bc?ie=UTF8) - How to approach test driven development for embedded devices written in C. 215 | - [uC/OS-III, The Real-Time Kernel by Jean J Labrosse](https://www.amazon.com/dp/0982337531/ref=pd_lpo_sbs_dp_ss_3?pf_rd_p=1944687682&pf_rd_s=lpo-top-stripe-1&pf_rd_t=201&pf_rd_i=1578201039&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=SVE997FF9MNQ1VYEJCM1) - A book about the Micrium's uC/os III. It is a great resource on how RTOSes for embedded systems should work. 216 | - [An Embedded Software Primer by David E. Simon](https://www.amazon.com/Embedded-Software-Primer-David-Simon/dp/020161569X) - An introduction to embedded systems, with a good explanation to Real-time operating systems(RTOS). 217 | 218 | ### Standards 219 | 220 | - [Embedded C Coding Standards](http://www.barrgroup.com/Embedded-Systems/Books/Embedded-C-Coding-Standard) - Coding standards for embedded C from the Barr Group. 221 | - [SEI CERT C Coding Standard](https://wiki.sei.cmu.edu/confluence/display/c/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. 222 | 223 | ### Tools 224 | 225 | - [PlatformIO](http://platformio.org/) - PlatformIO is an open source ecosystem for IoT development 226 | Cross-platform build system. Continuous and IDE integration. Arduino and ARM mbed compatible 227 | - [Energia](http://energia.nu) - 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. 228 | - [XOD](https://xod.io) - An open source visual programming platform for Arduino-compatible boards. 229 | 230 | ### Embedded Linux 231 | 232 | - [yocto](https://www.yoctoproject.org/) - Yocto is a tool for creating custom embedded linux systems 233 | - [Buildroot](https://buildroot.org/) - Buildroot is a simple, efficient and easy-to-use tool to generate embedded Linux systems through cross-compilation. 234 | - [Mender](https://github.com/mendersoftware/mender) - Open source over-the-air (OTA) software updater for embedded Linux devices. 235 | - [SWUpdate](https://github.com/sbabic/swupdate) - Linux Update agent with the goal to provide an efficient and safe way to update (local, remote, multiple update strategies) an embedded system. 236 | 237 | ### Courses 238 | 239 | - [C++ programming in Qt FrameWork Part I (udemy)](https://www.udemy.com/c-programming-creating-applications-with-qt-framework/) - not free 240 | - [C++ programming in Qt Framework: Part II (udemy)](https://www.udemy.com/c-programming-in-qt-framework-part-ii) - not free 241 | - [Computer Systems Design for Energy Efficiency (edx)](https://www.edx.org/course/computer-systems-design-energy-chalmersx-chm007x) 242 | - [Cybersecurity Fundamentals - Construction of Secure Systems (coursera)](https://www.coursera.org/specializations/cyber-security) Landing page for 5 courses about security with relation to embedded systems. 243 | - [Development of Real-Time Systems (coursera)](https://www.coursera.org/learn/real-time-systems) 244 | - [Embedded Systems - Shape The World (edx)](https://www.edx.org/course/embedded-systems-shape-world-utaustinx-ut-6-03x) 245 | - [FPGA Turbo Series - Communication Protocols](https://www.udemy.com/fpga-turbo-series-communication-protocols/) 246 | - [FPGA Turbo Series - Implementing a UART](https://www.udemy.com/fpga-turbo-series-uart/) 247 | - [Fun & Easy Embedded Microcontroller Communication Protocols (Udemy)](https://www.udemy.com/fun-easy-embedded-microcontroller-communication-protocols/) - Content: I2C/TWI, SPI, UART, MODBUS RTU, CAN, USB, ETHERNET, PCIE 248 | - [Introduction to Qt: A C++ Cross Platform Application Framework (pluralsight)](https://www.pluralsight.com/courses/introduction-qt-cplusplus-framework) - not free 249 | - [Integrating Qt Quick with C++ (pluralsight)](https://www.pluralsight.com/courses/integrating-qt-quick-cpp) - not free 250 | - [Learn FreeRTOS from scratch](https://www.udemy.com/freertos-getting-started/) - not free - Learn about FreeRTOS basics. Practise it's APIs with different examples. 251 | - [Linux OS in Embedded Systems & Linux Kernel Internals(1/2) (Udemy)](https://www.udemy.com/becoming-linux-expert-series-install-linux-operating-system/) - not free 252 | - [Linux OS in Embedded Systems & Linux Kernel Internals(2/2) (Udemy)](https://www.udemy.com/c-complete-reference/) - not free 253 | - [ARM Cortex-M Bare-Metal Embedded-C Programming (Udemy)](https://www.udemy.com/cortex-m-internals-master-pointers-structures-memory-etc/) 254 | - [ARM Cortex-M Assembly Programming (Udemy)](https://www.udemy.com/arm-cortex-m-assembly-programming/) 255 | - [Introduction to Embedded Systems using 8051 Microcontroller (Udemy)](https://www.udemy.com/introduction-to-embedded-systems-using-8051-microcontroller/) 256 | - [Mastering Microcontroller with Peripheral Driver Development (Udemy)](https://www.udemy.com/mastering-microcontroller-with-peripheral-driver-development/) 257 | - [Embedded Systems Programming on ARM Cortex-M3/M4 Processor (Udemy)](https://www.udemy.com/embedded-system-programming-on-arm-cortex-m3m4/) 258 | - [Foundation course on Embedded Linux (Udemy)](https://www.udemy.com/foundation-course-on-embedded-linux/) 259 | - [Hands-on Embedded Systems, ARM Cortex Tutorials - ADCs (Udemy)](https://www.udemy.com/armcortex-adc/) 260 | - [edX Embedded Systems Course by University of Texas Austin](https://www.edx.org/course/embedded-systems-shape-world-utaustinx-ut-6-03x) 261 | - [System Validation (1): Automata and behavioural equivalences (coursera)](https://www.coursera.org/learn/automata-system-validation) 262 | - [System Validation (2): Model process behaviour (coursera)](https://www.coursera.org/learn/system-validation-behavior) 263 | - [UNC Charlotte Embedded Systems Course](https://www.youtube.com/playlist?list=PLE4462C1C306E2EB2) 264 | - [QT C++ GUI Tutorial For Beginners (udemy)](https://www.udemy.com/qt-c-gui-tutorial-for-beginners/) - not free 265 | - [How To Implement Your First VHDL Design on FPGA (udemy)](https://www.udemy.com/how-to-implement-your-first-vhdl-design-on-fpga/) 266 | - [Learn VHDL and FPGA Development (udemy)](https://www.udemy.com/vhdl-and-fpga-development-for-beginners-and-intermediates/) 267 | - [FPGA Design Learning VHDL (udemy)](https://www.udemy.com/fpga-design-learning-vhdl/) 268 | - [Learn VHDL Design for use in FPGA and ASIC Digital Systems (udemy)](https://www.udemy.com/vhdl-design-and-modeling-of-digital-systems/) 269 | - [Learn VHDL, ISE and FPGA by Designing a basic Home Alarm (udemy)](https://www.udemy.com/getting-started-with-fpga-ise-and-vhdl/) 270 | - [The Embedded Pre-Interview! (udemy)](https://www.udemy.com/the-embedded-pre-interview/) - not free - Evaluate your Embedded Systems knowledge, in just 100 minutes, for any entry level job 271 | 272 | ## License 273 | 274 | [![CC0](http://mirrors.creativecommons.org/presskit/buttons/88x31/svg/cc-zero.svg)](https://creativecommons.org/publicdomain/zero/1.0/) 275 | 276 | To the extent possible under law, [Chris Woodall](http://cwoodall.com) has waived all copyright and related or neighboring rights to this work. 277 | -------------------------------------------------------------------------------- /code-of-conduct.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as 6 | contributors and maintainers pledge to making participation in our project and 7 | our community a harassment-free experience for everyone, regardless of age, body 8 | size, disability, ethnicity, gender identity and expression, level of experience, 9 | nationality, personal appearance, race, religion, or sexual identity and 10 | orientation. 11 | 12 | ## Our Standards 13 | 14 | Examples of behavior that contributes to creating a positive environment 15 | include: 16 | 17 | * Using welcoming and inclusive language 18 | * Being respectful of differing viewpoints and experiences 19 | * Gracefully accepting constructive criticism 20 | * Focusing on what is best for the community 21 | * Showing empathy towards other community members 22 | 23 | Examples of unacceptable behavior by participants include: 24 | 25 | * The use of sexualized language or imagery and unwelcome sexual attention or 26 | advances 27 | * Trolling, insulting/derogatory comments, and personal or political attacks 28 | * Public or private harassment 29 | * Publishing others' private information, such as a physical or electronic 30 | address, without explicit permission 31 | * Other conduct which could reasonably be considered inappropriate in a 32 | professional setting 33 | 34 | ## Our Responsibilities 35 | 36 | Project maintainers are responsible for clarifying the standards of acceptable 37 | behavior and are expected to take appropriate and fair corrective action in 38 | response to any instances of unacceptable behavior. 39 | 40 | Project maintainers have the right and responsibility to remove, edit, or 41 | reject comments, commits, code, wiki edits, issues, and other contributions 42 | that are not aligned to this Code of Conduct, or to ban temporarily or 43 | permanently any contributor for other behaviors that they deem inappropriate, 44 | threatening, offensive, or harmful. 45 | 46 | ## Scope 47 | 48 | This Code of Conduct applies both within project spaces and in public spaces 49 | when an individual is representing the project or its community. Examples of 50 | representing a project or community include using an official project e-mail 51 | address, posting via an official social media account, or acting as an appointed 52 | representative at an online or offline event. Representation of a project may be 53 | further defined and clarified by project maintainers. 54 | 55 | ## Enforcement 56 | 57 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 58 | reported by contacting the project team at chris.j.woodall@gmail.com. All 59 | complaints will be reviewed and investigated and will result in a response that 60 | is deemed necessary and appropriate to the circumstances. The project team is 61 | obligated to maintain confidentiality with regard to the reporter of an incident. 62 | Further details of specific enforcement policies may be posted separately. 63 | 64 | Project maintainers who do not follow or enforce the Code of Conduct in good 65 | faith may face temporary or permanent repercussions as determined by other 66 | members of the project's leadership. 67 | 68 | ## Attribution 69 | 70 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, 71 | available at [http://contributor-covenant.org/version/1/4][version] 72 | 73 | [homepage]: http://contributor-covenant.org 74 | [version]: http://contributor-covenant.org/version/1/4/ 75 | -------------------------------------------------------------------------------- /contributing.md: -------------------------------------------------------------------------------- 1 | # Contribution Guidelines 2 | 3 | Please note that this project is released with a [Contributor Code of Conduct](code-of-conduct.md). By participating in this project you agree to abide by its terms. 4 | 5 | # The pull request should have a useful title. Pull requests with `Update readme.md` as title will be closed right away because I'm so tired of nobody reading this document. Please carefully read everything in `Adding to this list`. 6 | 7 | ## Table of Contents 8 | 9 | - [Adding to this list](#adding-to-this-list) 10 | - [Creating your own awesome list](#creating-your-own-awesome-list) 11 | - [Adding something to an awesome list](#adding-something-to-an-awesome-list) 12 | - [Updating your Pull Request](#updating-your-pull-request) 13 | 14 | ## Adding to this list 15 | 16 | Please ensure your pull request adheres to the following guidelines: 17 | 18 | - Search previous suggestions before making a new one, as yours may be a duplicate. 19 | - Make sure the list is useful before submitting. That implies it has enough content and every item has a good succinct description. 20 | - Make an individual pull request for each suggestion. 21 | - Use [title-casing](http://titlecapitalization.com) (AP style). 22 | - Use the following format: `[List Name](link)` 23 | - Link additions should be added to the bottom of the relevant category. 24 | - New categories or improvements to the existing categorization are welcome. 25 | - Check your spelling and grammar. 26 | - Make sure your text editor is set to remove trailing whitespace. 27 | - The pull request and commit should have a useful title. 28 | - The body of your commit message should contain a link to the repository. 29 | 30 | Thank you for your suggestions! 31 | 32 | ## Creating your own awesome list 33 | 34 | To create your own list, check out the [instructions](create-list.md). 35 | 36 | ## Adding something to an awesome list 37 | 38 | If you have something awesome to contribute to an awesome list, this is how you do it. 39 | 40 | You'll need a [GitHub account](https://github.com/join)! 41 | 42 | 1. Access the awesome list's GitHub page. For example: https://github.com/sindresorhus/awesome 43 | 2. Click on the `readme.md` file: ![Step 2 Click on Readme.md](https://cloud.githubusercontent.com/assets/170270/9402920/53a7e3ea-480c-11e5-9d81-aecf64be55eb.png) 44 | 3. Now click on the edit icon. ![Step 3 - Click on Edit](https://cloud.githubusercontent.com/assets/170270/9402927/6506af22-480c-11e5-8c18-7ea823530099.png) 45 | 4. You can start editing the text of the file in the in-browser editor. Make sure you follow guidelines above. You can use [GitHub Flavored Markdown](https://help.github.com/articles/github-flavored-markdown/). ![Step 4 - Edit the file](https://cloud.githubusercontent.com/assets/170270/9402932/7301c3a0-480c-11e5-81f5-7e343b71674f.png) 46 | 5. Say why you're proposing the changes, and then click on "Propose file change". ![Step 5 - Propose Changes](https://cloud.githubusercontent.com/assets/170270/9402937/7dd0652a-480c-11e5-9138-bd14244593d5.png) 47 | 6. Submit the [pull request](https://help.github.com/articles/using-pull-requests/)! 48 | 49 | ## Updating your Pull Request 50 | 51 | Sometimes, a maintainer of an awesome list will ask you to edit your Pull Request before it is included. This is normally due to spelling errors or because your PR didn't match the awesome-* list guidelines. 52 | 53 | [Here](https://github.com/RichardLitt/docs/blob/master/amending-a-commit-guide.md) is a write up on how to change a Pull Request, and the different ways you can do that. 54 | --------------------------------------------------------------------------------