Denna sida på svenska This page in English

FreeRTOS Project

Project: FreeRTOS kernel analysis

FreeRTOS is a real-time operating system kernel. The kernel is designed with simplicity in mind and written in C.

Your task will be to get the sources from the website, and identify the parts of the code that correspond to the functions that we have seen during the lectures in STORK. This means that you should identify the code related to mutual exclusion primitives, and the code related to scheduling.

You will need to prepare a presentation including the source code that you found (similarly to how the STORK code was presented during the lectures) and a report with your workflow, and the explanation on how you identified the relevant code snippets. This project is suitable if you have experience of C code.

Detailed Description of the Project

Your task in this project is to:

  1. Download the sources of the kernel from the github repository - in the repository you will also find the README file describing the structure of the code.
  2. Analyse the code to find the kernel primitives that are equivalent to the stork primitives that you have seen during the lectures. In particular you need to identify the code for:
  3. You should sketch a drawing of how the queues are organized in the operating system. How many queues are used for the processes/threads waiting to execute? How many queues are used for tasks that are waiting for resources?
  4. Write the code for two periodic tasks, one being the producer and one being the consumer. The buffer should just be an integer variable that is shared between the two and mutual exclusion primitives identified during the code analysis in point 2 should be used.
    • The producer should write on the shared integer every 2 seconds.
    • The consumer should read from the shared integer every 1 second (regardless of the fact that the value might not be updated).
  5. Prepare a presentation including the material above (the presentation will be given on zoom to Martina Maggio). Prepare a report including the findings above.
Page Manager: