ECEN 5623
Assignment #1 -- RM/DM Scheduling Feasibility Tests
Submission Format: Plain text, Rich text, PDF, or MS Word
Code Format: Turn in all code in a tar or zip file!
Upon Completion upload to culearn.colorado.edu, "Lab Assignments, Lab 1".
(If there is a problem with culearn, then E-mail to siewerts@colorado.edu with subject line "LAB SUBMISSION 1" (subject line must be all caps exactly as it appears between quotes) and CC the TA.)
Be sure to include all source code with your submission.
All Group Design Assignments should be uploaded to culearn.colorado.edu, ECEN5623, "Lab Assignments, Project 1".
(If there is a problem with culearn, then E-mail to siewerts@colorado.edu with subject "GROUP SUBMISSION 1")
Project submission should be in an MS Word or text document with all group members clearly identified on a cover page! Only ONE submission needs to be made for all in the group.
Lab learning objectives are: familiarization with Rate Monotonic and Deadline Monotonic policy and feasibility tests, understanding of sufficient vs. necessary and sufficient feasibility, and basic methods for developing, cross-compiling, downloading, and debugging Beagle xM target ARM code cross-compilation and cross-debugging tools. Alternatively you can use native compile and debug tools running directly on your target, so choose one, and for extra credit compare both methods in terms of efficiency and ease of use.
Please read Deadline Monotonic Scheduling by Neil Audsley and the Real-Time Embedded Components and Systems text, Chapter 2, Processing section.
For each feasibility test, allocate sufficient memory to allow up to 20 tasks to be tested by your code. Give me evidence that you have tested each one of your feasibility tests by writing a driver to call the tests with examples from one of the papers, or your own example. The code may be automatically tested for grading, so it must conform to the naming and parameter specification given here and must be in the files requested -- Thanks!
int RM_sufficient(
int Ntasks,
int *tid,
unsigned long int *T,
unsigned long int *C,
unsigned long int *D);
Where Ntasks is the number of tasks in the task set, tid is an array of unique task Ids, T is an array of the release periods, C is an array of the computation times, D is an array of the deadlines (T must equal D for each tid in RM). Finally, the function should simply return 1 if the system can be scheduled, and 0 if it can’t.
int DM_sufficient(
int Ntasks,
int *tid,
unsigned long int *T,
unsigned long int *C,
unsigned long int *D,
double *S);
Where parameters are defined again as in #2 and S is an array the code populates with the scheduling feasibility of each task (i.e. the demand this task places on the CPU plus all interference with this task by tasks of higher priority).
int Sched_completion(
int Ntasks,
int *tid,
unsigned long int *T,
unsigned long int *C,
unsigned long int *D);
Where parameters are defined again as in #2. Assume that T must equal D in all cases.
Please turn individual paragraph in by uploading to culearn Project 1.