Module Overview

Embedded System Software Design

The aim of this subject is to learn about the design of software for embedded system. It covers areas of embedded system software design such asFunctional decomposition, Data-Flow analysis, State machine design and the fundamentals of Real-Time operating systems.

Module Code

ESSD H4000

ECTS Credits

5

*Curricular information is subject to change

Introduction to Software Design Process :

Documenting Requirements, Functional requirements, Non-functional requirements.Top-down design, Low-level module design. Real time constraints on embedded software design. The operation and use of a version control system such as Git. Online project hosting using GitHub.

Design Decomposition

Review of stepwise refinement, structured programming, Data abstraction and modularity. Top-down sequence based design with bottom-up shared module design, Software documentation, Context Diagram and use cases, Data Flow analysis, Data Flow graphs, Data Dictionary, Timing diagrams, Functional partitioning. Call Graphs, Interface definition, Unit testing, Incremental testing

State Machine/Statechart Design :

Finite state machines, Transition diagrams, Finite state machine with data path, Hierarchical state machines, State machine implementation and testing.

Real Time and Concurrent Design

Basic features of a real time operating system. Process and threads, Preemptive/ non-preemptive schedulers, RTOS implementation on a microcontroller such as the MSP430/MSP432. The mutual exclusion problem. Mutual exclusion semaphore. Implementation of a semaphore using atomic instructions or by disabling interrupts. Implementing resource allocation and inter-thread communication using semiphores. Alternative methods of inter-thread communication Performance/timing analysis for Real time design. Testing multi-threaded programs.

Module Content & Assessment
Assessment Breakdown %
Other Assessment(s)50
Formal Examination50