STM32L475, bare metal, FreeRTOS portfolio
đź“‚ Knowledge Base Roadmap
- Phase 1: Bare-Metal SDK
- From Silicon Handshake to Interrupt-Driven Bluetooth.
- Phase 2: Building custom Schedulers
- Context Switching, Priority Inversion, and SMP concepts.
- Phase 3: Building a FreeRTOS application on STM32L475 from Scratch
- Building a FreeRTOS application on STM32L475 (B-L475E-IOT01A) from Scratch without using IDE.
- Phase 4: Modern C++ Transition & RTOS Architecture
🚀 Engineering Modules
Phase 1. Bare_Metal architecture (Cortex M4)
- 01. Silicon Handshake - Bootstrapping, GPIO, and Modular Makefiles.
- 02. Precision Timing - SysTick Hardware, ISRs, and
volatilememory safety. - 03. Serial Communication - UART Peripheral and Clock Trees.
- 04. Environmental Sensing - I2C, Hardware FPU, and Sensor Interpolation.
- 05. DMA Acceleration - DMA Controller , DMA1_CH4, IRQ Handlers, Background Telemetry, and CPU Offloading.
- 06. Independant Watchdog - System Reliability IWDG, LSI Clocking, Fail-safe mechanisms.
- 07. SPI Bluetooth Hello - High-Speed Serial, Full-duplex SPI, FIFO management, Reset sequencing.
- 08. External Interupt via User Button - Verified EXTI/NVIC pipeline & VTOR.
Phase 2: Building custom Schedulers
-
01. Preemptive Round-Robin Scheduler - context switching, pendSV Handler, Assembly code, time sliced preemption, Round-Robin, Real-Time kernel, and Modular Makefiles, .vscode launch.json for debugging.
-
02. Preemptive Priority-Based Scheduler - Priority preemption, state based scheduling, non-blocking delays, Idle task, High priority ready algorithm
“Phase 3: Building a FreeRTOS application on STM32L475 from Scratch”
- 01.Guide to prepare project setup - FreeRTOS Kernel, STM32L4 ST library, prepare build system, run blinky.
Phase 4: Modern C++ Transition & RTOS Architecture
đź› Tech Stack
- Hardware: Discovery kit IoT node (B-L475E-IOT01A)
- Compiler:
arm-none-eabi-gcc(Optimization:-O0for debug clarity) - Debugger: OpenOCD via ST-Link V2-1
- Operating environment Ubuntu on WSL
- IDE Microsoft Visual Studio Code
Lesson learned
Everything that I learned - The references, the logic, the hurdles and outcomes during different phases of my excercise. Refer links below,
- Bare-Metal Lesson Learned section.
- Scheduelr Lesson Learned section.
Code Quality & Automation (applies to FreeRTOS project only)
To ensure the reliability of the FreeRTOS scheduler and application logic, this project uses an automated Code Quality & Automation so that every commit is audited before being deployed.
The comprehensive guide for setting up MISRA C, cppCheck and Lizard guide is here