Accessibility statement

Systems Programming for Embedded Devices - ELE00063M

« Back to module search

  • Department: Electronic Engineering
  • Module co-ordinator: Dr. Andrew Pomfret
  • Credit value: 10 credits
  • Credit level: M
  • Academic year of delivery: 2017-18

Module will run

Occurrence Teaching cycle
A Spring Term 2017-18

Module aims

  • To define systems programming as distinct from applications programming.
  • To introduce low-level programming concepts such as processor modes, direct interaction with the stack, and writing interrupt and exception handlers.
  • To explore the programming of a variety of task scheduling and synchronisation algorithms suitable for embedded systems.
  • To study the causes of deadlock and identify a range of solutions.
  • To provide practical experience of the above in the context of an ARM-based embedded system.
  • Definition of systems programming: Characteristics; differences from applications programming; languages; skills.
  • Systems programming basics: stacks; processor modes; exception handling models.
  • Operating systems: scheduling algorithms; cooperation and pre-emption; RTC kernels; hardware abstraction; resource management, introduction to FreeRTOS.
  • Synchronisation: Semaphores; mutexes; deadlock; the Coffman conditions; priority inversion and inheritance; mailboxes.
  • Systems-level process management: context switching; task handles and structures; queues.
  • Systems-level synchronisation support: race conditions, atomic operations, spinlocks.

Module learning outcomes

On completion of this module students are expected to be able to:

  • Understand how scheduling algorithms (cooperative, fixed priority, variable priority, run-to-completion, etc.) are written.
  • Understand mutual exclusion, deadlock, priority inversion, and priority inheritance and their relevance to operating system design and configuration.
  • Understand race conditions and the need for atomic operations, and the mechanisms available for their implementation on an ARM Cortex M device.
  • Implement an embedded system using a microcontroller and a small embedded operating system kernel.


Task Length % of module mark
N/A 100

Special assessment rules



Task Length % of module mark
N/A 100

Module feedback

Students will receive written feedback on their coursework within 4 weeks of submission.

Indicative reading

No key texts.

The information on this page is indicative of the module that is currently on offer. The University is constantly exploring ways to enhance and improve its degree programmes and therefore reserves the right to make variations to the content and method of delivery of modules, and to discontinue modules, if such action is reasonably considered to be necessary by the University. Where appropriate, the University will notify and consult with affected students in advance about any changes that are required in line with the University's policy on the Approval of Modifications to Existing Taught Programmes of Study.

Coronavirus (COVID-19): changes to courses

The 2020/21 academic year will start in September. We aim to deliver as much face-to-face teaching as we can, supported by high quality online alternatives where we must.

Find details of the measures we're planning to protect our community.

Course changes for new students