Programming embedded systems - 1DT056
- 2011/12/15: The next re-exam is on January 13th, 2012; again, it will have the same format as the first exam.
- 2011/08/08: The re-exam on August 20 will have the same format as the first exam.
- 2011/07/26: Please note that a course evaluation is waiting for being filled out on the student portal
About the course
This course in VT 2011 provides a background on programming for embedded systems and microcontrollers. The course focusses on software aspects and introduces, in particular, real-time operating systems (RTOS) and a variety of low- and high-level programming languages common for embedded systems. The course runs through the whole spring 2011 and consists of
- Part 1 (January - March): lectures, exercises, and labs on programming embedded systems;
- Part 2 (March - May): project on implementing embedded systems.
After taking this course, students will ...
- understand which features and properties of OSs are relevant for real-time and embedded systems
- be able to implement embedded applications with the help of RTOSs
- be familiar with important paradigms of programming languages used in embedded systems, including imperative languages, data-flow approaches, synchronous languages, and state charts
- be able to select RTOSs and programming languages that are suitable for particular embedded systems projects
- be able to test and debug embedded software and understand the use of contracts and assertions for static and dynamic verification.
The course consists of the following parts:
|Assignments + labs||3||U, G (pass/fail)|
|Project||4||U, G (pass/fail)|
|Theory + exam||3||U, 3, 4, 5|
To pass the course, better than "U" must be achieved in each component. Information on the exam is given here.
The overall course grade of a student is derived from the performance in the project and in the exam. To this end, we will internally mark the work of each project group (considering the solution and presentation) in the "U, 3, 4, 5" scheme. The overall grade of a student is computed as the (un-weighted) average of the exam and the internal project grade, rounding upwards.
|1||Introduction to the course||Jan 17, 10:15, Pol_1211||Course overview, C recap|
|2||FreeRTOS by example||Jan 19, 13:15, Pol_1245||uVision project, Examples, Chapter 1 of the FreeRTOS book, generic CORTEX M3 edition|
|3||Ports, Pins, Switches, inter-task communication||Jan 24, 15:15, Pol_1245||Examples, Chapter 2 and 3 of the FreeRTOS book, generic CORTEX M3 edition|
|4||Solutions for assignment 1; hardware timers||Jan 26, 13:15, Pol_1245||Assignment 1, Examples|
|5||Interrupts; multi-tasking||Jan 31, 10:15, Pol_1211||Slides, examples|
|6||Handling of real-valued data||Feb 2, 13:15, Pol_1311||Slides, examples|
|7||Solutions for assignment 2||Feb 7, 10:15, Pol_1311||Solutions|
|8||Overview of testing concepts||Feb 9, 13:15, Pol_1311||Slides|
|9||Solutions for assignment 3; fault tolerance||Feb 14, 10:15, Pol_1311||Slides, examples|
|10||An intro to the synchronous dataflow language Lustre||Feb 16, 15:15, Pol_1111||Slides, Lustre examples (including simulation files and Luke binaries)|
|11||Verification of Lustre programs||Feb 21, 10:15, Pol_1311||Slides, Lustre examples (including simulation files), Lustre resources|
|12||(lecture cancelled)||Feb 23, 13:15, Pol_1311|
|13||Solutions for assignment 4; memory management||Feb 28, 10:15, Pol_1311||Slides|
|14||Wrap-up of lab; more on Real-time Java||Mar 2, 13:15, Pol_1311||Real-time Java resources: rtsj.org, sun.com|
|15||(lecture cancelled)||Mar 7, 10:15, Pol_1245|
|16||Introduction to projects; solutions for assignment 5||Mar 23, 15:15, Pol_2446||Slides|
|17||Project topics||Mar 28, 13:15, Pol_1311||Slides|
|18||Solutions for assignment 6; general discussion about the projects||April 6, 13:15, Pol_2247|
|19||Information on project + grading||April 14, 10:15, Pol_1245|
|Guest lecture by Jakob Engblom, Technical Marketing Manager, Wind River||May 5th, 10:15, Pol_1311||Full-System Simulation in Embedded Systems, Slides|
|1||Basic C and FreeRTOS programming||Jan 26th, 13:15|
|2||Peripherals, scheduling, concurrency||Feb 3rd|
|3||Interrupts, arithmetic||Feb 9th|
|5||Fault tolerance and Lustre||Mar 14st|
|6||A/D converters and PID controllers||Mar 30th|
Assignments are done by students individually (not in groups), and are graded pass/fail. To pass the course, 4 out of the 6 assignments have to be handed in and passed.
For implementation questions, you can use this uVision project as a starting point.
Solutions to this assignment are to be submitted before the lecture on the specified day of deadline. You can bring a printout of your solution to the lecture, or send it by email to Othmane Rezine. No solutions will be accepted after the lecture.
Supervised lab sessions
|Friday Jan 21st, 8:15 - 10:00||1313|
|Friday Jan 28th, 8:15 - 10:00||1313|
|Friday Feb 4th, 8:15 - 10:00||1313|
|Friday Feb 11th, 8:15 - 10:00||1313|
|Friday Feb 18th, 15:15 - 17:00||1313|
|Friday Feb 25th, 15:15 - 17:00||1313|
|Friday Mar 4th, 15:15 - 17:00||2315D|
|Friday Mar 11th, 15:00 - 17:00||1313|
Recommended reading material
- On embedded and real-time systems in general: "Hard Real Time Computing Systems - Predictable Scheduling Algorithms and Applications", Giorgio Buttazzo, Springer, 2005
- On FreeRTOS: "Using the FreeRTOS Real Time Kernel - a Practical Guide", Richard Barry, generic CORTEX M3 edition
For general questions, a forum for the course has been set up at Studentportalen (you have to log in to access the forum). Please use this forum for all course-related questions.