D. Kalinsky Associates
Home  |  Training Courses  |  Online Learning  |  Resources  |  About Us  |  Contact  |  Site Map  
Foundation Course:

"Introduction to Embedded Systems and Software"

*  A First Course on the Fundamentals of Embedded Systems  for new Embedded Software Developers

*  2- or 3- Day Intensive Class       (with student work exercises)

This course introduces the concepts shared by most embedded systems and their software.  It also introduces the
techniques used in the development of embedded multitasking application software.

The course begins with the fundamental elements of embedded systems hardware and software, including their
design and development.  Fundamental processor and operating system concepts relevant to multitasking systems
are introduced, with focus on the basic services provided by off-the-shelf real-time operating system ("RTOS") kernels.

The course then introduces the students to multitasking application software design, using many application
examples.  Design approaches are shown for soft- as well as hard- real time systems.  In addition, both
mathematical and empirical development and debugging tools are studied.  The special facilities of the "C"
programming language for embedded software development are surveyed.

On the third day of the course, special topics are given in-depth attention -- including embedded device driver
development, testing and debugging of embedded software and systems. The usage of multicore systems-on-a-chip
for embedded multiprocessing is also discussed.


This course is intended for practicing software developers who will be transitioning into embedded systems software
development.   Course participants are expected to be knowledgeable in the C programming language for general

This is a course for engineers working in industry with less than a year of experience in the specifics of embedded
systems development.  [For those with more experience, we recommend the advanced course "
Architectural Design
of Real-Time Software"  .]

For companies who can dedicate 4-5 days of training to its embedded systems software engineers, our course
"Embedded Software Fundamentals" Masterclass provides more extensive introductory training.


The primary goal of this course is to give the participant the concepts and techniques necessary to develop software
for embedded computer systems with or without a real-time operating system.  This is a very practical,
results-oriented course that will provide knowledge and skills that can be applied immediately.


Embedded Systems Basics

Embedded Computer Systems Overview
Embedded Systems I/O
Embedded / Real-Time Systems: Definitions and Issues
Introduction to Embedded Software Development: The Host-Target Dichotomy
Survey of Task Schedulers

RTOS Kernel Basics

Introduction to Real-Time Operating Systems
Task States and Task Scheduling
Exercise: Multitasking
Introduction to Intertask Communication and Synchronization
Message Passing from Task to Task
Exercise: Messages and Message Queues
Semaphores and Shared Data
Exercise: Binary Semaphores
Liveness Issues: Deadlock, Lockout, Starvation

Additional RTOS Services

Exercise: Priority Inversion
RTOS Timers
RTOS Events
Dynamic Memory Allocation
Memory Protection
Interrupt Handling in an RTOS Environment

Design of Embedded Applications

Partitioning of Software into Tasks
Schedulability Issues: Hard vs. Soft Real-Time
Rate Monotonic Scheduling

Day 3 Topics: Development of Embedded Applications

Embedded Device Driver Development
Testing: Black Box Approaches
Testing: White Box Approaches
Exercise: White Box Test Planning (as per DO-178B avionic software standard)
Debugging Methods
"C"-Language in Embedded Systems
Overview of MultiCore MultiProcessing

Final Examination.

INSTRUCTOR:  Dr. David Kalinsky
Price of an On-Site Course
Check it out! Get the "flavor" of this course by trying one of the
course's classroom lectures in on-line format:
Sample Lecture
Schedule an On-Site Course
© Copyright 2010, D. Kalinsky Associates, All Rights Reserved.
This page Updated January 1, 2010