
Mastering rtos delivers hands-on FreeRTOS on stm32, covering IDE setup, FreeRTOS 10, task creation, hello world, and Segger SystemView debugging with uart and semi hosting.
This lecture explains you about what exactly are RTAs , What are the myths and truths related to Real time computing and also difference between NRTAs and RTAs.
This lecture explains about , what are Real time Operating Systems, How exactly it is different from GPOS ?
What are the trending RTOSes in the market, etc. Gives head start in to the world of RTOS.
In this lecture we will learn the difference between RTOS and GPOS in terms of of Task Scheduling. You will come know why Task scheduling in RTOS is not like that of a GPOS.
This lecture thoroughly explains the difference between RTOS and GPOS in terms of task switching latency and interrupt latency. you will come to know how RTOS and GPOS differ when it comes to latency.
This lecture with cool animations explains what exactly is priority inversion and how does it matter in RTOS.
once you watch this lecture, you will never forget what exactly is priority inversion !
This lecture gives a good head start to the world of multitasking. Understanding what exactly multitasking is a key in the world of operating system.
Download and install STM32Qube IDE, choose a compatible version (1.19 or 1.18), and understand that QBMX code generator is separate in version 2.0, enabling bare metal programming.
Install STM32CubeIDE on Ubuntu by running the installation script, granting executable permissions with sudo chmod +x, executing the installer, accepting the license, and searching for ST to launch the app.
Download microcontroller datasheet and reference manuals from ST's site, then collect board documentation, including the product specification, user manuals, and schematics, from the development board page.
Create a workspace and download the FreeRTOS kernel version 202012 for GCC, exploring kernel sources. Review the MIT license and FreeRTOS-Plus components included.
Create a hello world FreeRTOS project on the STM32F407 discovery board using STM32CubeIDE, exploring task creation APIs and compiling, plus workspace setup and choosing a project type.
Add the FreeRTOS kernel source to an STM32 project manually by creating a ThirdParty folder, copying include and portable files, and selecting the cm4f gcc port, or via STM32Cube IDE.
Add include paths for the FreeRTOS kernel headers using the MCU GCC compiler. Resolve missing header errors and prepare adding FreeRTOSConfig.h for kernel customization.
Set timer 6 as the FreeRTOS time base to avoid conflicts with STM32Cube HAL, initialize timer 6 for 1 ms ticks, and configure NVIC to 4-bit preemption and 0-bit subpriority.
Learn to add the FreeRTOS kernel to an STM32 project via STM32CubeIDE's graphical interface, configure FreeRTOS v2, heap, time base, and re-entrant Newlib for multi-threaded apps.
In this lecture you will understand what exactly is stack, How to implement the task Handler, etc. Also you will understand the rules to write the FreeRTOS Task handler.
Learn how to create a FreeRTOS task with xTaskCreate, pass parameters, assign a name and priority, manage stack depth via configSTACK_DEPTH_TYPE, and save a task handle.
Set FreeRTOS task priorities to resolve CPU contention, using 0 to configMAX_PRIORITIES-1 and noting RAM and context switch implications; practice creating two equal-priority tasks that print hello world messages.
Explore how FreeRTOS schedules tasks with pre-emptive and cooperative policies, including round-robin and priority-based methods, using the RTOS tick and configUSE_PREEMPTION to manage context switches, blocking, and yielding.
Learn how FreeRTOS dynamically allocates task TCBs and stacks from the heap, controlled by configTOTAL_HEAP_SIZE, and how kernel objects like semaphores and queues use the same heap.
Download and set up SEGGER SystemView trace tools to analyze FreeRTOS activities, including host SystemView software, target source files, SystemView user manual, and J-Link utilities.
Explore SEGGER SystemView, a toolkit that analyzes embedded software behavior by tracing FreeRTOS events, tasks, ISR timings, and idle time, using PC visualization and target code.
Segger SystemView real-time and single-shot recording modes for FreeRTOS, using J-Link or ST-Link, and how RTT transfers events to the host.
Analyze Segger trace of a two-task FreeRTOS example, showing SysTick interrupts, scheduler context switches, and Task-1 and Task-2 alternating execution, yielding 50% CPU load with no idle time.
Idle task is automatically created at the lowest priority to keep one task running and free memory from deleted tasks, while timer services task manages software timers when enabled.
Explore the FreeRTOS scheduler implementation, combining kernel code with architecture specific parts in port.c and portmacro.h for ARM Cortex Mx, including vPortSVCHandler, PendSVHandler, and SysTickHandler.
The lecture shows how vTaskStartScheduler initializes the FreeRTOS scheduler, configures SysTick for the tick rate, and starts the first task via SVC, with PendSV and SysTick handlers managing context switching.
Explore how SysTick timer implements the RTOS tick and increments xTickCount via configTICK_RATE_HZ. See how the tick ISR wakes sleeping tasks with vTaskDelay and triggers a context switch via PendSV.
The xPortStartScheduler function configures SysTick for a 1 ms RTOS tick by setting the SysTick load to 24999, enabling SysTick interrupts, and assigning the lowest priority (15) on ARM Cortex-M.
Monitor how the RTOS tick ISR SysTickHandler updates xTickCount, checks unblocked tasks, and requests a context switch via PendSV while masking interrupts briefly; context switching occurs in PendSV_Handler.
>> The Complete FreeRTOS Course with Programming and Debugging <<
Latest update: RTOS debugging using SEGGER SystemView Trace tools, STM32 hal. Peripheral APIs and More examples are added.
Subtitles(CCs) and transcripts are available for this course.
Dedicated Support team to answer Q/A
The course is designed for Beginners to Advanced audience.
Short Description:
"The Biggest objective of this course is to demystifying RTOS practically using FreeRTOS and STM32 MCUs"
STEP-by-STEP guide to port/run FreeRTOS using development setup which includes,
1) STM32CUBEIDE + STM32F4xx + FreeRTOS + SEGGER SystemView
Demystifying the complete Architecture (ARM Cortex M) related code of FreeRTOS which will massively help you to put this kernel on any target hardware of your choice.
Development board used in this course:
If you already have an STM32 Based development board, then please continue using the same. The course uses STM32F407x DISCOVERY(STM32F407G-DISC1) board
Software used in this course:
1) STM32CUBEIDE which can run on all OS platforms(WIN/OSX/LINUX) (free)
2) SEGGER Systemview software free edition
Operating system information:
WIN/MAC/UBUNTU
Debugging FreeRTOS with SEGGER SYSVIEW software
In this course debugging freeRTOS with SEGGER Systemview software is covered with STEP-BY-STEP guidance. please watch the preview videos.
Embedded Debugging and Quizzes
Debugging embedded code is really interesting and learning various debugging techniques and features are very much essential to have a good grip on embedded debugging.
Also, the course consists of various interview questions which will test your knowledge gained !.
My promise!
I will personally answer your questions about this material, either privately or in a group discussion. If you are in any way not satisfied, for any reason, you can get, No questions asked a full refund from Udemy within 30 days. But I am confident you won't need to. I stand behind this course 100% and am committed to helping you.
Learning order of FastBit Embedded Brain Academy Courses,
If you are a beginner in the field of embedded systems, then you can take our courses in the below-mentioned order.
This is just a recommendation from the instructor for beginners.
1) Microcontroller Embedded C Programming: absolute beginners(Embedded C)
2) Embedded Systems Programming on ARM Cortex-M3/M4 Processor(ARM Cortex M4 Processor specific)
3) Mastering Microcontroller with Embedded Driver Development(MCU1)
4) Mastering Microcontroller: TIMERS, PWM, CAN, RTC,LOW POWER(MCU2)
5) Mastering Microcontroller: STM32-LTDC, LCD-TFT, LVGL(MCU3)
6) Embedded System Design using UML State Machines(State machine)
7) Mastering RTOS: Hands-on FreeRTOS and STM32Fx with Debugging(RTOS)
8) ARM Cortex M Microcontroller DMA Programming Demystified(DMA)
9) STM32Fx Microcontroller Custom Bootloader Development(Bootloader)
10) Embedded Linux Step by Step using Beaglebone Black(Linux)
11) Linux device driver programming using Beaglebone Black(LDD1)
Other programming courses
1) Master The Rust Programming Language : Beginner To Advanced