Embedded Systems are tiny computer systems that solve specific tasks. They can be part of more complex systems (vehicles, appliances) or autonomous (smart phones, measurement instruments). The lecture discusses the specific problems encountered when developing Embedded Systems software and the corresponding solutions. The course presents the following topics:
• The basic architecture of embedded systems
• Software Verification Techniques (e.g. unit / integration / system tests)
• Modular Software Development with Embedded Test Driven Development
• IO (buses, GPIO)
• Interrupts, Timers, PWM
• Digital Signal Processing (DSP) including Analog to digital and digital to analog converters, filtering, arithmetic
• low energy operation
In the exercise, students solve system-level programming tasks (C language) and develop a (relatively leasy) embedded system. To do so we will first use the Arduino platform (as a development board) and then switch to custom hardware based on an Atmel AVR microcontroller.
Students taking this course need to have basic knowledge and experience in programming and software development (ideally in C/C++), digital circuits, and computer architecture / organisation.