|Lecture hours||3 hours|
|Lab hours||2 hours|
|Digital resources||View on Evdoxos (Open e-Class)|
The key objective of this unique course on Embedded Systems is to present a good understanding of embedded systems architecture as well as a detailed methodology for the multilayered design of embedded systems and their applications with emphasis on network embedded systems. Main topics of the course are the understanding of communication processors and system architecture, the matching of requirements with system specifications, basic hardware design principles, Linux operating system porting on proprietary system architectures, as well as device driver programming and performance evaluation of (network) embedded systems. From this point on, system architecture is transparent to the development of embedded applications under certain limitations.
In the laboratory sessions, students will familiarize with the development of adaptive Linux kernel and filesystem images for a broad range of network embedded systems in the rise of the IoT era.
At the end of the course, students will be equipped with advanced expert and analytical knowledge for the consistent design, development and validation of embedded systems which include network devices (see Course Content). The obtained knowledge will allow the critical and analytical deepening as well as performing innovative research and critical development in the broad scientific domain of embedded systems and applications.
Students will be capable of:
- specifying and designing prototype embedded systems with network and peripheral devices which are interfaced to the communication processor meeting user requirements and cost limitations.
- designing the embedded system hardware using CAD tools for schematic and PCB design.
- adapting and porting the Linux operating system on the individual architecture of the embedded system and the underlying communication processor, its memory subsystem and network and peripheral devices, integrating desired functionality.
- configuring and building GNU/Linux applications using tools and toolchains.
- developing typical and complex embedded device drivers, with emphasis on network devices for network interfacing.
- developing embedded applications running on the embedded systems, including the proper adaptation of desktop application in the embedded domain.
- creating proper embedded root filesystems including embedded compilations of certain desktop applications.
- debugging, administering and optimizing applications aiming at resolving trade-off between system performance and memory and storage space requirements.
- evaluating performance of network embedded systems.
- analyzing the basic functionality of embedded systems through a closer look and consideration of the underlying hardware and software.
- analyzing architectural and technical information available in user, design and programming guides of the communication processor and the interfaced peripheral devices, and cross-checking them against corresponding embedded software implementations, recognizing the required differentiations per case and performing the corresponding porting of system source code, including the grouping of functionality in appropriate files and functions of the embedded software.
- applying the obtained knowledge and methodologies in a diverse range of system architectures including a central microprocessor (which could be different than the reference system) and network device controllers, either integrated on the communications processor module of the CPU or provided using external integrated circuit components.
- Communication Processors: Architecture, integrated communication processor module, peripheral devices, memory map, Ι/Ο ports, peripheral and network device controllers and operation (TDM, serial, ΑΤΜ, fast Ethernet, HDLC, multi-channel), interrupt handling.
- Hardware development tools: Schematic design, PCB design, BOM, lab equipment.
- Hardware System Architecture: Sample integrated access device (IAD) system architectures, modular design, EMI standards.
- Development tools, embedded software and processes: Cross-compilers, GNU cross-development tool chain, basic system initialization (JTAG), bootloader configuration, Linux kernel configuration, kernel architecture, debian packages, embedded filesystems.
- Device drivers: Peripheral and network devices (TDM, Ethernet, HDLC, multi-channel), device driver programming, Linux network API.
- Performance analysis of high bitrate network devices, performance optimization, interrupt moderation.
- Development and performance evaluation of an ATM network access device.
- Embedded applications: Network services (NAT, DHCP, routing, IP QoS, VLAN, VPN etc.), web-based management, video surveillance, telephony, Asterisk PBX, home automation and domotics, voice interaction.
- Restricted embedded systems: Detailed design of restricted embedded systems/devices, ultralow-power design, study of use cases.
- Lab projects.
- Building and configuring applications in GNU/Linux, tools for automating processes.
- Debugging techniques, administering and optimizing applications, handling trade-offs between performance and memory and storage size.
- Kernel structure, configuration, building and debugging. Useful configuration recipes.
- Building cross-compile toolchains and validation techniques.
- Kernel initialization process and adaptation.
- Linux root filesystem structure, difference from pseudo-filesystems, filesystem types and proper uses.
- Kernel image development tools.
- Meliones A. (2006): Network Embedded Systems, Course textbook.
- Wolf W. (2008): Computers as Components: Principles of Embedded Computing System Design. Elsevier, Inc.
- Ashenden P. (2007): Digital Design (VHDL): An Embedded Systems Approach Using VHDL. Morgan Kaufmann Publishing
- Wolf W. (2004): FPGA-Based System Design. Prentice Hall.
- Brown S. & Vranesic Z. (2008): Fundamentals of Digital Logic with VHDL Design, 3rd Edition, McGraw-Hill
- Pogarides D. (2013): Digital Design with VHDL: Principles and Practices, Disigma Publications (in Greek).
- Pedroni V. (2004): Circuit Design with VHDL, MIT Press.
- Souravlas S., Roumeliotis Μ. (2008): Digital Systems: Modeling & Simulation with VHDL, Tziolas Publishing (in Greek).
- Pogarides D. (2015): Embedded Systems: The AVR and Arduino Controllers, Disigma Publishing (in Greek).
- Kalovrektes Κ. (2012): Basic Principles of Embedded Systems, Varvarigou Publishing (in Greek).
- Apostolacos S. & Meliones Α. (2014): Satellite IP Radio Communications in Air Traffic Control: Design, Implementation and Evaluation of Telecommunication Systems (in Greek).
- Pekmestzi Κ. (2009): Micro Systems Ι: Microprocessors, Symmetria Publishing (in Greek).
- Pekmestzi Κ. (2015): Micro Systems ΙΙ: Microcontrollers, Symmetria Publishing (in Greek).
- Petrellis Ν, Alexiou G. (2012): Microprocessors and Design of Micro Systems, Kleidarithmos Publishing (in Greek).
- Pogarides D. (2014): Design of Micro Systems, Ion Publishing (in Greek).
- Rabaey J., Chandrakasan A., Borivoje N. (2003): Digital Integrated Circuits: A Design Perspective, 2nd Edition, Pearson.
- Patterson D. & Hennessy J. (2014): Computer Organization and Design: The Hardware/Software Interface, 5th Edition, Elsevier, Inc.
- Yaghmour K., Masters J., Ben-Yossef G. & Gherum P. (2008): Building Embedded Linux Systems, O’Reily.
- Peckol J. (2007): Embedded Systems: A Contemporary Design Tool, Wiley.
- Corbet J., Rubini A. & Kroah-Hartman G. (2005): Linux Device Drivers, 3rd Edition, O’Reilly.