Software Design for Embedded Systems
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.
- Design architecure for complex software solutions for embedded systems.
- Analyze requirements for implementation of complex software solutions for embedded systems.
- Use modern methodologies and tools for team-based software development.
- Use real-time operating systems for development of solutions with hard real-time requirements.
- Modify real-time operating system for target platform.
- Use software testing procedures in safety-critical applications.
- Apply basic concepts of functional safety.
- Identify guidelines and standards for software development for embedded systems in automotive and related industries.
Forms of Teaching
Seminars and workshops
Seminars and workshops
|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
- System design principles: levels of abstraction (architectural design and detailed design), separation of concerns, information hiding, coupling and cohesion, re-use of standard structures
- Structural and behavioral models of software designs, Principles of secure design and coding
- Properties of requirements including consistency, validity, completeness, and feasibility, Evaluation and use of requirements specifications, Basic concepts of formal requirements specification
- Team participation in software development, Software quality assurance and the role of measurements
- Operating system roles, Computer and operating system components
- Device organization, Threads and processes, Kernel
- I/O structure, Interrupts
- Midterm exam
- Thread management and context switching, Synchronization and communication
- Mutual-exclusion, Semaphores and monitors
- Multiprocessor issues
- Segmentation, Paging, Hierarchical organization and virtual memory
- Testing fundamentals, Limitations of testing in particular domains, such as parallel or safety-critical systems, Static approaches and dynamic approaches to verification
- Validation planning; Documentation for validation, Software quality management and assessment
- Final exam
Electronic and Computer Engineering (profile)(3. semester)
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
L3 English Level
15 Laboratory exercises
75 Very Good