ECEN 5623 RTES
Wed in ECCS 1B14: 6/4-8/6, 2025
Final Demos 8/6-11 (Signup Schedule)
4-8pm MDT: 4:00-6:45 Discussion
Activity and Help: 7-8pm
Coursera: ECEA-5315, ECEA-5316, ECEA-5317, ECEA-5318
ESE Program Information, ECEE Online Programs
Guest Speakers: Past R&D Guests (Contact siewerts@colorado.edu if interested)
Course Description: In this course, students will design and build a microprocessor-based embedded system application using POSIX real-time extensions for embedded Linux (or an optional RTOS such as FreeRTOS for creative projects). The course focus is on real-time analysis, design and development theory and practices as well as fundamentals of integrating microprocessor-based embedded system hardware, firmware and software to meet well-specified system requirements for operation within real-time constraints. Topics covered include: Rate Monotonic Analysis (RMA), logging, profiling and tracing, I/O, mission critical feature design, fault-tolerant memory and storage, multi-core processing, and asymmetric multi-processing methods for real-time design compared to RTOS and cyclic executive architectures. Comparison to a no-OS Cyclic Executive and other RTOS including FreeRTOS, VxWorks, and Zephyr are covered and students can use an alternative RTOS for a creative project, but the standard project to build a machine vision synchronome is based on Linux POSIX real-time scheduling (SCHED_FIFO and SCHED_DEADLINE) and related real-time features.
Creative project options include: stereo vision, computer vision, voice-over-IP, computer vision tracking systems, facial recognition and numerous related projects. The student will be introduced to the full embedded system lifecycle process in this course including: analysis, design (using Rate Monotonic theory and extended finite state machine specification), programming, hardware assembly, unit testing, integration and system testing.
The Synchronome project is recommended for summer and incorporates simple machine vision to build a "visual synchronome" with the Raspberry Pi and USB camera.
ESE Academic Honesty Policy - Complete Google form Agreement
TEXTBOOK: Real-Time Embedded Components and Systems with Linux and RTOS, Sam Siewert and John Pratt, December 2015, 978-1942270041, Mercury Learning, Amazon, E-book, CU Library, RTECS 2nd Ed DVD, ERRATA , RTECS 1st Ed CDROM
REFERENCES: 1) Linux Device Driver Development - Second Edition: Everything you need to start with device driver development for Linux kernel and embedded Linux, John Madieu, Packt Publishing; 2nd ed. edition (April 21, 2022), 978-1803240060, 2) Mastering Embedded Linux Programming - Third Edition: Create fast and reliable embedded solutions with Linux 5.4 and the Yocto Project 3.1 (Dunfell) 3rd ed. Edition, Frank Vasquez, Chris Simmonds, Packt Publishing; 3rd ed. edition (May 14, 2021), 978-1789530384, 3) Linux Kernel Programming: A comprehensive guide to kernel internals, writing kernel modules, and kernel synchronization, Kaiwan N Billimoria, Packt Publishing (March 19, 2021), 978-1789953435, 4) https://lwn.net/Kernel/ and https://kernel.org/
EXERCISES and ASSIGNMENTS: On CU Canvas - Please consult Canvas for all DUE dates! - CU Canvas
Course Prerequisites: Strong C programming skills (some C++ helpful), familiarity with operating systems, computer architecture and hardware/software interface and debug skills are required. Advanced skills and knowledge of embedded CPU multi-core threading and co-procesors are helpful, but not required. Before taking ECEE 5623, students should have a first course in related subjects such as ECEN 2120/2350, ECEN 3100/3350, and ECEN 1030/1310/CSCI 1300 and/or have completed ECEN 5803 and ECEN 5813 prior to taking this course. Real-time theory will be taught using embedded Linux and the real-time POSIX API. Students will be expected to work with camera interfaces and real-time I/O processing to build a verifiable predictable response application.
All students must purchase a Raspberry Pi 3b+ or 4b and a Logitech C270, or check out both to borrow from the ESE program from the "E-Store" on campus (The E-Store is located in ECEE 1B10. Hours vary by semester and are posted outside the E-Store door. The phone number is 303-492-7453).
Please install the standard R-Pi 3b+ or 4b 32-bit or 64-bit release OS image found here - https://www.raspberrypi.com/software/
CU ESE Academic Integrity Policy - student agreement form
Term-D: Lecture-Notes, ZOOM Videos
Helpful Coursera tutorials:Tutorial-Videos
Linux Tutorial Documentation: Linux Help
Lab Description: All students must check-out (from ECEE department and SA for course) or purchase a Raspberry Pi 3b+/4 and a Logitech UVC compatible USB camera. The course requires the student to install embedded Linux on a System-on-Chip processor such as the Raspberry-Pi 3b+ or R-Pi 4. For the Standard Project, a camera must be used and the Raspberry Pi is recommended based upon simplicity of using the USB and UVC kernel drivers with embedded Linux. In addition, students may want to set up an Oracle Virtual-Box Linux installation. For work with live video please note recommended cameras at https://www.ideasonboard.org/uvc/ and make sure you have access to UVC by testing your setup using starter code. All students must have this minimum setup. OpenCV is not required for the final Standard Project and is in fact discouraged (except for advanced C++ programmers), but not disallowed. See Summer Lecture notes on Home Lab setup.
All C embedded Linux code referenced in this course can be cloned from this github: https://github.com/siewertsmooc/RTES-ECEE-5623
ARM Tools: ARM Downloads
Mission Critical Code: NASA 10 Rules
RTES Code Quality: Avoiding Top Errors
FINAL PROJECT:
ONLINE: ANALOG CLOCK, STOPWATCH, NTP: COMBO CLOCK, STOPWATCH (recommended)
OpenCV (optional - not required),
Oracle Virtual-Box (optional - not required),
Ubuntu Linux LTS, 20.04/18.04 LTS Download (optional - not required),
Linux UVC Supported Cameras, e.g. Logitech C200 or C270 (required).
CASE STUDIES:
Mars Pathfinder and Emerging Aerospace: Summary Account, Authoritative Summary, C-SPAN Update, Archive, Rocketlab, Sierra Space, ULA, BOOM, Virgin Galactic, SpaceX, Test Driven Design
DESIGN and TOOLS:
Cheddar Tools, Linux Tracing, syslog, trace-cmd, ftrace, Kernelshark, Wireshark, ECC Memory Models, Ngspice, DPAA RT pattern, Blackboard pattern, UML RT patterns, Programming Languages, RedMonk