Embedded System Hardware Architecture Essentials (18 Hours)
In this course students learn the key concepts of embedded systems hardware design. Gaining an inside look at some of the most common embedded systems and the functional blocks within those systems, students in this course examine hardware components and their interfaces as well as important design considerations. They learn embedded systems design considerations and several approaches to system building common in the industry. Other key concepts in embedded hardware design include memories used in embedded systems and their interfaces, basic concepts in microprocessors, microcontrollers, digital signal processors (DSP), and the typical buses used at the system level.
After completing the course, you will see how the key concepts in embedded hardware design fit together, including the interaction of these hardware components as well as important design considerations.
Introduction to Embedded Linux Systems Programming (18 Hours)
This instructor-led course will give you the step-by-step framework for developing an embedded Linux product. Starting with the cross-compiler, you’ll learn about setting up a development system, boot loaders, the kernel, drivers, device tree, and all the various software and decisions that need to be made when building a user space root filesystem. Hands-on labs with a RISC-V based emulated development target allow students to practice both coding and building the various parts of the system covered in class.
Introduction to Real-Time Embedded Systems Programming (24 Hours)
A real-time embedded system is designed to monitor and respond to external environments within a time deadline. Systems interact with the environment using a variety of hardware and software interfaces. The embedded software manages these interfaces and makes sure that the tasks are accomplished within tight timing constraints. The Real Time Operating System (RTOS) on these devices is responsible for scheduling independent tasks and managing processes. This introductory course provides a foundation in the features and programming models of real-time embedded systems with hands-on learning.
The course introduces the fundamentals of real-time scheduling and resource management protocols that are essential in designing and building products and covers the use of RTOS to effectively design tasks and device drivers to meet real-time requirements. You'll learn about important topics in real-time systems, such as priority-based real time scheduling, interrupt handling, using timers, and detecting and preventing deadlocks. The course will also discuss multi-threading, cooperative versus preemptive multi-tasking and inter-process communications, focusing on programming in FreeRTOS and understanding internals such as schedulers and idle tasks.
You'll design and code a real-time embedded systems project in C language on an open source FreeRTOS emulator. Upon completion of the course, you'll understand real-time embedded systems programming and the interactions of hardware, software, and the OS in such systems.
Practical Embedded Linux Device Drivers (24 Hours)
The ever-growing demand for connectivity and multimedia applications is resulting in embedded Linux systems driving increasingly complex devices. Developing custom device drivers for the Linux kernel can be a complex and difficult task, with an array of implementation choices available.
This course aims to reduce development time by demonstrating how the range of helper functions and mechanisms provided by the kernel can make custom device driver creation easier. Attendees should come away from the course with a clear understanding of how to go about designing their device driver and what kernel mechanisms they can make use of.
All the main kernel interfaces and structural elements are covered in the course, allowing attendees to gain a sound understanding of the overall framework. This ensures that this training will continue to be useful and valid for future device driver projects.