5-day training course: Prog. Techniques for Reliable Embedded Systems

Cars, aircraft, medical equipment through to fridges, TVs, MP3 players and even (wet) razors are all good examples of modern systems which contain embedded processors. Overall, it is usually estimated that for every desktop computer chip sold, 100 processors are sold for embedded systems.

As this field grows, there are many job opportunities available for individuals who understand how to develop reliable embedded systems.

Using a practical mixture of informal seminars and “hands on” training sessions, this 5-day introductory course has been designed to give you the key skills required to make rapid progress in this exciting field.

This course can be used as the first module on the MSc in Reliable Embedded Systems.


Where and when will this course be delivered next?

This course will be delivered from 22-26 May 2010 in Penang, at PSDC.


Course brochure

You can download a brochure for this course.


Free book!

Cover of Embedded C

This module will be delivered by Professor Michael J. Pont from the University of Leicester, UK.

Everyone who attends this module will receive a signed copy of Prof. Pont’s best-selling book “Embedded C”.

Please note: places are strictly limited (a maximum of 20 places): please contact us to reserve your place today.


Price

This course costs RM 3500 per place.

This fee will be refunded if you subsequently register for the MSc in Reliable Embedded Systems.

Please contact us for further details.


Trainer biodata

Michael J. Pont holds a BSc (Electrical and Electronic Engineering) from the University of Glasgow and a PhD (Computer Science) from the University of Southampton.

Michael is Professor of Embedded Systems and Head of the Embedded Systems Laboratory at the University of Leicester: he is also CEO of TTE Systems Ltd.

Michael is author / co-author of more than 100 technical publications and author of three books (“Patterns for Time-Triggered Embedded Systems”, “Embedded C” and “Software Engineering with C++ and CASE Tools”).


Pre-requisites

This is an introductory course. No previous experience with embedded systems is required.

Some previous programming experience in a high-level language (such as C, C++ or Java) is assumed at the start of the course. If you have not had this experience, suggestions for background reading can be provided.


Course objectives

After attending this course, participants should:

  • Understand what an embedded system is;
  • Have a good knowledge of the three key hardware platforms used to create modern embedded systems: microcontrollers, field-programmable gate arrays and “embedded PCs”;
  • Be able to write high-quality software for reliable embedded systems;
  • Understand how to test and debug existing embedded systems;
  • Understand the key concepts of “real-time” systems and the importance of timing behaviour when creating reliable embedded systems.
  • Be ready to join the MSc in Reliable Embedded Systems if they wish to do so.

Course contents

Day 1: An introduction to “Embedded C”

On Day 1, the world of embedded systems is introduced using a series of short seminars interleaved with practical sessions which are designed to reinforce the key concepts. C is the standard programming language for embedded systems: working with a processor simulator and an 8-bit target, you will learn how to create your first programs in “Embedded C”. Starting by flashing an LED, you will soon move on to learn how to create reliable code for working with switches and taking control of the real world.

Day 2: Real-time “Embedded C”

On Day 2, we move on to look at the need for simple operating systems, and the concepts of “real time” constraints. We consider and discuss concepts such as worst-case execution time, task jitter and time-out mechanisms. By the end of the day, you’ll have created and tested a complete set of code for your first realistic embedded systems.

Day 3: Exploring modern hardware platforms

In the first two days of this course, we focus on software development and you’ll work with a simple processor simulator to test your code. On Day 3, we move into the 21st century: you’ll by start creating code for a modern (32-bit) microcontroller with an ARM® processor core. After you’ve got your first system running, you’ll learn about debugging (including the use of JTAG) and timing analysis.

Modern embedded systems use a wide range of platforms. To round off Day 3, we’ll look at two further targets.

  • In recent years, the Intel® Atom processor has become the basis of many “embedded PCs”. We’ll consider some of the challenges involved in creating reliable systems based on this type of platform. As you’ll learn, your embedded PC will run happily without a “conventional” operating system (we won’t be using Windows® or Linux: instead we’ll be programming “at the bare metal” for maximum predictability and performance).
  • We’ll then go on to look at “Field programmable gate arrays” (FPGAs). FPGAs are already a popular implementation platform for developers of embedded systems (and some people believe that they will be the platform of choice for the majority of new systems within the next few years). We’ll introduce you to some of the challenges and opportunities offered by this exciting new platform. As you’ll see, FPGAs provide enormous flexibility, allowing you to create a custom processor target for every project.

Day 4: Dealing with multiple tasks

In Day 4, we begin to look at some more advanced topics, including issues associated with task design (including task pre-emption). We’ll explore rate-monotonic (RM) and earliest deadline first (EDF) scheduling for single-processor systems. We’ll end Day 4 by taking a first look at techniques for working with distributed systems (using multiple processors connected by means of a Controller Area Network - or CAN - bus).

Day 5: Programming guidelines, MISRA C and design patterns

On Day 5, we’ll begin by discussing the use of the MISRA C programming guidelines and the ways in which the use of this “safe subset” of the C language can assist in the creation of reliable systems (there’s a lot to take in: you’ll be provided with your own printed copy of these guidelines to review at your leisure). We’ll then introduce the topic of “design patterns” and begin to see how this approach can be used to help organisations capture and re-use good design experience.


Learning goals

  • To learn how to write reliable programs in “embedded C”;
  • To learn how to create reliable, power-efficient and cost-effective embedded systems using microcontrollers;
  • To learn how to use x86 processors (“embedded PCs) for prototyping and for low-volume production of very powerful embedded systems;
  • To learn how to create very flexible embedded systems using field-programmable gate arrays (FPGAs).

Methodology

This course is taught through a carefully-planned combination of seminars and practical (laboratory) classes. Problems will be set during seminars and in laboratory sessions. Case studies will be used extensively in the laboratory sessions.


Who should attend

The course is intended for anyone who is interested in working in the field of embedded systems. No previous experience of embedded systems is required, but some previous programming experience will be useful. The course will be particularly well suited for people with a technical background (e.g. mechanical engineering or “desktop” computer programming) who wish to retrain to take advantage of the huge employment opportunities in the field of embedded systems.


Links to the MSc programme in Reliable Embedded Systems

This course provides an ideal foundation for people who are interested in joining the University of Leicester’s MSc programme in Reliable Embedded Systems.