Autoplay
Autocomplete
Previous Lesson
Complete and Continue
Embedded SDK Development from the Ground Up™
Introduction
Welcome(Same as Promo) (12:48)
Course Requirement
Orientation and Success Criteria
Why SDKs? The Enterprise View (2:14)
What You Will Ship: A v0.1 SDK (0:57)
Setting Up the Development Environment
Toolchain Download links
Setting Up the Arm GNU Toolchain (5:45)
Setting Up OpenOCD for Flashing Firmware (3:14)
Setting Up VSCode Editor (8:16)
The SDK Mental Model and Folder Architecture
Objectives: The Public vs. Private Contract (1:21)
The Iceberg Model: Public vs. Private Internals (2:18)
Overview of Lab1: Scaffolding the SDK Skeleton and Header Test (4:15)
Programming: Implementing the Project Tree (3:26)
Programming: Creating The SDK API Header and Source Files (1:09)
Programming: Implementing the SDK Initialization Function (2:03)
Programming: Compiling the Project to Avoid Hidden Dependencies Issues (7:24)
Understanding Object, Archive and Partial Link
Objectives: The Artifacts of Compilation (1:36)
Understanding the Object File and the Archive File (3:48)
Overview of Lab2: Building Our First Artifacts (1:15)
Programming: Creating the SDK Features and SDK Core Files (3:28)
Programming: Implementing the SDK Features Header File (3:00)
Programming: Implementing the SDK Core File (5:38)
Programming: Implementing the SDK Features Source File (1:42)
Programming: Creating the Static Archive Using the Required Object Files (7:50)
Programming: Creating a Thin Archive (1:50)
Programming: Creating the Relocatable Bundle Using the Required Object Files (5:31)
The Toolchain Targets and ABI Matrix
Objectives:Building for a Diverse World (1:37)
Targeting the Core with '-mcpu' (1:45)
Understanding the ABI Contract: How Functions Talk About Floats (2:40)
Overview of Lab3: Producing SDK SKUs (1:48)
Programming: Creating the SDK Math Module and Support-matrix (3:56)
Programming: Implementing the SDK Math Module (2:33)
Programming: Creating the SKU Subdirectories Inside the 'obj' and 'lib' Folders (2:55)
Programming: Building the Cortex-M4 Hardware FPU SKU Library (7:47)
Programming: Building the Cortex-M4 Software FPU SKU Library (2:25)
Programming: Building the Cortex-M0 Hardware FPU SKU Library (1:41)
Setting Up an IDE and Generic Drivers for Testing the Library
Getting the Required Documentation (7:41)
Getting the Right Package and Setting Upthe Project Tree (21:19)
Testing the project setup (15:54)
Programming : Enabling the Floating Point Unit (FPU) (18:00)
Programming : Developing a UART Driver - Analyzing the Documentation (11:35)
Programming : Developing a UART Driver - Listing out the steps (4:00)
Programming : Developing a UART Driver - Implementing the Initialization Function (22:13)
Programming : Developing a UART Driver - Implementing the Write Function (5:39)
Programming : Developing a UART Driver - Testing the Driver (6:39)
Programming : Developing the System Timebase - Analyzing the Documentation (8:28)
Programming : Developing the System Timebase - Implementing the Init. Function (9:52)
Programming : Developing the System Timebase - The rest of the Functions (12:15)
Programming : Developing the System Timebase - Testing the Timebase (5:34)
Testing the Library
Programming: Adding the Correct Library Files to the Project (8:07)
Programming: Creating the FP-ABI Test Project (3:58)
Programming: Configuring the Project to Use the Library (5:07)
Programming: Proving the Function Executes Successfully Without the .c File (6:48)
API Surface, Namespacing, and Compatibility Policy
Key Techniques for Writing Robust APIs (4:27)
Objectives: Designing for the Future (1:25)
Overview of Lab4: Carving a Minimal and Stable API (1:52)
Programming: Creating the SDK Internal File and API Policy File (3:34)
Programming: Updating the SDK API .h File wth 'c' Guards and Versioning Macros (4:09)
Programming: Defining the Opaque Handle and Error Codes (4:52)
Programming: Updating the Public API Function Declarations (2:07)
Programming: Implementing the Private Internal Header File (5:08)
Programming: Updating the 'my_sdk_ap.c' File (4:20)
Programming: Implementing the 'my_sdk_do_work()' Function (1:17)
Programming: Implementing the SDK Policy File (4:40)
Programming: Verification: The Symbol Test with 'nm' Utility (4:21)
Configuration System and Build Profiles
Objectives: Control and Predictability (1:43)
Understanding the Mechanisms of the Configuration File (3:45)
Overview of Lab5: Implementing and Verify the Three Profiles (1:26)
Linker Integration Contracts
Objectives: Implementing Painless Integration (1:56)
Understanding the Problem: The User's Sacred Linkerscript (2:10)
Creating and Integrating Custom Sections (3:27)
Overview of Lab6: Placing Data Deterministically (1:22)
Size and Performance Control
Objectives: Understanding Size and Performance Control (1:45)
Isolating and Eliminating Unused Sections (2:27)
Comparing Standard Builds to LTO Builds (1:08)
Overview of Lab7: The Bloat Postmortem Challenge (1:43)
Programming : Enabling the Floating Point Unit (FPU)
Lesson content locked
If you're already enrolled,
you'll need to login
.
Enroll in Course to Unlock