Embedded Systems RoadMap

Download as pdf or txt
Download as pdf or txt
You are on page 1of 14

README.

md 6/21/2023

Learn Embedded Systems


Introduction
This document is a collection of resources for learning embedded systems engineering.

Article: "Introduction", Barr Group

Video: "Embedded Systems Overview", YouTube

Table of Contents
Development Environment

Cross Compilation
Development Tools

Embedded Hardware

Computer Architecture

RISC
ARM
Endianness

Embedded Platforms

Microcontroller
System on a Chip (SoC)
Single Board Computer
FPGA

Serial Communication

SPI
I2C
UART
RS232
RS485

GPIO

Pin Modes
Pull Up/Down
Push-Pull
Open-Drain
Direction
Input
Output

1 / 14
README.md 6/21/2023

Analog Input

ADC

Analog Output

PWM
DAC

Timer

Constraints

Power
Memory
Program (ROM)
Dynamic (RAM)

Embedded Operating Systems

Bare Metal
GNU/Linux
Real Time Operating Systems

Embedded Software

C Keywords
volatile
static
const
pragma
attribute
restrict
inline
Watchdog Timer
Memory Alignment
Pointers
Bit Manipulation
Bitwise
Arithmetic
Interrupts
Optimizations
Coding Standards
MISRA
ISO/IEC 90003

Embedded Software Layers

Peripheral and Hardware Layer

Registers

2 / 14
README.md 6/21/2023

Bit Fields
Memory Map
Peripherals

Hardware Abstraction Layer (HAL)

Register Definition Files


Memory Access Methods
Board Support Package (BSP)

Application Layer

Data Structures and Algorithms

Queue
Circular Buffer
Semaphore
Event Handling
Producer-Consumer

Domain Knowledge

Digital Signal Processing


FFT
Filters
IIR
FIR
Control Systems
PID
Solar
Cryptography and Encryption

Debugging

Static Analysis
Dynamic Analysis
Logic Analyzer
Oscilliscope
Wireshark
JTAG
SWD

Testing and Quality Management

Development Environment
Cross Compilation

Article: "Compiling, Linking, and Locating", Barr Group

3 / 14
README.md 6/21/2023

Development Tools

IDE

PlatformIO
Visual Studio Code
VisualGDB

Oscilliscopes and Logic Analyzers

Video: "Setting Up the Analog Discovery 2 Portable Lab Instrument", YouTube

Embedded Hardware
Article: "Getting to Know the Hardware", Barr Group

Video: "Computer Hardware", YouTube

Video: "MSP430 Hardware Overview", YouTube

Computer Architecture

Video: "Architecture-Software Interface", Coursera

Video: "Word Size and Data Types", Coursera

RISC

Website: "RISC-V Educational Materials", RISC-V

ARM

Video: "ARM University, ARM Architecture Fundamentals", YouTube

Video: "Get to Know the ARM Cortex M7", YouTube

Endianness

Article: "Big Endian, Little Endian, Endianness: Understanding Byte Arrangements in Digital
Systems", All About Circuits

Video: "Endianness", Coursera

Embedded Platforms

Microcontroller

PDF: "Introduction to Microcontrollers", Gunther Gridling, Bettina Weiss

System on a Chip

4 / 14
README.md 6/21/2023

Video: "Arm Education Media Launches System-on-Chip Design Online Courses", YouTube

Single Board Computer

Article: "Single-board computer", Wikipedia

FPGA

Article: "How FPGAs work, and why you'll buy one", Embedded Related
Video: "A Look Inside: SoC FPGAs Introduction (Part 1 of 5)", YouTube

Serial Communication

Video: "PROTOCOLS: UART - I2C - SPI - Serial communications #001", YouTube

SPI

SPI on the MSP430

Video: "SPI - SPI Overview & Implementation on the MSP430", YouTube

Video: "SPI - Sending a Byte as a SPI Master", YouTube

Video: "SPI - Sending a Packet as a SPI Master using UCTXIFG", YouTube

Video: "SPI - Sending a Packet as a SPI Master using STE/SS", YouTube

Video: "SPI - Receiving a Byte as a SPI Master", YouTube

Video: "SPI - Slave Behavior", YouTube

I2C

I2C on the MSP430

Video: "I2C - What is I-Squared C and why the Resistors?", YouTube

Video: "I2C - Basic Packet Structure", YouTube

Video: "I2C - Addressing Slave Registers", YouTube

Video: "I2C - Master Configuration on the MSP430FR2355", YouTube

Video: "I2C - Adafruit PFC8523 Real-Time-Clock I2C Slave", YouTube

Video: "I2C - RTC-LaunchPad Connection & Making a Simple Probe", YouTube

Video: "I2C - Writing One Byte to an I2C Slave", YouTube

Video: "I2C - Writing a Register Addr + 3 Bytes to I2C Slave", YouTube

Video: "I2C - Reading One Byte from an I2C Slave", YouTube

5 / 14
README.md 6/21/2023

Video: "I2C - Reading From a Specific Register Address", YouTube

Video: "I2C - Slave Operation", YouTube

UART

UART on the MSP430

Video: "The UART - Serial Com Overview", YouTube

Video: "UART - The UART Standard", YouTube

Video: "UART - Configuring the UART Tx", YouTube

Video: "UART - Configuring the Baud Rate", YouTube

Video: "UART - Transmitting a Byte at 115200 Baud", YouTube

Video: "UART - Transmitting a Byte at 9600 Baud", YouTube

Video: "UART - Transmitting a Character to the Terminal", YouTube

Video: "UART - Transmitting a String to the Terminal", YouTube

Video: "UART - Transmitting String to the Terminal w/ IRQs", YouTube

Video: "UART - Configuring the UART Rx", YouTube

Video: "UART - Receiving Characters from the Terminal", YouTube

RS232

Video: "What is RS232 and What is it Used for?", YouTube

Video: "RS-232, RS-422, RS-485: What Are the Differences?", YouTube

RS485

Video, "RS-485 Circuit Implementation", YouTube

Video, "What is RS485 and How it's used in Industrial Control Systems?", YouTube

GPIO

Video: "How GPIO works | General Purpose Input Output | GPIO Behind The Scene", YouTube

Article: "Introduction to Microcontrollers - Hello World", Embedded Related

Article: "Introduction to Microcontrollers - More On GPIO", Embedded Related

Video: "Using GPIO with the MSP430 Microcontroller", YouTube

Pin Modes

6 / 14
README.md 6/21/2023

Pull Up/Down

Article: "Using Pull-Up and Pull-Down Resistors", Stratify Labs

Push-Pull

Video: "GPIO Output Configuration | Open Drain configuration | Push Pull configuration",
YouTube

Open-Drain

Video: "GPIO Output Mode: Working of Open Drain Configuration", YouTube

Direction

Input

Video: "MSP430 - Digital Inputs & Polling", YouTube

Output

Video: "MSP430 - Digital Outputs", YouTube

Analog Input

ADC

Analog-to-Digital Converter on the MSP430

Video: "Overview of ADCs", YouTube

Video: "The MSP430 ADC & Configuration", YouTube

Video: "Reading Voltage w/ Conversion-Complete Polling", YouTube

Video: "Reading Voltage w/ Conversion-Complete IRQ", YouTube

Video: "Reading Voltage w Conversion-Complete IRQ & LPM", YouTube

Analog Output

PWM

Video: "MSP430 - Creating PWM Signals using Timer Compares", YouTube

DAC

Article: "About Digital to Analog Converter (DAC) and Its Applications", ElProCus

Timer

7 / 14
README.md 6/21/2023

Article: "Introduction to Microcontrollers - More Timers and Displays", Embedded Related

MSP430 Timer

Video: "Timer Overflow using ACLK", YouTube


Video: "Timer Overflow using ACLK + 12-Bit Counter Length", YouTube
Video: "Timer Overflow using SMCLK", YouTube
Video: "Timer Overflow using SMCLK + Divide-by-4 PreScalar", YouTube
Video: "Timer Compares", YouTube
Video: "Timer Captures", YouTube

Constraints

Video: "Optimizing C for Microcontrollers - Best Practices - Khem Raj, Comcast RDK", YouTube

Power

Video: "How To Lower AVR Microcontroller Power using Power Reduction Registers", YouTube

Video: "Atmel: picoPower Labs - Basic Power-Saving Techniques", YouTube

Video: "Microcontroller Design Considerations for Ultra Low Power Applications", YouTube

Video: "Ultra Low Power Microcontroller Design", YouTube

Memory

Article: "Memory", Barr Group

Video: "Interacting with Memory", Coursera

Video: "Different Types of Memory in Microcontroller : Flash Memory, SRAM and EEPROM", YouTube

Program (ROM)

Dynamic (RAM)

Video: "Tech Talk: Pros and Cons of Dynamic Memory Allocation", YouTube

Article: "How to make a heap profiler", Embedded Related

Embedded Operating Systems

Article: "Operating Systems", Barr Group

Bare Metal

eBook: "Bare-metal C programming on ARM", GitHub

eBook: "Practical Guide to Bare Metal C++", GitBook

GNU/Linux
8 / 14
README.md 6/21/2023

Real Time Operating Systems

Blog: "RTOS", Barr Group

Embedded Software
Video: "Computer Software", YouTube

Video: "MSP430 Software Overview", YouTube

Important Programming Concepts (Even on Embedded Systems)

[] Article: "Part I: Idempotence", Embedded Related

[] Article: "Part II: Immutability", Embedded Related

[] Article: "Part III: Volatility", Embedded Related

[] Article: "Part IV: Singletons", Embedded Related

[] Article: "Part V: State Machines", Embedded Related

[] Article: "Part VI : Abstraction", Embedded Related

C Keywords

Article: "Keywords to Frequent", Barr Group

Article: "Efficient C Code for 8-bit Microcontrollers", Barr Group

volatile

Video: "Tech Talk: Pro Tips for Using C’s Volatile Keyword", YouTube

static

Article: "Scope regions in C and C++", Embedded

const

pragma

Article: "Pragmas", GCC GNU

attribute

Video: "Compiler Attributes", Coursera


Article: "Using GNU C attribute", unixwiz

restrict

inline

9 / 14
README.md 6/21/2023

Article: "Inline Functions In C", greenend

Watchdog Timer

Article: "Introduction to Watchdog Timers", Embedded

Memory Alignment

Video: "Memory Alignment", Coursera

Pointers

Video: "Pointers", Coursera

Bit Manipulation

Bitwise

Video: "Switching to C to Program the MSP430 - Bitwise Logic Operations", YouTube

Arithmetic

Video: "Switching to C to Program the MSP430 - Arithmetic", YouTube

Interrupts

Article: "Introduction to Microcontrollers - Interrupts", Embedded Related

MSP430 Interrupts

Video: "Overview and Basic Concepts", YouTube

Video: "Interrupts Overview & Port Interrupt Example", YouTube

Video: "Overview of the Interrupt Vector Table", YouTube

Video: "The use of the STACK during an IRQ + Nested IRQs", YouTube

Video: "The Responsibility of the Developer when using IRQs", YouTube

Video: "The IRQs on the MSP430FR2355 MCU", YouTube

Video: "Port Interrupts on the MSP430FR2355 MCU - Overview", YouTube

Video: "Reading from a Switch Using a Port IRQ Program Example", YouTube

Video: "Changing Edge Sensitivity (PxIES) & Forgetting to Clear a Flag", YouTube

Optimizations

Article: "Optimizing Your Code", Barr Group

Coding Standards

10 / 14
README.md 6/21/2023

Article: "Embedded C Coding Standards", Barr Group

Video: "Tech Talk: Are Coding Standards & Static Analysis Really That Important?", YouTube

Blog: "Coding Standards", Barr Group

MISRA

Video: "An Introduction to MISRA C - Excerpt from An Introduction to MISRA C:2012


Webinar", YouTube

ISO/IEC 90003

Article: "ISO/IEC/IEEE 90003:2018 Software engineering — Guidelines for the application of


ISO 9001:2015 to computer software", ISO

Embedded Software Layers


Peripheral and Hardware Layer

Article: "Peripherals", Barr Group

Registers

Video: "Level Up Your Arduino Code: Registers", YouTube

Bit Fields

Video: "Bit Fields in C. What are they, and how do I use them?", YouTube

Memory Map

Video: "Memory Map and Registers", Coursera

Peripherals

Video: "Exploring Configurable Logic Peripherals on PIC® and AVR® Microcontrollers",


YouTube

Hardware Abstraction Layer

Video: "The Nios® II Processor: Hardware Abstraction Layer", YouTube

Textbook: "Reusable Firmware Development: A Practical Approach to APIs, HALs and Drivers", Amazon

Register Definition Files

Video: "Register Definition Files", Coursera

Memory Access Methods

11 / 14
README.md 6/21/2023

Board Support Package

Video: "0x1b7 What is a BSP | Board Support Package | Big Picture | Embedded Systems Software
Development", YouTube

Application Layer

Data Structures and Algorithms

Queue

Circular Buffer

Video: "Circular Buffer | Circular Buffer Implementation in C", YouTube

Semaphore

Video: "Semaphores", YouTube

Video: "Webinar: Mutexes & Semaphores Demystified", YouTube

Event Handling

Video: "Embedded Programming Lesson 33: Event-Driven Programming part-1",


YouTube

Video: "Embedded Programming Lesson 34: Event-Driven Programming part-2",


YouTube

Producer-Consumer

Video: "Producer Consumer Pattern", YouTube

Video: "Quick explanation: the Bounded-Buffer problem", YouTube

Domain Knowledge

Digital Signal Processing

Video: "Learn Embedded Systems Design on ARM based Microcontrollers 1 of 2", YouTube

Video: "Learn DSP on ARM based Microcontrollers 2 of 2", YouTube

FFT

Video: "Digital Signal Processing (DSP) Tutorial - DSP with the Fast Fourier
Transform Algorithm", YouTube

Filters

IIR
12 / 14
README.md 6/21/2023

Video: "IIR Filters - Audio DSP On STM32 with I2S (24 Bit / 96 kHz)",
YouTube

FIR

Video: "FIR Filters - Audio DSP On STM32 (24 Bit / 48 kHz)", YouTube

Control Systems

PID

Understanding PID Control

Video: "Part 1: What is PID Control?", YouTube


Video: "Part 2: Expanding Beyond a Simple Integral", YouTube
Video: "Part 3: Expanding Beyond a Simple Derivative", YouTube
Video: "Part 4: A PID Tuning Guide", YouTube
Video: "Part 5: Three Ways to Build a Model", YouTube
Video: "Part 6: Manual and Automatic Tuning Methods", YouTube
Video: "Part 7: Important PID Concepts", YouTube

Drone Simulation and Control

Video: "Part 1: Setting Up the Control Problem", YouTube


Video: "Part 2: How Do You Get a Drone to Hover?", YouTube
Video: "Part 3: How to Build the Flight Code", YouTube
Video: "Part 4: How to Build a Model for Simulation", YouTube
Video: "Part 5: Tuning the PID controller", YouTube

Solar

Video: "How to implement maximum power point tracking for solar charging",
YouTube

Cryptography and Encryption

Debugging
Article: "Downloading and Debugging", Barr Group

Blog: "Debugging", Barr Group

Static Analysis

Video: "Static Code Analysis: Scan All Your Code For Bugs", YouTube

Video: "Using PC-Lint for MISRA and static code analysis", YouTube

Dynamic Analysis

13 / 14
README.md 6/21/2023

Logic Analyzer

Video: "EEVblog #44 Part 1 - Logic Analyzer Tutorial", YouTube

Video: "EEVblog #44 - Part 2 - Logic Analyzer Tutorial", YouTube

Oscilliscope

Video: "How to Debug Embedded Designs with an Oscilloscope", YouTube

Video: "How to test Automotive Serial Buses with Oscilloscopes", YouTube

JTAG

Video: "", YouTube

SWD

Video: "", YouTube

Testing and Quality Management


Phil Koopman Lectures

Playlist: "Embedded Software Testing", YouTube

Playlist: "Embedded Security, Safety, and Software Quality", YouTube

14 / 14

You might also like