Real-Time Project for Embedded Systems
Real-Time Project for Embedded Systems
This course is part of Real-Time Embedded Systems Specialization
Instructor: Sam Siewert
3,638 already enrolled
Included with
Learn more
Ask Coursera
Recommended experience
Recommended experience
What you'll learn
Real-time system design concepts and decomposition of functions and indentification of key services
De-coupling of I/O from real-time processing to avoid response time over-runs
Using AMP design principles with Rate Monotonic policy, analysis and theory
Using AMP design principles with best-effort and parallel real-time co-processing
Skills you'll gain
- Systems Analysis
- System Requirements
- System Programming
- System Monitoring
- Performance Testing
- Requirements Analysis
- Performance Tuning
- Systems Integration
- Embedded Systems
- System Design and Implementation
- Software Design
- Systems Architecture
- Software Architecture
- OS Process Management
- Verification And Validation
- Real Time Data
Tools you'll learn
Details to know
3 assignments
See how employees at top companies are mastering in-demand skills
Build your subject-matter expertise
- Learn new concepts from industry experts
- Gain a foundational understanding of a subject or tool
- Develop job-relevant skills with hands-on projects
- Earn a shareable career certificate
There are 5 modules in this course
This course can also be taken for academic credit as ECEA 5318, part of CU Boulderβs Master of Science in Electrical Engineering degree.
The final course emphasizes hands-on building of an application using real-time machine vision and multiple real-time services to synchronize the internal state of Linux with an external clock via observation. Compare actual performance to theoretical and analysis to determine scheduling jitter and to mitigate any accumulation of latency. The verification of the final project will include comparison of system timestamp logs with a large set of images which can be encoded into a video. The final report will be peer reviewed and the captured frames and video uploaded for scripted assessment. Course Learning Outcomes: β Outcome 1: Decompose a problem and set of basic real-time requirements into software modules and Linux POSIX real-time threads β Outcome 2: Analyze services in terms of C (execution time), T (request period), and D (deadlines for completion) to establish feasibility and margin for meeting requirements β Outcome 3: Design and construct a solution for a native Linux system equipped with a webcam to verify and demonstrate system synchronization using machine vision processing This course includes specific hardware and software requirements. Please review the FAQ below for complete details.
This module provides background on the RTES project including the concept of a "visual synchronome", where a camera is used to synchronize time between an external clock and an embedded computer. The project requires synchronization at both 1 Hz and 10 Hz, where the real-time services must acquire camera frames, select stable (non-blurred) frames and write them to a flash file system. The project requires a good understanding of RMA, real-time scheduling, and design principles for multi-service real-time systems.
What's included
14 videos14 readings1 assignment1 peer review1 discussion prompt
14 videosβ’Total 189 minutes
- Course Goals and Learning Objectivesβ’6 minutes
- Course Detailed Overview with Assumed Prior Knowledgeβ’13 minutes
- Background Concepts Used for RTES Projectβ’30 minutes
- Detecting External Clock "Tick" with Machine Visionβ’12 minutes
- Final Peer Review Assessment of RTES Projectβ’32 minutes
- Verifying Frame Synchronization to External Clock on Every Frameβ’0 minutes
- RTES Project Demonstration of 1 Hz Solutionβ’4 minutes
- RTES Project Demonstration of 10 Hz Solutionβ’7 minutes
- Design Notations Used for Software Servicesβ’9 minutes
- Code Walkthrough: V4L2 (Video for Linux 2) Camera Interface Demonstrationβ’18 minutes
- Code Demonstration: Frame Difference Interactive OpenCV Exampleβ’0 minutes
- Use of Cheddar for Timing Analysisβ’18 minutes
- General Methods for Tracing and Profiling RT Embedded Systemsβ’27 minutes
- Linux Syslog, GNU Profiling, and HTOP for RTES Projectβ’13 minutes
14 readingsβ’Total 181 minutes
- Course Updates and Accessibility Supportβ’1 minute
- Non-Credit Students: Welcome and Where to Find Helpβ’10 minutes
- Hardware & Software Requirementsβ’10 minutes
- EXTRA HELP: Home Lab Set Upβ’10 minutes
- Textbook: RTECS with Linux and RTOSβ’10 minutes
- CODE: CU Boulder Linux Example Code - Publicβ’10 minutes
- Guidelines for Code Quality Peer Reviewsβ’10 minutes
- Code Walkthrough for Peer Reviewsβ’10 minutes
- POSIX Pthread Programming Resourcesβ’10 minutes
- Basic Makefile Skills by Exampleβ’10 minutes
- Printable RTES Project Peer Review Rubricβ’10 minutes
- Run with "sudo" and/or Check File Permissionsβ’10 minutes
- More Software Design Methods and Notationsβ’60 minutes
- Using a Linux RAM Disk and/or Software RAIDβ’10 minutes
1 assignmentβ’Total 30 minutes
- Basics of Real-Time Systemsβ’30 minutes
1 peer reviewβ’Total 360 minutes
- Peer Review of Initial Services, RMA and Timing Diagramsβ’360 minutes
1 discussion promptβ’Total 10 minutes
- Introduce Yourselfβ’10 minutes
Different design approaches for the RTES project are reviewed in this module including the "shot gun" start, where clock ticks are detected once at the start, the full synchronome continuous tick detection approach, and different options for implementation. RTES project designers must decide on a camera interface, for example a V4L2 (Video for Linux 2) interface to UVC (Universal Video Controller) driver, or an OpenCV interface to a camera.
What's included
7 videos4 readings1 assignment1 peer review
7 videosβ’Total 98 minutes
- Simple Design that Does Not Work and Whyβ’26 minutes
- Better Design Example, But Not Fault Tolerantβ’13 minutes
- Better Design Somewhat Fault Tolerantβ’10 minutes
- Best Practice Design Exampleβ’17 minutes
- External Clock Tick Detection Starter Code Walk-throughβ’9 minutes
- Simple Frame Capture of 1800 Frames in One Processβ’13 minutes
- Sequencing RT Services Using a Software Interval Timerβ’11 minutes
4 readingsβ’Total 40 minutes
- Request for Proposal - Goals and Objectives for the Projectβ’10 minutes
- Download RTES Project Starter Code and Build and Reviewβ’10 minutes
- Notes on Clocks to Use for RTES Projectβ’10 minutes
- A few Important Notes on Jetson Nanoβ’10 minutes
1 assignmentβ’Total 30 minutes
- Project Design, Implementation, and Functional Testingβ’30 minutes
1 peer reviewβ’Total 360 minutes
- Code Walkthrough of Project Starter Codeβ’360 minutes
To ensure that a real-time design is properly implemented, timing analysis based upon system logging and tracing must be used to verify that actual timing compared to theoretical RMA. This module provides and overview of methods and suggests the most efficient methods to debug and verify timing of the RTES project. The module includes a 1 Hz peer review of design and code to assist with RTES project improvement for external clock synchronization using camera images with a ticking analog clock.
What's included
3 videos1 reading1 programming assignment1 peer review
3 videosβ’Total 25 minutes
- Coding Tips and Debuggingβ’3 minutes
- Analysis: Methods of Multi-Service Timing Verificationβ’8 minutes
- Review of Common Mistakesβ’14 minutes
1 readingβ’Total 10 minutes
- Most Common RTES Project Errors - A List to Considerβ’10 minutes
1 programming assignmentβ’Total 180 minutes
- Final Project Operation at 1 Hzβ’180 minutes
1 peer reviewβ’Total 360 minutes
- Peer Review of 1 Hz Monotonicity and Glitch Free Operationβ’360 minutes
This module covers methods of tracing and profiling for the overall RTES project platform including networking, system profiling, and methods to trace real-time services in particular. The module includes a 10 Hz peer review of design and code to assist with RTES project improvement for external clock synchronization with a digital stopwatch at this higher rate compared to 1 Hz.
What's included
3 videos1 programming assignment1 peer review
3 videosβ’Total 20 minutes
- Using Sysprof and Kernel Shark on Linuxβ’9 minutes
- Wireshark Network Transport Tracing with Linuxβ’4 minutes
- Code Walkthrough: Demonstration of Syslog for Timing Analysisβ’7 minutes
1 programming assignmentβ’Total 180 minutes
- Final Project Operation at 10 Hzβ’180 minutes
1 peer reviewβ’Total 360 minutes
- 10 Hz Design Walkthroughβ’360 minutes
The overall RTES project should be completed for this module. Students can review tips and examples for how to prepare their design materials, their RMA, and code for review. The process for inspection to verify and validate the design based upon the RTES project rubric is defined here as well.
What's included
3 videos1 reading1 assignment1 peer review
3 videosβ’Total 61 minutes
- Example Peer Review Design Demonstration - V4L Exampleβ’22 minutes
- Example Peer Review Design Walk-through - OpenCV Exampleβ’25 minutes
- Take-Away and Final Notes for Courseβ’14 minutes
1 readingβ’Total 10 minutes
- More Creative RTES Project Examplesβ’10 minutes
1 assignmentβ’Total 30 minutes
- Project and Final Take-Away Major Conceptsβ’30 minutes
1 peer reviewβ’Total 540 minutes
- Final Design and RTES Solution Presentationβ’540 minutes
Earn a career certificate
Add this credential to your LinkedIn profile, resume, or CV. Share it on social media and in your performance review.
Build toward a degree
This course is part of the following degree program(s) offered by University of Colorado Boulder. If you are admitted and enroll, your completed coursework may count toward your degree learning and your progress can transfer with you.ΒΉ
Instructor
Offered by
Explore more from Electrical Engineering
- Status: Free TrialU
University of Colorado Boulder
Course
- Status: Free TrialU
University of Colorado Boulder
Course
- Status: Free Trial2
28DIGITAL
Course
- Status: Free TrialU
University of Colorado Boulder
Specialization
Why people choose Coursera for their career
Advance your career with an online degree
Earn a degree from world-class universities - 100% online
Frequently asked questions
System Requirements
β A Windows or Mac computer for remote access to the Raspberry Pi
β Home network with internet access and a router that allows the Raspberry Pi to be reached on the local network (Wi-Fi or Ethernet)
β SSH enabled on the Raspberry Pi (required)
β VNC enabled on the Raspberry Pi (optional, for remote desktop access)
Hardware Requirements
To complete this specialization, you will need a home lab setup based on a supported embedded Linux platform. The following configuration is required and tested for all course activities.
Required Hardware
β Embedded Linux hardware platform - Recommended: Raspberry Pi 3B+ (Raspberry Pi family or equivalent)
β MicroSD card (16 GB minimum; 32 GB recommended)
β 5V / 2.5A power supply with switch
β UVC-compatible USB camera (USB 2.0 or better)
β HDMI cable
β HDMI monitor + keyboard + mouse (for initial setup only)
β Network connection between the Raspberry Pi and your home router (Wi-Fi or Ethernet)
Recommended Hardware Configuration
Raspberry Pi 3B+, which may be sourced from:
β SparkFun(~$44, board only) or
β CanaKit Raspberry Pi 3 Model B+ Starter Kit(~$125, includes board) plus:
β MicroSD card (preloaded with NOOBS or Raspberry Pi OS)
β Heat sinks
β Case
β 5V / 2.5A power supply with switch
β HDMI cable
β UVC-compatible USB Camera (USB 2.0 or better)
Alternative Hardware Configurations
While the Raspberry Pi 3B+ is the officially supported platform, you may use other Linux-capable embedded platforms at your own risk:
β Raspberry Pi 4 (offers USB 3.0, 2+ GB RAM, and Gigabit Ethernet)
β Jetson Nano, DE10-SoC, or similar boards (advanced users only; self-support required)
Note: All starter code provided in this specialization is tested and verified on the Raspberry Pi 3B+ with Raspberry Pi OS (formerly Raspbian).
Software Requirements
Ability to install and use one of the following remote-access tools on your computer:
β MobaXterm (recommended for Windows)
β PuTTY
β VNC Viewer
To access the course materials, assignments and to earn a Certificate, you will need to purchase the Certificate experience when you enroll in a course. You can try a Free Trial instead, or apply for Financial Aid. The course may offer 'Full Course, No Certificate' instead. This option lets you see all course materials, submit required assessments, and get a final grade. This also means that you will not be able to purchase a Certificate experience.
When you enroll in the course, you get access to all of the courses in the Specialization, and you earn a certificate when you complete the work. Your electronic Certificate will be added to your Accomplishments page - from there, you can print your Certificate or add it to your LinkedIn profile.
More questions
Financial aid available,
