Modern Embedded Systems Programming Course
4.0
(6)
56 learners
What you'll learn
This course includes
- 22.3 hours of video
- Certificate of completion
- Access on mobile and TV
Course content
1 modules • 57 lessons • 22.3 hours of video
Modern Embedded Systems Programming Course
57 lessons
• 22.3 hours
Modern Embedded Systems Programming Course
57 lessons
• 22.3 hours
- #0 Modern Embedded Systems Programming: Getting Started 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:37
- #22 RTOS Part-1: What is a Real-Time Operating System? 23:26
- #23 RTOS Part-2: Automating the context switch 37:37
- #24 RTOS Part-3: Automating the scheduling with round-robin policy 19:16
- #25 RTOS Part-4: Efficient blocking of threads 25:36
- #26 RTOS Part-5: What is "real-time"? Preemptive, priority-based scheduling 29:32
- #27 RTOS Part-6: Synchronization and communication among concurrent threads 43:04
- #28 RTOS Part-7: Mutual exclusion mechanisms 38:03
- #29 OOP Part-1: Encapsulation (classes) in C and C++ 31:29
- #30 OOP Part-2: Inheritance in C and C++ 24:02
- #31 OOP Part-3: Polymorphism in C++ 23:42
- #32 OOP Part-4: Polymorphism in C 27:30
- #33 Event-Driven Programming Part-1: GUI example, events, event-loop, run-to-completion, no-blocking 29:33
- #34 Event-Driven Programming Part-2: Best practices for concurrency & Active Object pattern 39:12
- #35 State Machines Part-1: What is a state machine? 24:16
- #36 State Machines Part-2: Guard conditions 14:11
- #37 State Machines Part-3: Input-Driven State Machines 31:55
- #38 State Machines Part-4: State Tables and Entry/Exit Actions 26:36
- #39 State Machines Part-5: Optimal Implementation in C 33:09
- #40 State Machines Part-6: What is a Hierarchical State Machine? 31:59
- #41 State Machines Part-7:Automatic Code Generation 30:56
- #42 State Machines Part-8: Semantics of Hierarchical State Machines 23:03
- #43 Active Objects in Real-Time Part-1: Run-to-Completion and RMS/RMA 14:11
- #44 Active Objects in Real-Time Part-2: Mutable Events 22:32
- #45 Software Tracing with printf 27:53
- #46 Software Tracing with Binary Protocols 26:37
- #47 Assertions and Design by Contract, Part-1 13:36
- #48 Assertions and Design by Contract, Part-2 15:57
- #49 Embedded Unit Testing 23:46
- #50 To block or NOT to block, that is the question! Blocking as technical debt... 11:01
- #51 Traceable Documentation with Doxygen & Spexygen 23:39
- #52 Using low-power sleep modes in the "superloop" architecture 30:01
- #53 Priority-based scheduler for the "superloop" architecture 18:26
- #54 Non-preemptive QV Kernel for Active Objects 28:03
- #55 Preemptive QK Kernel for Active Objects 24:31
- #56 Zephyr RTOS for Active Objects 30:04
