The real- time and embedded system course module
We can call as an embedded system any equipment which is controlled by a programmed microprocessor hidden inside. A modern car is more as "a computer system" than a personal computer in the sense that tens of microprocessors are controlling different functions of it. Also the most important industry of our days, data communication, is based on embedded systems. Computer data communication uses many types of dedicated equipment to switch and route data. One of the oldest and biggest of these is a digital telephone switch with tens of microprocessors connected via a common communication bus architecture. The number of program code lines of this kind system can be millions. Building up the functionality of small modern mobile phone takes also hundreds of thousands of code lines. We can't see these embedded controllers, so most of people underestimate the importance of the embedded systems area. One measure to understand the importance of the embedded systems is the percentage of all processors produced used for this purpose. It is already very near to 100% (much more than 99%), even the number of personal computers and business computers is also growing rapidly.
Computer systems controlling for example factories, air traffic and electrical distribution are called real-time systems. The main characteristics of the real-time systems different from the business computer systems are requirement of a fast and guaranteed response time and dedicated to one single application.
The design and development of the embedded systems and the real-time systems has plenty of common technical similarities. Both types of systems are generally based on concurrent tasks running all the time.
Most of the development hours are used with software, still, also software developers must understand hardware related subjects as electronics and digital techniques more than in the business computer field.
This course module is dedicated to the software, but other course modules and courses supports it as to the data communication concepts, electronics, digital techniques, measurement and automation systems and computer architectures. Also other courses offer the basic software skills needed to participate to this advanced specialised module.
The module consists of four courses:
All the course lecture and laboratory material is available from course web pages.
The real-time programming course is the introduction to the subject. Lectures introduce students to the multitasking and other concurrent system concepts using IEEE POSIX system calls. Laboratory works familiarise students to practical examples of the inter process communication (IPC) like semaphores, shared memory, Berkeley sockets, pipes and signals. One dedicated laboratory is equipped with Linux workstations for student work. The differences with POSIX 100031.b are discussed. Also basic program development techniques as makefiles and libraries are presented.
The real-time design course has an object oriented approach. Older design methodologies are discussed shortly, but the emphasise is on the UML modelling language, in addition to main specialities and nature of the real-time systems. Dynamic modelling like state charts and sequence diagrams are used in the real-time modelling more than in other software development and this is taken into account in the course. Laboratory exercises give students the better understanding of the practical design work. Latest CASE modelling tools are available in the laboratory.
The real-time operating system course starts with deepening of student’s knowledge of computer system tools and techniques commonly used: procedure calling conventions, object and binary file formats, dissassemly and debugging. The course continues with short general level discussion of operating system concepts as scheduling, process synchronisation, system calls, memory management, interrupts. The main approach is on the basic operating system kernel internals and I/O- device programming, presented at code level. Students work with course teacher’s own compact teaching kernel WBS.
This kind of approach is not only to teach a student to write a kernel but also get a deep overall understanding of the internals of a computer system. This is widely realised important in the embedded systems development.
The project course consists of a big software project, typically done by 2-4 students. With such a project a student can get more deep understanding of the whole subject area and develops his/her group work skills. The project work can be a real industry project from some of collaborating companies working mostly in the modern high tech communication system area, the world leading mobile phone company NOKIA as an example.
The real- time and embedded
systems module consists of the following course units:
|
Project:
|
The assessment of projects:
|
The total assessment of a course
unit:
|
Documentation needed:
|
How to submit a ready project
work:
|
The cheating policy:
|
Some literature:
|