Overview
During my internship, I spent my weekend by learning 2 courses that I bought from Udemy.
The first course is "Embedded Systems Programming on ARM Cortex-M3/M4 Processor(ARM Cortex M4 Processor specific)".
From this course, I was able to learn:
- Internal architecture of ARM Cortex M3/M4 processor and programming
- Learn Mixed ‘C’ and Assembly Coding using inline assembly technique
- Demystifying Memory, Bus interfaces, NVIC, Exception handling with lots of animation
- Interrupts and configuration of ARM Cortex Mx based microcontroller
- Low level register Programming for interrupts, System Exceptions, Setting Priorities,Preemption,etc.
- Learn writing IRQ handlers , IRQ numbers, NVIC and mcu more
- Implementation of task scheduler using PENDSV and SYSTICK feature of the processor
- Implementation of context switching
- Learn and write linker script and mcu startup file from scratch
- Bare metal embedded build process
- Processor fault exceptions and fault handler implementation and fault analysis
- Stack and AAPCS standard
- learn inline assembly , naked functions and gcc variable and section attribute
The second course is "Mastering RTOS: Hands-on FreeRTOS and STM32Fx with Debugging(RTOS)"
From this course, I was able to learn:
- Understanding various RTOS concepts with FreeRTOS Programming and Debugging
- Learn Complete Step by step method to run FreeRTOS on STM32 MCUs using OpenSTM32 System Workbench
- Using STM32 Standard Peripheral Driver APIs to configure peripherals
- FreeRTOS Task Creation , Deletion, Scheduling using with code examples
- Important scheduling policies of FreeRTOS Scheduler
- FreeRTOS Stack and Heap Management
- Right ways of Synchronizing between tasks using Semaphores.
- Right ways of Synchronizing between a task and an interrupt using semaphores
- Synchronization between multiple events and a task
- FreeRTOS Queue management like creation, sending, receiving, blocking, etc
- Implementing mutual exclusion between Tasks using Mutex services and semaphores
- Understanding Context Switching with in detail code explanation
- Understanding Architecture specific codes like SVC_handler, PendSV_handler, SysTick Handler line by line
- You will learn about kernel Tick timer, its importance, the kernel tick frequency and its configuration details.
- Understanding complete ARM Cortex M and FreeRTOS Priority model and its configuration related informations
- FreeRTOS Debugging using SEGGER SystemView Software
- Lots of articles which explains line by line the ARM Cortex M related FreeRTOS architecture specific codes
- Low power instructions use case in FreeRTOS scenario
- Lots of coding exercises
- Debugging with SEGGER software toolkit by taking snapshot and continuous mode recording