This course covers two aspects simultaneously: computing and restrictions. It is clear that computer systems have a major impact on our lives, and it is clear that any engineer or scientist should have a basic knowledge of its inner workings. But why should we worry about the restrictions?
Embedded systems, like any computer system, they have to perform a function. But we also have to meet very strict restrictions often:
In addition, an embedded system has to work in the worst case scenario, should be designed to meet the restrictions even in the worst case.
In this course students will learn to program microprocessor-based embedded systems and hardware design extensions to run in the worst case, considering all the constraints for the design and implementation. We begin with the most basic concepts to soon move to more advanced techniques.
This course provides the theoretical content required for the course "Electronic Systems Laboratory," which is taught in the second semester. The development environment and tools presented in this course will also be used in the laboratory. And this laboratory practices are designed to complement the approach taken in this subject.
We believe in learning by doing. There is no better way to learn how to build an embedded system to building it. Therefore, the course is organized around several projects using the Raspberry-Pi, a computer system the size of a credit card and very cheap that plugs into your TV and a keyboard.
At the end of the course, the student:
Program description with approximate distribution of class hours per subject:
1. Introduction to embedded systems and basic concepts. 4h (11%)
Definition of embedded system. Cyber-physical systems. Basics architecture, compilers, operating systems for embedded systems. Introduction to the Raspberry-Pi and Linux for embedded systems.
2. Microprocessors and platforms for embedded systems. Programming embedded systems. 10h (26%)
Microprocessors, microcontrollers and peripherals. Data Path and segmentation. Development Environment. Elements of the toolchain, error analysis. Initialization kernel and user space.
3. Design and analysis of programs. Concurrent and real time systems. 8h (21%)
Planning multi-tasking software. Real-time systems. Cyclic Executives. Planning priorities. Methods of Analysis of the execution time in worst case. Shares. Calculation of maximum blockage. Priority ceiling protocols.
4. Systems design techniques. Modeling (models of computation). 4h (11%)
Models of computation. Invariant. Equivalence and refined. Reliability. Accessibility Analysis. Model Checking. Quantitative analysis programs. Runtime analysis in worst case.
5. Low Power Design. Consumption optimization. 4h (11%)
Basics consumption in integrated circuits. Models of high-level consumption. Consumption reduction techniques in hardware. Consumption reduction techniques in software.
6. Design techniques to reduce memory usage. Memory Optimization. 4h (10%)
Design patterns to reduce memory consumption. Memory hierarchies. Technical architectural memory optimization. Scratchpad memories. Loop buffers.
7. Security in embedded systems. 4h (10%)
Introduction to security in embedded systems. Logical security and physical security. Auxiliary channel attacks. Countermeasures and design recommendations.
Proposal simple exercises embedded systems-based Raspberry Pi to approach different issues, making explicit the difficulties and challenges.
Classes theoretical exposition of the topics by the teachers.
Personal work to solve the exercises, delivered by the portal of the course moodle.
Pooling the results of the exercises and practical aspects of design and optimization.
Continued use of the forums moodle portal of the subject as basic communication mechanism.
• Proposed exercises throughout the course 50%
• Final exam without books or notes 50%