Development of Real-Time Systems
Keep adding new skills with 10,000+ programs for $239 (usually $399). Save now.
Development of Real-Time Systems
This course is part of Development of Secure Embedded Systems Specialization
Instructor: Farhoud Hosseinpour
38,953 already enrolled
Included with
Learn more
Ask Coursera
541 reviews
541 reviews
Skills you'll gain
Details to know
5 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 is all about practical programming and problem-solving!
After completing this course, you will have the knowledge to plan and set up a real-time system both on paper and in practice. The course centres around the problem of achieving timing correctness in embedded systems, which means guaranteeing that the system reacts within the real-time requirements. Examples of such systems include airbags, emergency brakes, avionics, and also multimedia systems like video playback and QoS in web servers. The course teaches how to plan real-time systems, in theory, using established mathematical proofs and how to implement them in practice by using the most common scheduling methods. We also learn how to program the system in the C language using the FreeRTOS real-time kernel. Finally, we have a look at the future of real-time systems, namely multi-core real-time systems! This course focuses on the learn-by-doing approach with many examples and real-world programming assignments. We have 5 modules, each with a gentle, graded quiz at the end and one peer-reviewed programming assignment. In case you have no experience with C programming, please check out a practical course like: https://www.coursera.org/learn/arduino-platform The course is actually quite fun! -Simon Holmbacka / Γ bo Akademi University Ideate. Innovate. Iterate with 28Digital
Here is where it all starts! We will make a brave attempt to start your future career in real-time systems! This week starts by learning the basic building stones in real-time systems and the system parameters required to successfully construct a real-time system. We introduce you to the corner stone of real-time systems, namely the scheduler β and its task in real-time schedules. You learn also what kind of real-time guarantees are needed in which systems. Concretely, you will learn (1) What is needed to create a real-time system (2) Where real-time requirements are needed. (3) The task and job structure and the parameters needed to schedule a task. (4) Difference between pre-emptive and non-pre-emptive tasks. This course is also part of a Blended Master Programme in Embedded Systems.
What's included
6 videos1 reading1 assignment1 peer review1 app item3 discussion prompts
6 videosβ’Total 42 minutes
- Course Introductionβ’4 minutes
- The Concepts of Real-Time Systemsβ’6 minutes
- The Concept of Real-TimeTasksβ’10 minutes
- The Principles of Schedulingβ’8 minutes
- Real-Time Pre-emptionβ’10 minutes
- FreeRTOS "Hello World" Tutorialβ’4 minutes
1 readingβ’Total 10 minutes
- FreeRTOS APIβ’10 minutes
1 assignmentβ’Total 30 minutes
- Quiz 1β’30 minutes
1 peer reviewβ’Total 120 minutes
- Assignment 1β’120 minutes
1 app itemβ’Total 5 minutes
- Where are you from? -Put a pin in the map!β’5 minutes
3 discussion promptsβ’Total 30 minutes
- Setting up the FreeRTOS tool chainβ’10 minutes
- Week 1 Forumβ’10 minutes
- Assignment 1 Forumβ’10 minutes
In this week we start to actually do some scheduling. We firstly have a look at the simplest type of scheduler β the clock driven scheduler. After this we deepen our learning with the fixed priority scheduler and the monotonic schedulers. We learn how the priorities are determined using these schedulers and we learn when/when not to use these schedulers. Secondly we learn how to determine if a system is overloaded in order to validate schedules without complete system simulation.Concretely, after attending this week you will be able to: (1) Schedule a set of tasks with the clock driven scheduler, with the fixed priority scheduler, with the monotonic schedulers. (2) Determine if a system is overloaded using the total-utilization method and the Urm method. (3) Program FreeRTOS to schedule a set of tasks using the fixed priority scheduler
What's included
7 videos1 assignment1 peer review2 discussion prompts
7 videosβ’Total 44 minutes
- Clock Driven Scheduling - The Conceptβ’7 minutes
- Clock Driven Scheduling - Implementationβ’5 minutes
- Cyclic Structured Scheduling - The Conceptβ’6 minutes
- Cyclic Structured Scheduling - Exampleβ’5 minutes
- Fixed Priority Schedulingβ’8 minutes
- Monotonic Scheduling - The Conceptβ’7 minutes
- Monotonic Scheduling - Exampleβ’6 minutes
1 assignmentβ’Total 30 minutes
- Quiz 2β’30 minutes
1 peer reviewβ’Total 120 minutes
- Assignment 2β’120 minutes
2 discussion promptsβ’Total 20 minutes
- Week 2 Forumβ’10 minutes
- Assignment 2 Forumβ’10 minutes
In the previous week we learned the limitations of the total-utilization method and the Urm method. We start this week off by extending these tests to tasks with short response times. The new method is also, as usual, used in practice! We then focus on improving the optimality of real-time schedules. This is done by learning the principles behind dynamic scheduling methods. Two new schedulers using the dynamic scheduling principle is learned and used in practice with a few examples; the LST scheduler and the EDF scheduler.Concretely, you will learn: (1) How to determine feasibility of a set of tasks using the time demand analysis method. (2) How to schedule a set of tasks using LST and EDF. (3) To determine when a dynamic scheduler is appropriate and when it is not appropriate.
What's included
5 videos1 assignment1 peer review2 discussion prompts
5 videosβ’Total 35 minutes
- Tasks with Short Response Time Theory - The Conceptβ’6 minutes
- Tasks with Short Response Time - Exampleβ’8 minutes
- Dynamic Priority Schedulingβ’8 minutes
- Earliest Deadline First Theoryβ’5 minutes
- Earliest Deadline First Exampleβ’7 minutes
1 assignmentβ’Total 30 minutes
- Quiz 3β’30 minutes
1 peer reviewβ’Total 120 minutes
- Assignment 3β’120 minutes
2 discussion promptsβ’Total 20 minutes
- Week 3 Forumβ’10 minutes
- Assignment 3 Forumβ’10 minutes
All things are easy and nice when not caring about non-periodic jobs. When including non-periodic jobs, the schedulers must take these into account to make a feasible schedule, which we learn this week. The problem is that a non-periodic job can arrive at any time, even if a periodic job is already scheduled. We learn both how to optimize a schedule for non-periodic jobs and how to validate a schedule when non-periodic jobs arrive to the schedule. Concretely, we will learn: (1) How to use the slack stealing method to optimize a schedule with non-periodic jobs (2) How to use the LRT scheduler to optimize a schedule with non-periodic jobs (3) How to use the deferrable server to optimize a schedule with non-periodic jobs (4) Formally verify a schedule with non-periodic jobs
What's included
6 videos1 assignment1 peer review2 discussion prompts
6 videosβ’Total 40 minutes
- Aperiodic Jobs - The Conceptβ’7 minutes
- Aperiodic Jobs - Exampleβ’5 minutes
- Sporadic Jobs - The Conceptβ’7 minutes
- Sporadic Jobs - Exampleβ’7 minutes
- The Deferrable Server Theoryβ’6 minutes
- The Deferrable Server Exampleβ’8 minutes
1 assignmentβ’Total 30 minutes
- Quiz 4β’30 minutes
1 peer reviewβ’Total 120 minutes
- Assignment 4β’120 minutes
2 discussion promptsβ’Total 20 minutes
- Week 4 Forumβ’10 minutes
- Assignment 4 Forumβ’10 minutes
This week is what we all have been waiting for! We will deepen our learning of FreeRTOS, its kernel and the functionalities. We demonstrate the importance of predictable computer architectures for example when determining the context switch and factors influencing this overhead. As we head towards the future, we finish this course by introducing you to multi-core real-time systems and scheduling methods for multi-core real-time systems. Concretely, you will learn: (1) The internal mechanisms of FreeRTOS, for example mutexes/semaphores and message queues. (2) Multi-core computer architectures for real-time systems. (3) Multi-core scheduling methods.
What's included
5 videos1 assignment1 peer review3 discussion prompts
5 videosβ’Total 36 minutes
- RTOS Overviewβ’7 minutes
- The FreeRTOS Kernelβ’6 minutes
- Multi-Core Real-Time Systemsβ’8 minutes
- Multi-Core Scheduling - Shared Resourcesβ’7 minutes
- Multi-Core Scheduling - Scheduling Methodsβ’9 minutes
1 assignmentβ’Total 30 minutes
- Quiz 5β’30 minutes
1 peer reviewβ’Total 180 minutes
- Assignment 5β’180 minutes
3 discussion promptsβ’Total 30 minutes
- Week 5 Forumβ’10 minutes
- Assignment 5 Forumβ’10 minutes
- Ways of improving the courseβ’10 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.
Instructor
Offered by
Explore more from Software Development
- 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
Learner reviews
- 5 stars
67.83%
- 4 stars
24.21%
- 3 stars
5.36%
- 2 stars
1.47%
- 1 star
1.10%
Showing 3 of 541
Reviewed on Oct 7, 2017
A good blend of theory and practice that gives deeper understanding and arriving at solutions in RTS
Reviewed on Jun 13, 2017
Brilliant course, interesting all the way through and bit difficult in places but worth the effort
Reviewed on Feb 28, 2017
Great course, I strongly recommend it for those who want to start learning about Real Time Systems for embedded electronics
Frequently asked questions
We like to keep the exercise a bit more like in the industrial life: there is no "correct" answer but your task is to make the customer (peer reviewer) satisfied. Therefore we have other student review your solution and if that "customer" finds it acceptable, you will get a good score. Like in many engineering projects, there is no "correct solution" but there are many correct ways of implementing your solution.
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,
