Modern Embedded Systems Programming (By: Quantum Leaps, LLC)

Categories: Embedded Systems
Wishlist Share
Share Course
Page Link
Share On Social Media

About Course

Introduction: In this course, you’ll learn how to program embedded microcontrollers the modern way, from the basics all the way to the contemporary modern embedded programming practice.

Teaching Approach: The unique approach of this course is to step down to the machine level frequently and show you exactly what happens inside your embedded microcontroller. This deeper understanding will allow you to apply the concepts more efficiently and with greater confidence. If you are looking for a practical, hands-on, well-structured, and in-depth course explaining the essential concepts in embedded programming, this free course is right for you.

Instructor: The course is designed and taught by Miro Samek — an embedded software expert with over 30 years of experience. Miro enjoys teaching, and this video course, his books, articles, and conference talks helped many developers improve their skills, pass tough job interviews, and get hired for embedded programming positions.

Relevance: The course started already in 2013, so a legitimate question is: “Is it still relevant?” The answer is YES, perhaps even more so than in 2013, for two main reasons: 1️⃣ Fundamental Concepts: This course focuses on the essential and fundamental concepts in embedded programming, which never go out of style. 2️⃣ ARM Cortex-M Architecture: This course focuses on the prevalent ARM Cortex-M architecture, which over the past decade became unquestionably dominant in the embedded MCU market. Familiarity with ARM Cortex-M is the most sought-after skill that employers are looking for.

Show More

Course Content

Modern Embedded Systems Programming

  • 11:54
  • #1 How computers count?
    17:06
  • #2 How to change the flow of control through your code
    10:59
  • #3 Variables and Pointers
    12:22
  • #4 How to control the world outside?
    16:44
  • #5 Preprocessor and the “volatile” keyword in C
    14:29
  • #6 Bit-wise operators in C
    17:05
  • #7 Arrays and Pointer Arithmetic
    15:21
  • #8 Functions in C and the call stack
    17:05
  • #9 Modules, Recursion, ARM Application Procedure Call Standard(AAPCS)
    19:07
  • #10 Stack Overflow and Other Pitfalls of Functions
    27:41
  • #11 Standard integers (stdint.h) and mixing integer types
    28:34
  • #12 Structures in C and Cortex Microcontroller Software Interface Standard (CMSIS)
    32:11
  • #13 Startup Code Part-1: What is startup code and how the CPU gets from reset to main?
    23:27
  • #14 Startup Code Part-2: Replacing the vector-table, embedded software build process
    25:44
  • #15 Startup Code Part-3: Vector table initialization, exception handlers, interrupt handlers
    27:35
  • #16 Interrupts Part-1: What are interrupts, and how they work
    15:58
  • #17 interrupts Part-2: How most CPUs (e.g. MSP430) handle interrupts?
    19:52
  • #18 interrupts Part-3: How interrupts work on ARM Cortex-M?
    15:27
  • #19 GNU-ARM Toolchain and Eclipse IDE
    22:18
  • #20 Race Conditions: What are they and how to avoid them?
    16:57
  • #21 Foreground-Background Architecture (“Superloop”)
    18:36
  • #22 RTOS Part-1: What is a Real-Time Operating System?
    23:25
  • #23 RTOS Part-2: Automating the context switch
    37:36
  • #24 RTOS Part-3: Automating the scheduling with round-robin policy
    19:15
  • #25 RTOS Part-4: Efficient blocking of threads
    25:35
  • #26 RTOS Part-5: What is “real-time”? Preemptive, priority-based scheduling
    29:31
  • #27 RTOS Part-6: Synchronization and communication among concurrent threads
    43:03
  • #28 RTOS Part-7: Mutual exclusion mechanisms
    38:02
  • #29 OOP Part-1: Encapsulation (classes) in C and C++
    31:28
  • #30 OOP Part-2: Inheritance in C and C++
    24:01
  • #31 OOP Part-3: Polymorphism in C++
    23:41
  • #32 OOP Part-4: Polymorphism in C
    27:29
  • #33 Event-Driven Programming Part-1: GUI example, events, event-loop, run-to-completion, no-blocking
    29:32
  • #34 Event-Driven Programming Part-2: Best practices for concurrency & Active Object pattern
    39:11
  • #35 State Machines Part-1: What is a state machine?
    24:15
  • #36 State Machines Part-2: Guard conditions
    14:10
  • #37 State Machines Part-3: Input-Driven State Machines
    31:54
  • #38 State Machines Part-4: State Tables and Entry/Exit Actions
    26:35
  • #39 State Machines Part-5: Optimal Implementation in C
    33:09
  • #40 State Machines Part-6: What is a Hierarchical State Machine?
    31:58
  • #41 State Machines Part-7:Automatic Code Generation
    30:55
  • #42 State Machines Part-8: Semantics of Hierarchical State Machines
    23:02
  • #43 Active Objects in Real-Time Part-1: Run-to-Completion and RMS/RMA
    14:10
  • #44 Active Objects in Real-Time Part-2: Mutable Events
    23:31
  • #45 Software Tracing with printf
    27:52
  • #46 Software Tracing with Binary Protocols
    26:36
  • #47 Assertions and Design by Contract, Part-1
    13:35
  • #48 Assertions and Design by Contract, Part-2
    15:56
  • #49 Embedded Unit Testing
    23:45
  • #50 To block or NOT to block, that is the question! Blocking as technical debt…
    11:00
  • #51 Traceable Documentation with Doxygen & Spexygen
    23:38
  • #52 Using low-power sleep modes in the “superloop” architecture
    30:00
  • #53 Priority-based scheduler for the “superloop” architecture
    18:25
  • #54 Non-preemptive QV Kernel for Active Objects
    28:02

Student Ratings & Reviews

No Review Yet
No Review Yet

Want to receive push notifications for all major on-site activities?

Select your currency
USD United States (US) dollar