• Stars
    star
    435
  • Rank 100,085 (Top 2 %)
  • Language
    C++
  • Created almost 4 years ago
  • Updated over 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Introduction to Real Time Operating Systems (RTOS)

Welcome to the demo code and solutions section of my Introduction to RTOS course! This repository houses all of the example code and solutions that you may use as references when working through the RTOS examples for FreeRTOS.

Intro to RTOS course logo

This course is hosted on YouTube that you may take for free. All you need to do is watch the videos and complete the challenge issued at the end of each video. I highly recommend you try each challenge before peeking at the solutions here. The PowerPoint slides are also made available (under the CC BY 4.0 license) if you wish to use or modify them for review or teaching your own RTOS class. If you use the slides, please give credit to Shawn Hymel and Digi-Key Electronics in your slides (as per the CC BY 4.0 requirements).

Chapter Title Video Solution Slides
01 What is an RTOS [video] [solution] [slides]
02 Getting Started with freeRTOS [video] [solution] [slides]
03 Task Scheduling and Management [video] [solution] [slides]
04 Memory Allocation [video] [solution] [slides]
05 Queue [video] [solution] [slides]
06 Mutex [video] [solution] [slides]
07 Semaphore [video] [solution] [slides]
08 Software Timer [video] [solution] [slides]
09 Hardware Interrupts [video] [solution] [slides]
10 Deadlock and Starvation [video] [solution] [slides]
11 Priority Inversion [video] [solution] [slides]
12 Multicore Systems [video] [solution] [slides]

Directory Structure

Examples and solutions are housed in dirctories that correspond to each chapter or video number. For example, if you watch "Intro to RTOS Part 3 - Task Scheduling," you should refer to the directory 03-task-scheduling-and-management. In it, you will find 2 directories, one marked "demo" that gives the finished demo code used during the video (so you may run it and examine it at your own pace) and another marked "solution" that provides one possible solution to the challenge issued at the end of the video.

If a challenge is issued in a video that starts with some code, it will be listed as a challenge Arduino sketch in the naming scheme shown below.

Directories are in the following structure (where xx is the part or chapter number):

xx-<name of chapter>/
|- esp32-freertos-xx-challenge-<name>/
|- esp32-freertos-xx-demo-<name>/
|- esp32-freertos-xx-solution-<name>/
|- rtos-part-xx.pptx

PowerPoint slides used in each video can be found within the respective xx- directory.

The only exception to this is the images directory, which is where I keep images for this repository.

License

PowerPoint slides are licensed under the Creative Commons CC BY 4.0 license. You are welcome to use and modify them for your own review and teaching. If you use them, please give credit to Shawn Hymel and Digi-Key Electronics.

All code in this repository, unless otherwise noted, is licensed under the Zero-Clause BSD / Free Public License 1.0.0 (0BSD).

Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted.

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

More Repositories

1

rpi-cm4-carrier-template

145
star
2

ei-keyword-spotting

C
144
star
3

introduction-to-fpga

Verilog
131
star
4

computer-vision-with-embedded-machine-learning

Jupyter Notebook
106
star
5

tinyml-example-anomaly-detection

TinyML example showing how to do anomaly detection with Python and Arduino
Jupyter Notebook
102
star
6

rpi-cm4-base-carrier

HTML
92
star
7

tflite-speech-recognition

Demo for training a convolutional neural network to classify words and deploy the model to a Raspberry Pi using TensorFlow Lite.
Jupyter Notebook
87
star
8

rpi-pico-debugger-shoe

HTML
61
star
9

phaser-plugin-virtual-gamepad

Phaser plugin that provides joystick and button overlay for mobile games written in JavaScript. Playable demo at:
JavaScript
49
star
10

fail-badges

A community collection of image (svg) files to celebrate failure!
JavaScript
45
star
11

ai-nose

Jupyter Notebook
11
star
12

openmv-lego-brick-finder

Python
11
star
13

lora-weather

C++
10
star
14

MICS-4514_CO_and_NOx_Sensor_Breakout

Breakout board for the MiCS-4514 CO and NOx gas sensor.
C++
9
star
15

tflite-keyword-spotting

C
8
star
16

HoverPong

Classic Pong using a 32x32 LED matrix and two ZX Sensors from XYZ Interactive.
C++
7
star
17

Electronics_Workbench

Designs for an electronics workbench made of wood.
Ruby
7
star
18

555_badge

6
star
19

EdiBot

Demos for the Edison-based rover platform.
Eagle
6
star
20

CarHUD

Simple DIY heads-up display for a car.
Eagle
6
star
21

wifi_maximizer

Arduino
5
star
22

tensorflow-object-detection

Project that uses TensorFlow to train an object detection neural network that can be used with the Raspberry Pi.
Python
5
star
23

c-unit-test

Makefile
5
star
24

DIY_Breathalyzer

Read BAC with MQ-3 and display on 7-Segment Shield
Arduino
5
star
25

wenk-sao

C
5
star
26

perfect-toast-machine

Jupyter Notebook
4
star
27

github-action-docker-test

Dockerfile
4
star
28

Vortex

A continuous, infinite shooter Tempest clone. The goal is to get the high score, and that's it. There is no end.
JavaScript
4
star
29

pendulum-pid

Jupyter Notebook
4
star
30

kicon19-blinky

C++
4
star
31

ei-workshop-image-data-augmentation

Jupyter Notebook
4
star
32

mk-hallway-leds

C
3
star
33

Hardware_Mouse_Jiggler

A tech prank that jiggles your mouse pointer every 10-20 seconds.
C++
3
star
34

pico-deployment-demo

CMake
2
star
35

shawnhymel.github.io

CSS
2
star
36

MICS-2614_O3_Sensor_Breakout

Breakout board for the MiCS-2614 O3 sensor.
Arduino
2
star
37

face-tracking-camera-openmv

Python
2
star
38

course-embedded-ml-capstone

C
2
star
39

workshop-zephyr-device-driver

Python
1
star
40

myoken

Arduino project that buzzes whenever it's facing north.
C++
1
star
41

openmv-face-tracking

Python
1
star
42

neopixel-workshop

C++
1
star
43

Breadboard_Supply_5V

PCB design files for workshop.
Eagle
1
star
44

introduction-to-freecad

introduction-to-freecad
1
star
45

custom-speech-commands-dataset

1
star
46

SAMD11C_Mini_Breakout

1
star
47

reinforcement-learning-demos

Jupyter Notebook
1
star
48

M2X_CC3000

Example Arduino projects for communicating with AT&T's M2X service using a CC3000.
Arduino
1
star
49

xrp-object-detection

Python
1
star
50

google-coral-micro-object-detection

HTML
1
star
51

pendulum-rl

Jupyter Notebook
1
star
52

hopper-chat

Python
1
star
53

LearnScraper

JavaScript
1
star
54

serial-image-capture

C++
1
star
55

hex2c

Convert binary files and Python byte lists to C arrays
1
star
56

esp8266-temp-proto

C++
1
star
57

Getting_Started_With_RPi

Python code used in my "Getting Started With Raspberry Pi" video series.
Python
1
star
58

roshamglo_flashing_tool

Arduino
1
star
59

qwop-ai

Jupyter Notebook
1
star
60

Intar

Eagle
1
star
61

simple-recorderjs-projects

JavaScript
1
star
62

gaming-lap-desk

1
star