We may earn an affiliate commission when you visit our partners.
Course image
Sam Siewert

This course can also be taken for academic credit as ECEA 5318, part of CU Boulder’s Master of Science in Electrical Engineering degree.

Read more

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

Enroll now

What's inside

Syllabus

RTES Project Goals and Objectives
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.
Read more
Completion of RTES Project and Preliminary Functional Testing
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.
Timing Analysis — Comparison of Actual to Predicted Service Time Events
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.
Methods for System Verification and Validation of RTES project
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.
Final Project Review and Presentation
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.

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Explores the theoretical and practical aspects of real-time systems, focusing on designing and implementing a Linux-based system with synchronization capabilities
Develops skills in real-time systems design, analysis, and implementation, which are in high demand in various industries
Taught by Sam Siewert, a recognized expert in real-time systems with a strong industry background
Requires students to have a strong foundation in C programming, Linux OS, and real-time concepts, making it suitable for intermediate to advanced learners

Save this course

Save Real-Time Project for Embedded Systems to your list so you can find it easily later:
Save

Reviews summary

Challenging course with engaging topics

learners say this is a demanding course that presents interesting topics.
Course material is intriguing.
"Demanding course, which brings lots of interessting topics."
Course is not easy.
"Demanding course, which brings lots of interessting topics."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Real-Time Project for Embedded Systems with these activities:
Review Real-Time Systems Principles
Refresh your understanding of fundamental real-time systems principles to strengthen your foundation for this course.
Browse courses on Real-Time Systems
Show steps
  • Review your previous coursework or study materials on real-time systems.
  • Utilize online resources, textbooks, or videos to supplement your knowledge.
  • Focus on concepts related to scheduling, synchronization, and resource management in real-time systems.
Practice Linux Shell Commands
Refresh your knowledge of Linux shell commands to strengthen your foundation for this course, which heavily relies on Linux environments.
Browse courses on Linux
Show steps
  • Review the official Linux documentation for shell commands.
  • Utilize online resources and tutorials to reinforce your understanding.
  • Practice executing commands in a Linux terminal.
Explore Raspberry Pi Tutorials
Enhance your understanding of embedded systems and real-time applications by delving into Raspberry Pi tutorials.
Browse courses on Raspberry Pi
Show steps
  • Identify reputable resources providing Raspberry Pi tutorials.
  • Choose tutorials covering topics relevant to the course, such as real-time scheduling and interfacing with hardware.
  • Follow the tutorials step-by-step, experimenting with the provided examples.
  • Troubleshoot any issues encountered during the tutorials.
Five other activities
Expand to see all activities and additional details
Show all eight activities
Participate in Study Groups
Enhance your learning through regular discussions and knowledge sharing with peers.
Show steps
  • Form or join study groups with classmates.
  • Schedule regular meetings to discuss course concepts, work on assignments, and prepare for assessments.
  • Share knowledge, insights, and resources with your group members.
  • Provide feedback and support to one another.
Solve Real-Time Scheduling Problems
Strengthen your grasp of real-time scheduling concepts by solving practice problems.
Show steps
  • Identify reputable sources for real-time scheduling problems.
  • Select problems that cover different scheduling algorithms and scenarios.
  • Analyze the problems and apply appropriate scheduling techniques to find solutions.
  • Compare your solutions with provided answers or consult with experts to verify your understanding.
Develop an Explainer Video
Enhance your understanding and solidify your knowledge by creating a video that explains a key concept related to real-time systems.
Browse courses on Visual learning
Show steps
  • Choose a specific concept or topic within real-time systems that you want to explain.
  • Develop a storyboard or outline for your video, ensuring logical flow and clarity.
  • Use visuals, animations, and concise language to convey the concept effectively.
  • Edit and refine your video to improve its overall impact.
Develop a Prototype Synchronome
Apply your knowledge by creating a prototype that demonstrates the concepts of real-time synchronization.
Browse courses on Real-Time Systems
Show steps
  • Design the architecture and functionality of your synchronome prototype.
  • Select appropriate hardware and software components for your prototype.
  • Develop the software for your prototype, implementing real-time scheduling and synchronization mechanisms.
  • Test and evaluate the performance of your prototype.
  • Document your design and implementation in a technical report.
Participate in Real-Time Systems Competitions
Challenge yourself and demonstrate your skills by participating in real-time systems competitions.
Browse courses on Real-Time Systems
Show steps
  • Identify reputable real-time systems competitions.
  • Review the competition rules and requirements.
  • Form a team or collaborate with others to develop a solution.
  • Submit your solution and participate in the competition.
  • Reflect on your performance and identify areas for improvement.

Career center

Learners who complete Real-Time Project for Embedded Systems will develop knowledge and skills that may be useful to these careers:
Embedded Software Engineer
Embedded Software Engineers are skilled in developing software that runs on embedded systems, which are typically small, dedicated computer systems. This course emphasizes the design and construction of a real-time system using a native Linux system, providing practical experience in embedded software development.
Software Engineer
A Software Engineer is an expert in development and implementation of computer software suited to particular applications. Software engineers with a background in real-time systems are able to create robust systems that are able to respond to external events in a timely manner. This course emphasizes the building of real-time applications using machine vision, providing a practical way to learn real-time systems design.
Real-Time Systems Engineer
Real-Time Systems Engineers specialize in the design and analysis of real-time systems, which are systems that must react to events within a defined time frame. This course provides a foundation in the analysis of real-time systems, covering topics such as scheduling, timing analysis, and verification.
Robotics Engineer
Robotics Engineers design, build, and maintain robots. Robots are increasingly being used in a variety of applications, including manufacturing, healthcare, and transportation. This course provides a foundation in real-time systems and machine vision, which are essential technologies for robotics.
Computer Vision Engineer
Computer Vision Engineers design and implement systems that enable computers to see and understand the world around them. These systems are used in a variety of applications, including robotics, surveillance, and medical imaging. This course provides a foundation in real-time systems and machine vision, which are essential technologies for computer vision.
Control Systems Engineer
Control Systems Engineers design and implement systems that control physical processes. These systems are used in a variety of applications, including manufacturing, transportation, and energy. This course provides a foundation in real-time systems and machine vision, which are essential technologies for control systems.
Network Engineer
Network Engineers design and maintain computer networks. This course provides a foundation in real-time systems, which are essential for designing and maintaining networks that must meet strict performance requirements.
Data Engineer
Data Engineers design and implement systems that collect, store, and analyze data. This course provides a foundation in real-time systems, which are essential for designing and implementing systems that must process data in a timely manner.
Systems Analyst
Systems Analysts design and implement computer systems that meet the needs of organizations. This course provides a foundation in real-time systems, which are essential for designing and implementing systems that must meet strict performance requirements.
Quality Assurance Engineer
Quality Assurance Engineers test and evaluate software and hardware systems to ensure that they meet quality standards. This course provides a foundation in real-time systems, which are essential for testing and evaluating systems that must meet strict performance requirements.
Hardware Engineer
Hardware Engineers design and develop computer hardware. This course provides a foundation in real-time systems, which are essential for designing and developing hardware that must meet strict performance requirements.
Technical Writer
Technical Writers create and maintain documentation for software and hardware products. This course provides a foundation in real-time systems, which are essential for understanding the technical details of products that must meet strict performance requirements.
Product Manager
Product Managers are responsible for the development and launch of new products. This course provides a foundation in real-time systems, which are essential for developing and launching products that must meet strict performance requirements.
Project Manager
Project Managers are responsible for planning, executing, and delivering projects. This course provides a foundation in real-time systems, which are essential for managing projects that must meet strict performance requirements.
Sales Engineer
Sales Engineers are responsible for selling software and hardware products to customers. This course provides a foundation in real-time systems, which are essential for understanding the technical details of products that must meet strict performance requirements.

Reading list

We've selected eight books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Real-Time Project for Embedded Systems.
Provides a comprehensive overview of embedded systems, including topics such as hardware and software design, and system integration.
Provides a comprehensive overview of control systems, including topics such as feedback control, state-space analysis, and digital control. It classic text that is widely used in academic institutions and by industry professionals.
Provides a comprehensive overview of computer organization and design, including topics such as instruction set architecture, memory systems, and performance analysis. It classic text that is widely used in academic institutions and by industry professionals.
Provides a comprehensive overview of computer vision, including topics such as image processing, pattern recognition, and computer vision.
Provides a comprehensive overview of computer architecture, including topics such as instruction set architecture, memory systems, and performance analysis.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2024 OpenCourser