The main goal of this laboratory course is the design and implementation of a functional prototype of an embedded system, going through all the phases of the process, from the initial specification of the system, to the writing of the final technical report and the public presentation of the project. The course explores some important concepts already introduced in courses like Digital Electronic Systems and Laboratory of Digital Electronic Systems, approaching the design of embedded systems from an industrial perspective.
The course is based on a common project where each student takes responsibility for the design and implementation of one of its parts. The initial stages of the project, including the system specification, the organization of workpackages and the assignment of the different tasks according to the preferences of each student, take place in parallel with some classes introducing the concepts of embedded system and operating system design and implementation, the available prototyping boards based on ARM microcontrollers, FreeRTOS and GNU/Linux operating systems, the design of Linux device drivers, and the development of C programs for specific applications in embeded systems. For those students in charge of software development within the project, a special hands-on class introducing the development tools available in the lab is also presented.
Once the theoretical foundations of the course have been presented and the project tasks have been assigned, the students start the design and integration of the components of the embedded system, using their imagination and ability to work in teams to overcome the engineering problems (timing, mechanics, cost) that arise during the design of these systems. The course includes weekly or bi-weekly meetings where the students explain the advances achieved and the difficulties encountered, and forecast the expected progress. These meetings are a key aspect in the project development because the students can follow the evolution of the whole project. In addition, these meetings are the basis for the evaluation of the students� work which constitutes a large percentage of the final grade. At the end of the course, the students have to coordinate for the public presentation of their respective contributions within a public presentation of the project, and also for including their work in a common technical report.
1. Embedded systems: Definition of embedded system, advantages and drawbacks.
2. Operating systems: Definition of operating system, advantages and drawbacks. FreeRTOS and Linux operating systems.
3. Development of embedded systems: Environment, materials and tools for the development of embedded systems. Wire wrapping. ARM-based development boards.
4. Development of device drivers: Design and programming of drivers in GNU/Linux systems.
5. Functional prototyping of embedded systems: Design and implementation of a functional prototype. Design of a printed circuit board (optional). Test plan for the prototype.
6. Technical reports and oral presentations: Structure and contents of a technical report. Public presentation of a project.