Autoplay
Autocomplete
Previous Lesson
Complete and Continue
CMake for ARM Microcontrollers
Introduction
Welcome(Same as Promo) (1:42)
Course Requirement
Course Goals, Constraints, and Non-Goals
Overview of the Course Goals, Constraints and Non-goals (2:34)
What a CMake Pipeline Solves (4:11)
CMake Mental Model for Embedded
The 3 Phases of a CMake Project (3:23)
Understanding Targets and Properties (2:41)
Languages and Toolchains in Cross-Compile Mode (1:49)
Understanding Single-Configuration vs. Multi-Configuration Generators (1:43)
Understanding Correct Scoping: Directory, Target, Cache and Global (2:18)
Environment and Determinism
Pinning Toolchains and Host Utilities (3:34)
The First Timestamp and Archiver Problem (1:40)
The Second Timestamp Problem: The Final ELF (2:10)
Host Path and Environmental Sanitization (2:00)
Understanding Generators and Their Reproducibilty Implications (2:09)
Toolchain Files for ARM Cross-Compile
Understanding CMAKE_SYSTEM_NAME and CMAKE_TRY_COMPILE_TARGET (2:06)
The Four Core Responsibilities of a Toolchain File (3:15)
Setting Compilers, Sysroot and ABI (2:29)
Mapping Flags to Target Properties (1:38)
The Two Compiler Choices: GCC vs. LLVM/CLANG (1:39)
Validating the Toolchain (1:35)
Targets and Project Topology
The Four Target Types for Firmware (2:18)
Controlling Flow of Information Between Targets (3:44)
Device Family Layering: The Four Layers (5:26)
Solving the Cross-Compile Contamination Problem (2:23)
The Repository Layout
Overview of the CMakeLists Text File and CMakePresets JSON File (2:02)
Overview of the Repository Layout (2:15)
Understaing the Rest of the Files in the Repository (4:57)
Programming: Creating the Repository Layout (7:09)
Programming: Creating all the Files for the Meta Build System (9:15)
Developing the CMakeLists.txt File
Programming: Listing the Initial Steps (3:53)
Programming: Listing the Initial Steps(Pt.2) (6:37)
Programming: Listing the Initial Steps(Pt.3) (11:09)
Programming: Setting the CMake Minimun Version (4:14)
Programming: Detecting a Moved or Renamed Source Tree (10:13)
Programming: Declaring the Project and Languages Used (3:59)
Programming: Making Sure a Board is Defined (2:32)
Programming: Creating Where to Place all Artifacts (4:26)
Programming: Recording the Toolchain and Environment Versions (2:29)
Programming: Pulling the Overlay of Each Board (2:38)
Programming: Making Sure the Overlay File Contains all Required Variables (2:54)
Programming: Defining the Firmware Target (2:44)
Programming: Putting all Target Artefacts Under Artefact Directory (2:38)
Programming: Attaching the Vendor Startup Assembly File to the Target (2:55)
Programming: Adding Include Paths for CMSIS-Core And CMSIS-Device (3:17)
Programming: Passing Device Macros and Target Compile Options (2:36)
Programming: Adding Some General and Linker Options (2:57)
Programming: Dumping Dissambly and Size Summary (5:37)
Programming: Generating BIN and HEX Images Alongside the ELF (1:33)
The Board Overlay Files
Programming: Adding the Architecture-Specific Header Files to the Project Tree (4:09)
Programming: Getting the Chip Manufacturer Header Files (3:50)
Programming: Adding the Microcontroller-Specific Header Files to the Project Tree (3:57)
Programming: Integrating the Linkerscript and Startup File for each Target Microcontroller (7:42)
Programming: Defining the Device and Core Selection Macros (3:46)
Programming: Defining the Board Linker and Compile Options (2:21)
Programming: Defining the Include Directories for the Vendor and Architecture Files (4:05)
Programming: Implementing the Overlay File for the STM32F7 Microcontroller (2:05)
The CMakePresets JSON File
Programming: Implementing the Preset Configuration for the F411 Board (10:02)
Programming: Declaring the Schema Version and Minimum Required Version (3:23)
Programming: Implementing the Preset Configuration for the F767 Board (1:34)
Programming: Implementing the buildPresets (4:28)
Programming: Declaring the Project and Languages Used
Lesson content locked
If you're already enrolled,
you'll need to login
.
Enroll in Course to Unlock