Programming Embedded Systems

Course Description

Embedded system concept and application areas. Embedded system architecture. Microcontroller structure and families. Processor cores, internal buses and memories. Integrated peripherals. Interrupt system. Software development tools for programming microcontrollers in C programming language. Structuring the software for embedded systems. Hardware initialization, exception handling, working with libraries. Debugging and testing embedded system. Using real-time operating systems on microcontrollers. Requirements analysis for embedded systems software development. Embedded system software and hardware architecture planning. Working with heterogeneous embedded systems.

Learning Outcomes

  1. Define elements and architecture of an embedded system.
  2. Analyze requirements for implementation of an embedded system hardware and software.
  3. Design architecture of hardware and software part of solution for an embedded system.
  4. Develop software for microcontroller.
  5. Use built-in microcontroller peripherals.
  6. Use real-time operating system on microcontroller.
  7. Use heterogeneous embedded systems.

Forms of Teaching

Lectures

-

Laboratory

-

Grading Method

Continuous Assessment Exam
Type Threshold Percent of Grade Threshold Percent of Grade
Laboratory Exercises 50 % 20 % 50 % 20 %
Mid Term Exam: Written 50 % 40 % 0 %
Final Exam: Written 50 % 40 %
Exam: Written 50 % 60 %
Exam: Oral 20 %

Week by Week Schedule

  1. Concept of embedded systems, Structure of basic computer system: CPU, memory, I/O, bus
  2. Microprocessors and microcontrollers, Microcontroller families (4-bit, 8-bit, 16-bit, 32-bit), Processor core
  3. Integrated peripherals, Interrupts, polling, interrupt structures: vectored, prioritied, Direct memory access, Memory architectures, hierarchies, caches
  4. Hardware initialization, Bare machine, Library tailoring, Semihosting
  5. Interrupt handling, Programming environments, emulators, simulators
  6. RTOS specifics in embedded systems, Context switching
  7. Porting real-time operating systems to specific HW platform, Hardware abstraction layer
  8. Midterm exam
  9. Real-time operating systems programming patterns in industrial applications, RTOS tools
  10. Requirements analysis and identification of optimal HW/SW platform, Partitioning and integration of HW/SW solution
  11. Design methodologies for HW/SW co-design, Architecture generation - program translation to architecture
  12. High level programming support for heterogeneous embedded systems (DSL- Domain Specific Language support: streaming, signal processing, etc;)
  13. Programming models for HW/SW codesign, heterogeneous systems, accelerators (GPU, coprocessors, programmable logic)
  14. High-level memory management for embedded systems runtimes (garbage collection, memory allocation, flash wear leveling)
  15. Final exam

Study Programmes

University graduate
Audio Technologies and Electroacoustics (profile)
Free Elective Courses (1. semester)
Communication and Space Technologies (profile)
Free Elective Courses (1. semester)
Computational Modelling in Engineering (profile)
Free Elective Courses (1. semester)
Computer Engineering (profile)
Free Elective Courses (1. semester)
Computer Science (profile)
Free Elective Courses (1. semester)
Control Systems and Robotics (profile)
Free Elective Courses (1. semester)
Data Science (profile)
Free Elective Courses (1. semester)
Electrical Power Engineering (profile)
Free Elective Courses (1. semester)
Electric Machines, Drives and Automation (profile)
Elective Courses of the Profile (1. semester)
Electronic and Computer Engineering (profile)
Elective Courses of the Profile (1. semester)
Electronics (profile)
Free Elective Courses (1. semester)
Information and Communication Engineering (profile)
Free Elective Courses (1. semester)
Network Science (profile)
Free Elective Courses (1. semester)
Software Engineering and Information Systems (profile)
Free Elective Courses (1. semester)

Literature

D. E. Simon (1999.), An Embedded Software Primer, Addison Wesley
Wayne Wolf (2008.), Computers as Components: Principles of Embedded Computer Systems Design, Morgan Kaufmann
Q. Li, C. Yao (2003.), Real-Time Concepts for Embedded Systems, CMP Books
M. Vučić (2007.), Upotreba mikrokontrolera u ugrađenim računalnim sustavima, FER, ZESOI

For students

General

ID 222691
  Winter semester
5 ECTS
L0 English Level
L1 e-Learning
45 Lectures
12 Laboratory exercises

Grading System

90 Excellent
75 Very Good
60 Good
50 Acceptable