Section 1 : Overview of the course

Lecture 1 INTRODUCTION TO BRAINMEASURES PROCTOR SYSTEM
Lecture 2 About Certification
Lecture 3 About Proctor Testing
Lecture 4 FAQ
Lecture 5 Note for the Students

Section 2 : RTOS Introduction

Lecture 1 What is Real Time Application(RTAs) 00:09:22 Duration
Lecture 2 What is Real Time Operating System(RTOS) 00:05:21 Duration
Lecture 3 RTOS vs GPOS Task Scheduling 00:03:34 Duration
Lecture 4 RTOS vs GPOS Latency 00:05:20 Duration
Lecture 5 RTOS vs GPOS Priority inversion 00:05:46 Duration
Lecture 6 What is Multitasking 00:04:37 Duration

Section 3 : Development board used in our courses

Lecture 1 Note for the students
Lecture 2 About MCU Development board 00:04:56 Duration
Lecture 3 STM32F4 Discovery and Nucleo Board Details 00:08:44 Duration
Lecture 4 ST-Link Driver Installation
Lecture 5 ST Link Firmware Upgrade 00:04:07 Duration

Section 4 : IDE install (OpenSTM32 System Workbench)

Lecture 1 Downloading Open STM32 System Workbench 00:05:13 Duration
Lecture 2 Installing Open STM32 System Workbench 00:03:47 Duration

Section 5 : Downloading and Installing FreeRTOS

Lecture 1 Downloading FreeRTOS From freertos 00:01:29 Duration
Lecture 2 Installing FreeRTOS 00:04:43 Duration

Section 6 : Creating FreeRTOS based project for STM32 MCUs

Lecture 1 Creating FreeRTOS based project for STM32 MCUs Part-1 00:02:19 Duration
Lecture 2 Creating FreeRTOS based project for STM32 MCUs Part-2 00:06:00 Duration
Lecture 3 Creating FreeRTOS based project for STM32 MCUs Part-3 00:08:57 Duration
Lecture 4 Creating FreeRTOS based project for STM32 MCUs Part-4 00:04:17 Duration
Lecture 5 Creating FreeRTOS based project for STM32 MCUs Part-5 00:05:16 Duration
Lecture 6 Understanding SystemCoreClock variable 00:05:16 Duration

Section 7 : FreeRTOS Task Creation

Lecture 1 What is task 00:08:20 Duration
Lecture 2 Task Create API 00:05:41 Duration
Lecture 3 Scheduling of Tasks 00:00:54 Duration
Lecture 4 FreeRTOS behind the scene Task Creation 00:02:36 Duration

Section 8 : FreeRTOS Hello World App and Testing on hardware

Lecture 1 Exercise Introduction 00:01:59 Duration
Lecture 2 Exercise Understanding MCU clock configuration Part-1 00:07:52 Duration
Lecture 3 Exercise Understanding MCU clock configuration Part-2 00:07:40 Duration
Lecture 4 Exercise Creating FreeRTOS Tasks Part-1 00:07:23 Duration
Lecture 5 Exercise Creating FreeRTOS Tasks Part-2 00:04:01 Duration
Lecture 6 Exercise Testing via debugger Part-1 00:04:07 Duration
Lecture 7 Exercise Testing via debugger Part-2 00:06:57 Duration

Section 9 : Semi hosting and UART setup

Lecture 1 Understanding ARM Semi-hosting feature 00:09:44 Duration
Lecture 2 Using MCU peripherals and implementing initialization codes 00:04:13 Duration
Lecture 3 MCU pin configuration table and UART VCP connection 00:10:20 Duration
Lecture 4 UART pin configuration using STD 00:10:39 Duration
Lecture 5 Exercise UART Parameter Inits 00:06:36 Duration
Lecture 6 Exercise UART Printmsg implementation using std periph 00:08:13 Duration
Lecture 7 Exercise Testing UART prints 00:03:30 Duration
Lecture 8 Exercise Testing our hello world application over UART 00:03:49 Duration
Lecture 9 Exercise Usage of taskYIELD() and explanation

Section 10 : FreeRTOS app debugging using SEGGER SystemView Tools

Lecture 1 Note for Next lecture
Lecture 2 Downloading SEGGER SystemView Software 00:01:28 Duration
Lecture 3 SEGGER SystemView Installation and first look 00:03:34 Duration
Lecture 4 What is SEGGER SystemView 00:03:46 Duration
Lecture 5 SEGGER SystemView visualization modes 00:04:10 Duration
Lecture 6 SEGGER SystemView Target integration preparation 00:06:31 Duration
Lecture 7 SEGGER SystemView Target integration step by step 00:14:20 Duration
Lecture 8 SEGGER SystemView taking FreeRTOS trace using snapshot mode 00:08:06 Duration
Lecture 9 SEGGER SystemView jlink reflash utility download 00:03:00 Duration
Lecture 10 SEGGER SystemView taking FreeRTOS trace using Continuous recording 00:05:40 Duration
Lecture 11 Analyzing the trace An Overview 00:11:52 Duration
Lecture 12 Analyzing FreeRTOS helloword application using SystemView Trace 00:06:07 Duration

Section 11 : IDLE Task and Timer Svc Task of FreerRTOS

Lecture 1 IDLE task and its significance 00:07:20 Duration
Lecture 2 FreeRTOS Timer Services task and other details 00:05:39 Duration

Section 12 : FreeRTOS Scheduler

Lecture 1 FreeRTOS Scheduler and xTaskStartScheduler() API explanation 00:06:33 Duration
Lecture 2 Understanding implementation of xPortStartScheduler() of port 00:05:27 Duration

Section 13 : FreeRTOS and ARM Cortex Mx Arch

Lecture 1 FreeRTOS Kernel interrupts 00:02:04 Duration
Lecture 2 RTOS Tick and SysTick Timer explanation 00:07:10 Duration
Lecture 3 Who configures the RTOS Tick Timer 00:04:11 Duration
Lecture 4 What RTOS Tick ISR (SysTick ISR) does summary 00:03:22 Duration

Section 14 : Context switching

Lecture 1 Introduction to context switching 00:03:08 Duration
Lecture 2 Context Switching understanding State of a Task 00:07:21 Duration
Lecture 3 Context Switching Task Switching out procedure with animation 00:07:12 Duration
Lecture 4 Context switching understanding pendSV handler code 00:16:30 Duration

Section 15 : Exercise Button and LED Task and Interrupt Coding

Lecture 1 Exercise Button and LED task 00:04:37 Duration
Lecture 2 Exercise Adding FreeRTOS source to project 00:03:17 Duration
Lecture 3 Exercise Task create of button and LED task 00:07:12 Duration
Lecture 4 Exercise GPIO configuration code 00:08:11 Duration
Lecture 5 Exercise GPIO configuration code cntd 00:02:45 Duration
Lecture 6 Exercise Task handler implementation and testing on the target 00:03:52 Duration
Lecture 7 Exercise working with task and interrupt 00:01:07 Duration
Lecture 8 Understanding GPIO Interrupts delivery in STM32 MCUs 00:19:22 Duration
Lecture 9 Exercise LED task and Button interrupt handling code implementation 00:08:47 Duration
Lecture 10 Understanding Trace of button interrupt and led task execution 00:09:34 Duration

Section 16 : FreeRTOS Task Notification

Lecture 1 Task Notify Introduction with exercise 00:02:50 Duration
Lecture 2 Task notification APIs and xTaskNotifyWait()
Lecture 3 using xTaskNotifyWait() in the code 00:07:47 Duration
Lecture 4 Task notifications xTaskNotify() 00:06:45 Duration
Lecture 5 Understanding Task notification trace 00:06:32 Duration

Section 17 : FreeRTOS Licensing model and API interface

Lecture 1 freertos-licensing 00:08:32 Duration
Lecture 2 FreeRTOS API Interface 00:04:33 Duration

Section 18 : Overview of FreeRTOS Memory manage, STACK and Synchronization services

Lecture 1 Overview of FreeRTOS Memory Management 00:16:27 Duration
Lecture 2 FreeRTOS Heap and Stack Management
Lecture 3 Overview of FreeRTOS Synchronization and mutual exclusion Services 00:08:54 Duration

Section 19 : FreeRTOS Kernel Coding Style

Lecture 1 Macros 00:04:41 Duration
Lecture 2 Variables 00:09:36 Duration
Lecture 3 Functions 00:06:47 Duration

Section 20 : FreeRTOS Task Deletion

Lecture 1 Deleting a Task 00:02:25 Duration
Lecture 2 Exercise Task Delete 00:01:31 Duration
Lecture 3 Exercise Task Delete Implementation 00:06:13 Duration

Section 21 : ARM Cortex M Interrupt Priority and FreeRTOS Task Priority

Lecture 1 FreeRTOS Hardware interrupt Configurable items 00:08:06 Duration
Lecture 2 FreeRTOS Hardware interrupt Configurable items contd 00:09:24 Duration
Lecture 3 Priority of freeRTOS Tasks 00:03:17 Duration
Lecture 4 FreeRTOS priority SetGet APIs 00:04:59 Duration
Lecture 5 Exercise Task Priority 00:01:24 Duration
Lecture 6 Exercise Task Priority Implementation and testing 00:04:36 Duration
Lecture 7 Exercise Task Priority analyzing the trace 00:04:23 Duration

Section 22 : Interrupt safe APIs and Task yielding

Lecture 1 Interrupt safe and interrupt unsafe APIs 00:14:28 Duration
Lecture 2 Understanding Task Yielding 00:08:09 Duration

Section 23 : FreeRTOS Task States

Lecture 1 Running and Not Running state 00:01:47 Duration
Lecture 2 The Ready state
Lecture 3 The Blocked state 00:05:23 Duration
Lecture 4 Suspended state 00:03:07 Duration

Section 24 : FreeRTOS Importance of Delay APIs

Lecture 1 Crude delay and its Effects 00:03:41 Duration
Lecture 2 Using Blocked state to create delay 00:07:16 Duration
Lecture 3 Exercise vTaskDelay() Introduction 00:03:27 Duration
Lecture 4 Exercise vTaskDelay() Implementation 00:05:06 Duration
Lecture 5 Exercise vTaskDelay() analyzing with trace 00:05:16 Duration

Section 25 : FreeRTOS Hook Functions

Lecture 1 FreeRTOS Hook functions 00:08:05 Duration
Lecture 2 Tick hook function and Current saving instructions 00:06:34 Duration

Section 26 : FreeRTOS Scheduling Policies

Lecture 1 Preemptive Scheduling 00:06:06 Duration
Lecture 2 Prioritized Preemptive Scheduling 00:08:26 Duration
Lecture 3 Co-operative Scheduling 00:03:52 Duration

Section 27 : FreeRTOS Queue Management

Lecture 1 Queues and its features 00:04:50 Duration
Lecture 2 Creating a Queue 00:04:47 Duration
Lecture 3 Sending data to Queue 00:04:14 Duration
Lecture 4 Receiving data from Queue 00:02:20 Duration
Lecture 5 Exercise FreeRTOS Command Processing app 00:06:20 Duration
Lecture 6 Exercise Task Implementation 00:03:07 Duration
Lecture 7 Creation of Command Queue 00:07:10 Duration
Lecture 8 Creation of UART write Queue 00:01:18 Duration
Lecture 9 Coding for UART interrupt settings 00:11:55 Duration
Lecture 10 UART ISR implementation 00:05:04 Duration
Lecture 11 Implementing menu print task 00:05:36 Duration
Lecture 12 Implementing UART write task 00:04:06 Duration
Lecture 13 UART ISR coding 00:03:53 Duration
Lecture 14 Implementation of command handling task 00:06:05 Duration
Lecture 15 Implementation of command processing task 00:04:55 Duration
Lecture 16 Command processing helper function implementation 00:07:26 Duration
Lecture 17 Software timers discussion 00:13:41 Duration
Lecture 18 Software timers discussion contd 00:00:56 Duration
Lecture 19 Solving race condition between task and ISR 00:03:42 Duration
Lecture 20 Memory freeing and RTC testing 00:08:18 Duration
Lecture 21 Full Application testing

Section 28 : Semaphore for Synchronization, mutual exclusion and Interrupt Management

Lecture 1 Synchronization and Mutual exclusion in real world 00:06:32 Duration
Lecture 2 Creation of a semaphore 00:03:51 Duration
Lecture 3 Different types of semaphores 00:03:55 Duration
Lecture 4 Binary semaphore to synchronize between two Tasks 00:03:57 Duration
Lecture 5 Exercise Synchronization between 2 Tasks 00:08:45 Duration
Lecture 6 Binary Semaphore to synchronize between task and Interrupt 00:04:54 Duration
Lecture 7 Events latching 00:08:36 Duration
Lecture 8 counting semaphore to latch and process multiple events 00:04:24 Duration
Lecture 9 Exercise Synchronizing a Task and Multiple Events 00:08:11 Duration

Section 29 : Mutual exclusion

Lecture 1 Mutual Exclusion using Binary Semaphore 00:06:42 Duration
Lecture 2 Exercise Mutual Exclusion between 2 tasks using Binary Semaphore 00:06:15 Duration
Lecture 3 Issue with Binary sema when used for Mutual exclusion
Lecture 4 Advantages of Mutex Over Binary Semaphore 00:05:24 Duration
Lecture 5 Code Exercise - 16 Mutex Example
Lecture 6 Crude way to protect critical section 00:03:38 Duration

Section 30 : FreeRTOS+Simulator

Lecture 1 Working with simulator using FreeRTOS Win32 Port