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:

        • Real-time programming, 2 cu (cu is one study week)
        • Real-time design, 2 cu
        • Real-time operating systems, 2 cu
        • Project, 4 cu
      All the courses offer practical level knowledge and skills needed in the real- time and embedded system development. This emphasise differs from the theoretical approach used in many teaching institutions. Even, for example, a mathematical analysis of some scheduling algorithm can teach a lot to a student, this kind of academic exercise is seldom needed in the practical computer system development work.

      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.

       

      Laboratory works/Projects/ Learning environment/ Student info

      Project based learning guidelines / real- time and embedded systems module.

       
      The real- time and embedded systems module consists of the following course units: 
      • Real- time programming 
      • Real- time operating systems 
      • Software design (real- time systems)
      • Project course
      Project: 
       
      • Internals of a kernel of an operating system (personal project) 
      • Project of 4-6 students- earlier for ex. a simulation of a telephone switch in the UNIX 
        If You want to do a project based on Your own subject it must be close to the module subject area and accepted by the course unit teacher
      The assessment of projects: 
        • Technical merits (examples how to get a better grade):
        • A simple minimal working version, minor shortcomings possible (lowest acceptable grade 1)
        • Good coding practices, error free, a good testing organization (grade 2-3)
        • Extra features added to the minimal problem specification (for ex. graphical user interface), very good test environment organization and/or some demanding problem chosen for the project work (grade 4-5)
      The total assessment of a course unit: 
        • Exam (must be passed at least with the lowest grade)
        • Labs works 
      Documentation needed: 
        • Problem spesification/requirements specification
        • Design documentation (object oriented design)
        • User manual
        • Program listings
        • Makefile and library documentation
        • Library function interface specification (manual pages)
        • Test specifications and results
        • Test environment organization
      How to submit a ready project work: 
        • Deliver documentation 
        • Demonstrate and test with the course unit teacher
        • Answer questions 
      The cheating policy: 
        • Copying is strictly forbidden (Copying is difficult because most of the students have an unique project)
        • An independent board investigates documentation and codes
      Some literature: 
        • Web- based course materials by the course teacher
        • Other web- based course materials
        • Advanced Programming in the UNIX Environment (Stevens/Addison-Wesley) 
        • uC/OS Labrosse
        • Programming for the real world POSIX.4 (Bill Gallmeister/ O'Reilly) 
        • Operating Systems Design (Tanenbaum/Prentice Hall) 
        • Object oriented design (Rumbauch)
        • Programming manuals HP-UX ( Real-time programming/system call interface) 
        • IEEE POSIX 1003.1b standard (formerly 1003.4)