Software Design for Embedded Systems

Course Description

Software modelling. Software design patterns and architectures. Requirement specifications for software development. Software engineering processes. Versioning tools. Real-time systems. The role and structure of the operating system. Introduction to real-time operating systems. Organization and structure of input-output devices. Operating system kernel and multitasking. Interrupts. Context switching and task scheduling models. Synchronization and communication between tasks. Mutual exclusion, semaphores and monitors. Priority inversion and deadlock. Introduction to FreeRTOS operating system. Porting FreeRTOS for the target microcontroller platform. FreeRTOS practical examples. Task scheduling in multiprocessor systems. Virtual memory. Introduction to functional safety. Guidelines for development of real-time software for safety-critical applications. Testing, validation and verification of real-time software and safety-critical applications. Guidelines and standards for software development for the automotive and related industries.

Learning Outcomes

  1. Design architecure for complex software solutions for embedded systems.
  2. Analyze requirements for implementation of complex software solutions for embedded systems.
  3. Use modern methodologies and tools for team-based software development.
  4. Use real-time operating systems for development of solutions with hard real-time requirements.
  5. Modify real-time operating system for target platform.
  6. Use software testing procedures in safety-critical applications.
  7. Apply basic concepts of functional safety.
  8. Identify guidelines and standards for software development for embedded systems in automotive and related industries.

Forms of Teaching

Lectures

Seminars and workshops

Laboratory

Grading Method

Continuous Assessment Exam
Type Threshold Percent of Grade Threshold Percent of Grade
Laboratory Exercises 50 % 20 % 50 % 20 %
Seminar/Project 50 % 10 % 50 % 10 %
Mid Term Exam: Written 50 % 30 % 0 %
Final Exam: Written 50 % 40 %
Exam: Written 50 % 40 %
Exam: Oral 30 %

Week by Week Schedule

  1. System design principles: levels of abstraction (architectural design and detailed design), separation of concerns, information hiding, coupling and cohesion, re-use of standard structures
  2. Structural and behavioral models of software designs, Principles of secure design and coding
  3. Properties of requirements including consistency, validity, completeness, and feasibility, Evaluation and use of requirements specifications, Basic concepts of formal requirements specification
  4. Team participation in software development, Software quality assurance and the role of measurements
  5. Operating system roles, Computer and operating system components
  6. Device organization, Threads and processes, Kernel
  7. I/O structure, Interrupts
  8. Midterm exam
  9. Thread management and context switching, Synchronization and communication
  10. Mutual-exclusion, Semaphores and monitors
  11. Multiprocessor issues
  12. Segmentation, Paging, Hierarchical organization and virtual memory
  13. Testing fundamentals, Limitations of testing in particular domains, such as parallel or safety-critical systems, Static approaches and dynamic approaches to verification
  14. Validation planning; Documentation for validation, Software quality management and assessment
  15. Final exam

Study Programmes

University graduate
Electronic and Computer Engineering (profile)
(3. semester)

Literature

D. E. Simon (1999.), An Embedded Software Primer, Addison Wesley
Q. Li, C. Yao (2003.), Real-Time Concepts for Embedded Systems, CMP Books
R. Barry (2009.), Using the FreeRTOS Real Time Kernel - Standard Edition, FreeRTOS.org
G.C. Buttazzo (2011.), Hard Real-Time Computing Systems, Springer Verlag

For students

General

ID 222548
  Winter semester
5 ECTS
L3 English Level
L1 e-Learning
45 Lectures
2 Seminar
15 Laboratory exercises

Grading System

90 Excellent
75 Very Good
60 Good
50 Acceptable