Programming Industrial Embedded Systems
Knowledge on particular aspects of hardware and software architecture of complex industrial real time embedded systems. Knowledge on structure of real-time operating systems, procedures of porting OS to target hardware, device driver programming and development of user applications. Fundamentals of porting and using some of the well known operating systems for embedded systems (FreeRTOS, Embedded Linux, uCLinux and eCos).
- recognize specific aspects of hardware and software architecture of complex industrial real time embedded systems.
- use software development tools for complex embedded systems.
- modify chosen OS in order to adapt it to the target hardware (FreeRTOS, Embedded Linux, uCLinux and eCos).
- develop device drivers for real-time operating systems.
- develop user applications for real-time operating systems.
- estimate and choose optimal hardware resources for chosen real-time operating system.
Forms of Teaching
Lectures are focused on theoretical and practical aspects of key course topics (two hours per week).Exams
Continuous evaluation encompasses two written exams (midterm and final exam). Students who do not satisfy at continuous evaluation must undertake both the written and oral exam. Students are questioned at the laboratory exercises and they also obtain the points for a practical project.Laboratory Work
Students are obliged to take laboratory exercises (15 hours). During the laboratory exercises, students learn about principles of complex embedded software development on practical examples by developing firmware for microcontroller development kits.Consultations
Consultations for students are held once per week.Seminars
Students develop practical project solutions (in groups of up to three students), following the ideas they propose themselves. They use the insights and knowledge acquired at the lectures and laboratory exercises. They demonstrate the knowledge about principles and guidelines for development of the complex embedded software through the implementation of practical project solutions.
|Type||Threshold||Percent of Grade||Threshold||Percent of Grade|
|Laboratory Exercises||50 %||10 %||50 %||10 %|
|Seminar/Project||0 %||10 %||0 %||10 %|
|Mid Term Exam: Written||50 %||40 %||0 %|
|Final Exam: Written||50 %||40 %|
|Exam: Written||50 %||40 %|
|Exam: Oral||40 %|
Week by Week Schedule
- Introduction to embedded systems. Examples of embedded systems. Embedded systems architecture and engineering.
- Development of complex embedded systems. Embedded hardware architecture. Embedded software architecture. Embedded software development: hosts, targets, toolchains. Real-time operating systems (RTOS).
- Review of operating system basics: multitasking, task scheduling, synchronization mechanisms, intertask communication, memory management. RTOS examples.
- ARM Cortex hardware architecture. Software development with GNU toolchain.
- Complex embedded software development (without RTOS): file system, networking. Embedded web server example.
- FreeRTOS operating system. Task management, queue management, interrupt management, resource management, memory management.
- FreeRTOS case study: embedded web server. High-level services integration with FreeRTOS: file system, TCP/IP networking, web server. Practical example.
- Midterm exam
- Embedded Linux overview. Target hardware and distributions. Kernel, bootloader, device drivers, file system, networking, command-line interface (CLI).
- Configuring software development environment. Building the toolchain. Kernel configuration. Building the kernel.
- Booting with U-Boot. Creating root file system. Target emulation. Application development and debugging.
- Device drivers development. Complex application examples.
- uCLinux overview. Target hardware. Limitations and differences between uCLinux and standard Linux distributions. Porting uCLinux. Complex application examples.
- eCos architecture. Hardware abstraction level (HAL). Kernel. Building eCos system. Booting with RedBoot. Example applications.
- Final exam