Embedded Systems Circle Roadmap
This is a learning path for embedded software.
Contents
About us
We're a committee among other technical committees in CAT Reloaded. It was established on March 3, 2020. I start by communicating with some pros in the Embedded software field to find a learning path, and here is it.
Why Embedded Systems?
One of the more surprising developments of the last few decades has been the ascendance of computers to a position of prevalence in human affairs. Today there are more computers in our homes and offices than there are people who live and work in them. Yet many of these computers are not recognized as such by their users. These computers konwn as embedded computers.
What is an Embedded System?
Check those:
- Hello, World! 5.00: Embedded Talk | Ali Ghorab
- CATvid-19: CATvid- Embedded Roadmap | Hossam Adel
Roadmap
Roadmap version: 1.0
- Prerequisites
- Intro Materials
- C Programming
- Data Structures and Algorithms
- Microcontroller Interfacing
- RTOS
Prerequisites
- Micro-controller Interfacing assumes the student has already taken a course on digital logic and an introduction to computer architecture. If you don't have enough time, this course will be good for now.
- RTOS assumes the student has already taken a course on operating systems
Intro Materials
Before you start learning embedded systems you need to equip yourself in the following fields:
- Fundamentals of Electrical Engineering.
- Fundamentals of Analog Electronics.
Introduction to Electrical Engineering and Computer Science
This course provides an integrated introduction to electrical engineering and computer science, taught using substantial laboratory experiments with mobile robots. Some programming experience is good, but not necessarily required. The Python Tutorial is designed to get students up to speed with Python, while a course like Python for Everybody may be useful for students with little or no programming experience.
Topics covered:
fundamental design principles of modularity and abstraction
making mathematical models of real systems
modern software engineering
linear systems analysis
electronic circuits
decision-making
Analog Electronics
No prerequisites are required to start this course. This lecture series will cover the entire syllabus of Analog Electronics, starting from semiconductor materials to power amplifiers. You can stop at Chapter 05: DC Biasing of Transistors. The goal here is to PRACTICE. So, buy components and start playing.
Topics covered:
Semiconductor Physics
Semiconductor Diode
Diode Applications
Bipolar Junction Transistors
DC Biasing of Transistors
Introduction to Computer Science and Programming in Python
This course is intended for students with little or no programming experience. It aims to provide students with an understanding of the role computation can play in solving problems and to help students, regardless of their major, feel justifiably confident of their ability to write small programs that allow them to accomplish useful goals. The class uses the Python 3.5 programming language.
Topics covered:
computation
imperative programming
basic data structures and algorithms
and more
C Programming
C Basics
You'll learn the same topics covered in the Introduction to Computer Science and Programming in Python but in C. So, the goal here is to learn C syntax and then the structure of the language. You will need to setup an IDE to run C code on it, I highly recommend CLion.
C Programming: A Modern Approach by K N King
Chapters 1 to 7 covers the basic topics in the language. Chapters 8 to 20 covers the strucuture of the language. You'll need to practice alot, so, start do programming projects from the book and outside it.
Topics covered:
what is C
formatted input/output
expressions
conditions and loops
data types
functions
arrays
pointers
strings
structures, unions, and enums
bit manipulations
and more
Advanced C
You'll learn core techniques for memory management using pointers.
Understanding and Using C Pointers: Core Techniques for Memory Management by Richard M. Reese
Read the whole book and do a lot of practice.
Topics covered:
dynamic memory allocation
pointers and functions
pointers and arrays
pointers and strings
pointers and structures
and more
Data Structures and Algorithms
“Bad programmers worry about the code. Good programmers worry about data structures and their relationships.” — Linus Torvalds (creator of Linux)
Here you'll gonna learn the basic data structures like: stacks, queues, lists, and trees. Also you learn how to implement them in C.
CS214: Data Structures
You'll find the course assignments here and the book here.
Along with this course, take an introduction to discrete mathematics to follow up with the lecturer. Discrete math is a MUST to understand the lectures from 15 to 21, so take it in parallel with data structures course.
Topics covered:
encapsulation and ADT
stacks
queues
lists
linear search
binary search
analysis of algorithms
trees
graphs
After this course I highly recommend you to do a large-scale project. check this.
Divide and Conquer, Sorting and Searching, and Randomized Algorithms
You'll learn techniques on analyzing your code, and learn some classic algorithms like: divide and conquer, sort, search, ans so on.
Topics covered:
"big-oh" notation
asymptotic analysis
Divide-and-conquer basics
QuickSort
Linear-time selection
graphs
cuts
contraction algorithm
Microcontroller Interfacing
Here is the real start on learning embedded systems. The first thing here is to choose a micro-controller to work with. You MUST practice everything you learn here. I recommend working with AVR microcontrolleres.
AVR
Make: AVR Programming: Learning to Write Software for Hardware by Elliot Williams
The book is divided into three parts:
Part 1: covers the material you’ll need to know for most AVR projects.
Part 2: makes you a more efficient programmer of the chip and expands the universe of what you’ll think an AVR can do. You’ll start doing cool things with the internal hardware peripherals and some more sophisticated tricks in firmware using what you already know.
Part 3: Once you’ve mastered the AVR itself, this last section of the book is dedicated to using modern communications protocols to interface with other devices, building the circuitry you need to drive motors and other electrical devices, and covering a few more of the features of the AVR that you may or may not need every day.
Along with the book you MUST read the datasheet of the device you use.
Topics covered:
microcontrollers
avr
serial i/o
adc
hardware interrupts
timers and counters
pwm
motors
comunication protocols
and more
ARM Cortex
The goal here is to apply the same concepts you learn on AVR to a large-scale microcontroller like ARM.
Embedded Systems - Shape The World: Microcontroller Input/Output
Embedded Systems - Shape The World: Multi-Threaded Interfacing
Topics covered:
embedded systems using modular design and abstraction
build and test circuits with switches, LEDs, resistors, potentiometers, and liquid crystal displays
Synchronizing hardware and software input/output with switches, lights, sound, sensors. motors, and liquid crystal displays
finite state machine
debugging
how to read datasheet
traffic light controller
Implement an I/O driver and multi-threaded programming using interrupts
iot
and more
RTOS
Soon...