Department of Electronic Engineering
ELE00063M Systems Programming for Embedded Devices
Coursework Assessment 2020/21
This coursework (Design Report) contributes 100% of the assessment for this module.
Clearly indicate your Exam Number on every separate piece of work submitted.
Submission is via the VLE. The deadline is 12:00 noon on 22 April 2021, Summer Term,
Week 1, Thursday. Please try and submit early as any late submissions will be penalised.
Assessment information including on late penalties is given in the Statement of Assessment.
It is your responsibility to ensure that you understand and comply with the University’s
policy on academic integrity. If this is your first year of study at the University then you also
need to complete the mandatory Academic Integrity Tutorial. Further information is
available at http://www.york.ac.uk/integrity/.
In particular please note:
● Unless the coursework specifies a group submission, you should assume that all
submissions are individual and should therefore be your own work.
● All assessment submissions are subject to the Department’s policy on plagiarism and,
wherever possible, will be checked by the Department using Turnitin software.
Systems Programming for Embedded Devices
You must design and implement a small embedded system, using FreeRTOS on the
Nucleo development boards.
The details of the system are entirely up to you. You may choose to have it interact
with the serial port, with the buttons and LEDs, or even with the ADC (Analogue to
Digital Converter – reading an analogue voltage from a potentiometer, for example)
or any of the other peripherals at your disposal. We’re aware that you don’t have
easy access to a screen this year, so it’s fine to write something that ideally would
use a screen but which uses the serial connection as a proof of concept.
For example, you could choose to implement:
● a stopwatch
● a demonstration of a temperature controller (by pretending that a
potentiometer is another type of sensor)
● a simple game
You can choose anything, it doesn't have to be on this list. There are a few
● You must use at least one interrupt service routine
● You must implement at least two separate, concurrent tasks
● You must use some kind of inter-task communication
It would be advisable to start your project using the FreeRTOS/lab2 project from the
labs (you can download the zip file again for a clean copy). This has the
microcontroller correctly configured, FreeRTOS correctly configured, and the ST
driver library installed.
Feel free to add as much additional functionality as you like. The FreeRTOS
documentation will tell you about all the functions and features that are available to
you. Additionally if you open the source files of the ST drivers (e.g.
/Libraries/STM32F30x_StdPeriph_Driver/src/stm32f30x_gpio.c) you’ll find
documentation in the source code.
Try to ensure that there is a good reason for having multiple tasks in your
system, for example because you are reading from sensors using one task and
writing to the screen using another, rather than writing tasks that simply run one after
another. If you have an idea for the assessment, and wish to check if it is suitable, I
am happy to answer questions by email (email@example.com).
You must submit your code and a short formal report on your work by the date given
on the cover sheet.
Your report should contain a brief executive summary, a contents page, an
introduction and a conclusion. Aim to make it no longer than 2500 words.
You must also submit your code, being careful to upload all source and header files
that you have created or modified. The easiest way to do this is to submit a zip file
of the project folder. Before you create the archive please delete the Flash and
RAM folders from the project (these contain large build artefacts and are not
required) and anonymise the filenames in your project by renaming any whose
names reflect your identity.
This assessment carries 100% of the marks for this module.
Marks will be awarded for:
● Report structure and readability
● Design features implemented
● Effective, readable, commented code
● Efficient use of CPU time – for example, using interrupts instead of polling
● Careful treatment of any potential deadlocks or race conditions
● Appropriate choice of data structures
Indicative mark breakdown:
Report structure and presentation 20%
Detailed and effective design 30%
Effective and efficient code 30%
Clear, standardised code practices 20%
Please remember that the report and code will be anonymously marked. Do not
include (in filenames, folder names, comments etc.) anything that could be used to
identify you personally.
A reminder that plagiarism and collusion constitute academic misconduct and will not
be tolerated. Do not work with anyone else on this assessment, and do not submit
someone else's work as your own. 学霸联盟