There are six modules on the MSc in Reliable Embedded Systems. Details are provided on this page.
Please note that:
[University of Leicester module ID: EG7510 - A1]
This module considers programming techniques for reliable embedded systems.
The module is taught mainly using the “C” programming language, with coverage of “MISRA C”.
This module provides an ideal “entry point” for the MSc programme.
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.
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.
This module is taught using microcontrollers, FPGAs and an “embedded PC” as the target.
Laboratory exercises employ RapidiTTy tools.
If you take this module as a short course, you will receive a permanent (non-commercial) licence for the latest version of RapidiTTy MCU as part of your course fee.
If you take this module as part of the MSc programme, you will receive a permanent (non-commercial) licence for RapidiTTy Pro as part of your course fee.
During this module, we assume that you know how to program (ideally in C, but – if you are prepared to do some homework before the module – a background in C++ or Java will also be appropriate).
Some experience with embedded systems is also assumed.
We don’t assume that you have had previous experience with the programming of reliable embedded systems.
Information about delivery dates …
[University of Leicester module ID: EG7540 - B1]
Developers of modern embedded systems have two main implementation options:
As the cost of FPGAs continues to fall, the opportunity to implement embedded systems using soft processor cores is becoming of increasing interest. This module addresses the key challenges involved in using FPGA technology in reliable embedded systems.
Seminar 1 – Introduction to the world of hardware definition languages
Basics of HDL and digital logic; Concurrent statements (AND, OR gates etc); Sequential statements (Flip-flops); Understanding FPGA technology; Introduction to HDL tools (synthesis, fit & route).
Seminar 2 – Introduction to VHDL
Why use VHDL? Packages, Components and architecture; Top level modules; Libraries (IEEE); Port map; Signals / variables; Process & sensitivity lists; FPGA vs. ASIC; Modelsim & test benches
Seminar 3 – Understanding a processor instruction set Why use the MIPS instruction set? Addition and Subtraction; Immediates; Data Transfers; Decision Instructions; Inequalities; Arithmetic Overflow; Logic Instructions; Function call conventions; Stack Memory; Register Conventions; Instruction Formats; R-Format Instructions; I-Format Instructions; Branches: PC-Relative Addressing; J-Format Instructions
Seminar 4 – From instruction set to computer architecture
Computer Components; The datapath; Datapath examples; CPU clocking; ALU requirements; Hardware building blocks; Memory; Register file; Supporting branch operations; Datapath to control signals; Controller implementation; Performance through pipelining; Problems for pipelining CPUs
Seminar 5 – Advanced computer architecture
ILP; Superscalar pipelines; VLIW; Out-of-Order pipelines; Branch prediction; Precise Interrupt mechanisms; History buffer; Re-order buffer; Future file
Seminar 6 – Memory Systems
The memory hierarchy; Memory caching; Cache design; Direct-mapped cache; Problems with direct-mapped cache; Cache hits; Cache misses; Fully associative cache; N-Way set associative cache; Block replacement policy; Improving miss penalty; DMA; MMU; TLB
Seminar 7 – Problems of predictability
While real-time embedded systems require predictable timing behaviour at a hardware level; Obtaining safe and accurate timing measurements; Design principles for a time-predictable processor; Issues with current processor architectures (Instruction set; Pipelines; Branch prediction; Memory systems; Documentation); Long timing effects; Timing anomalies.
Seminar 8 – Making processor behaviour more predictable
How to ensure that interrupt response times are predictable. The “one interrupt per microcontroller” rule. Exploring options for hardware scheduling.
Seminar 9 – Basic techniques for error prevention and error recovery
What can possibly go wrong? Why deal with errors at the hardware level? Comparison of timing behaviour for software- and hardware-based recovery mechanisms.
Seminar 10 – Case study: a highly-predictable processor
Review of course material. A complete design for a predictable processor. Programming the predictable processor. Comparison of timing behaviour for “standard” and predictable processor.
Exercises
In parallel with the seminars, the course involves a carefully-planned sequence of exercises. Using state-of-the art development tools and carefully-selected target hardware, you will create your own predictable processor over the course of the week. Starting with some introductory sessions in VHDL, you will then begin to create your processor (starting with the program counter, instruction memory and register file). By the end of the week, you will have created a complete processor (with watchdog timer), which you will ultimately be able to program in C.
No previous experience with VHDL or processor design is assumed prior to the start of the course.
Want to work Verilog (rather than VHDL) in this module? Please contact us for details.
This module is taught using an FPGA as the target.
If you are registered for the MSc programme, you will receive a package containing a target board, debugger, cables and other related equipment on loan for the duration of the module (free of charge). If you wish, you can purchase the equipment at the end of the module.
Laboratory exercises employ RapidiTTy FPGA.
If you take this module as a short course, you will receive a permanent (non-commercial) licence for the latest version of RapidiTTy FPGA as part of your course fee.
If you take this module as part of the MSc programme, you will receive a permanent (non-commercial) licence for RapidiTTy Pro as part of your course fee.
During this module, we assume that you know how to program (ideally in C, but – if you are prepared to do some homework before the module – a background in C++ or Java will also be appropriate).
Some experience with embedded systems is also assumed.
We don’t assume that you have had previous experience with FPGAs or with VHDL.
Please note that teaching material on VHDL (and some self-study exercises) will be distributed in advance of this module. We ask that you review this material before you begin the module.
Information about delivery dates …
[University of Leicester module ID: EG7550 - B2]
Does your company use a real-time operating system (RTOS)? Does every member of your development team fully understand how this RTOS works? If not, can you be sure that your products will operate reliably?
We believe that the best way to fully understand the operation and effective use of an RTOS is to build one from scratch. This module therefore involves designing and building a complete RTOS (with support for time-triggered tasks, event handling and task-pre-emption).
The focus throughout the module is on understanding the ways in which RTOS features (and configuration settings) may have an impact on system behaviour. The module considers issues such as conflicts over shared resources and explores practical solutions using “priority inheritance”, “timed resource access” and related protocols.
Lessons learned from the module can be applied when using a wide range of commercial RTOS products.
The module also considers the related issue of safety standards and the certification of reliable embedded systems. Coverage includes DO-178, IEC 61508 and IEC 61131.
This module is taught using an ARM7 microcontroller as the target.
If you are registered for the MSc programme, you will receive a package containing a target board, JTAG debugger, cables and other related equipment on loan for the duration of the module (free of charge). If you wish, you can purchase the equipment at the end of the module.
Laboratory exercises employ RapidiTTy MCU.
If you take this module as a short course, you will receive a full permanent licence for the latest version of RapidiTTy MCU as part of your course fee.
If you take this module as part of the MSc programme, you will receive a full permanent licence for RapidiTTy Pro as part of your course fee.
During this module, we assume that you know how to program (ideally in C, but – if you are prepared to do some homework before the module – a background in C++ or Java will also be appropriate).
Some experience with embedded systems is also assumed.
We don’t assume that you have had previous experience with real-time operating systems.
Information about delivery dates …
[University of Leicester module ID: EG7560 - B3]
This module considers the challenges involved in creating distributed (multi-processor) designs and the related challenges involved with multi-core (“Network on Chip”) designs.
The module covers key issues such as: Assigning tasks to processors / cores; Clock synchronisation and GALS designs; Suitable communication protocols (incl. RS-232, RS-485, CAN, Flexray); Ensuring reliable data transfers; Using multiple processor cores to enhance fault tolerance.
The module also discusses IEC 61499.
This module is taught using both microcontrollers and FPGAs as the targets.
If you are registered for the MSc programme, you will receive a package containing target boards, debugger hardware, cables and other related equipment on loan for the duration of the module (free of charge). If you wish, you can purchase the equipment at the end of the module.
Laboratory exercises employ RapidiTTy MCU and RapidiTTy FPGA.
If you take this module as a short course, you will receive full permanent licences for the latest version of both RapidiTTy MCU and RapidiTTy FPGA as part of your course fee.
If you take this module as part of the MSc programme, you will receive a full permanent licence for RapidiTTy Pro as part of your course fee.
During this module, we assume that you know how to program (ideally in C, but – if you are prepared to do some homework before the module – a background in C++ or Java will also be appropriate).
Some experience with embedded systems is also assumed.
We don’t assume that you have had previous experience with distributed or multi-core systems.
Please note that teaching material on VHDL (and some self-study exercises) will be distributed in advance of this module. We ask that you review this material before you begin the module.
Information about delivery dates …
[University of Leicester module ID: EG7520 - A2]
This module discusses the choice of software architecture for use in reliable embedded systems. The module aims to challenge established assumptions and explore the implications of different design decisions.
The module covers: Event-triggered designs; Time-triggered designs; Comparisons (predictability, power consumption, etc); Hybrid ET /TT designs; Case studies (e.g. scheduler and system designs for predictable and low power systems).
Both theoretical and practical exercises are used to compare the impact of different design decisions on system behaviour.
This module is taught using an ARM7 microcontroller as the target.
If you are registered for the MSc programme, you will receive a package containing a target board, JTAG debugger, cables and other related equipment on loan for the duration of the module (free of charge). If you wish, you can purchase the equipment at the end of the module.
Laboratory exercises employ RapidiTTy MCU.
If you take this module as a short course, you will receive a full permanent licence for the latest version of RapidiTTy MCU as part of your course fee.
If you take this module as part of the MSc programme, you will receive a full permanent licence for RapidiTTy Pro as part of your course fee.
During this module, we assume that you know how to program (ideally in C, but – if you are prepared to do some homework before the module – a background in C++ or Java will also be appropriate).
Some experience with embedded systems is also assumed.
We don’t assume that you have had previous experience with software / system architectures for reliable embedded systems.
Information about delivery dates …
[University of Leicester module ID: EG7530 - A3]
The aim of this module is to explore ways in which a company can capture the expertise of its best designers and make this available to other development teams within their organisation.
The approach discussed in this module is based on the use of “design patterns”.
The module covers: What are patterns? Patterns for reliable embedded systems; How are patterns developed? Understanding (and running) pattern workshops; Capturing design expertise (creating your own patterns); Workshops on company patterns.
This module is taught using both microcontrollers and FPGAs as the targets.
If you are registered for the MSc programme, you will receive a package containing target boards, JTAG debugger, cables and other related equipment on loan for the duration of the module (free of charge). If you wish, you can purchase this equipment at the end of the module.
Laboratory exercises employ RapidiTTy MCU.
If you take this module as a short course, you will receive a full permanent licence for the latest version of RapidiTTy MCU as part of your course fee.
If you take this module as part of the MSc programme, you will receive a full permanent licence for RapidiTTy Pro as part of your course fee.
During this module, we assume that you know how to program (ideally in C, but – if you are prepared to do some homework before the module – a background in C++ or Java will also be appropriate).
Some experience with embedded systems is also assumed.
We don’t assume that you have had previous experience with design patterns.
Information about delivery dates …