Programming embedded systems - 1DT056
- 2012/06/06: The second half of the course evaluation (covering the project and exam) is now online on the student portal; we would be grateful if you could provide answers by June 15th!
- 2012/05/17: Results for the 5th and 6th home assignments are now on the student portal. Corrected copies can be picked up from a small white box at the window next to the mailboxes wall, 4th floor, house 1.
- 2012/05/14: Groups can book time slots for project presentations next week on this Doodle page. In case your group won't be able to finish the project by next week, please get in contact with the course teachers.
- 2012/05/07: The main exam for the course takes place on May 25th, 8-10. You have to register for the exam two weeks in advance! More information, and a list of the course topics relevant for the exam are given here.
- 2012/05/03: Solutions for all exercises are now online.
- 2012/03/26: Feedback on the elevator lab is now available in the files "comments.txt" uploaded to the file area on the student portal. For most solutions there is very little to change, mostly problems related to the safety requirements. Generally, in case anything is unclear about the lab or the provided comments, please drop us an email!
- 2012/03/26: There is now a page with information about the project
- 2012/03/26: Please note that the lecture slot today 13:15 - 15:00 won't be used, no lecture today. There is a lab session tomorrow 15:15 - 17:00 in room 1313.
About the course
This course in VT 2012 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 2012 and consists of
- Part 1 (January - March): lectures, exercises, and lab 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 and synchronous languages
- 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 + lab||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.
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 16, 13:15, Pol_1245||PR||Course overview, C recap|
|2||FreeRTOS by example||Jan 18, 10:15, Pol_1212||PR||Project template, Examples, CMSIS, STM32F10x reference manual, STM32F10x programming manual|
|3||I/O, communication, synchronisation||Jan 23, 13:15, Pol_1245||PR||Examples|
|4||Communication, timers, PWM||Jan 25, 13:15, Pol_1146||PR||Examples|
|5||CANCELLED||Jan 31, 10:15, Pol_1145||CANCELLED|
|6||Timers, interrupts, multi-tasking||Feb 1, 13:15, Pol_1245||PR||Slides, PWM example, interrupt examples|
|7||Handling of real-valued data||Feb 6, 8:15, Pol_1145||PR||Slides on multi-tasking, Arithmetic, examples|
|8||Arithmetic, testing||Feb 8, 13:15, Pol_1245||PR||Slides on intervals, slides on testing|
|9||Fault tolerance||Feb 13, 15:15, Pol_1212||PR||Slides on testing, slides on fault tolerance, watchdog example|
|10||An intro to Lustre||Feb 15, 13:15, Pol_1245||PR||Exercise in memory fault injection (not to be handed in, solutions are included), Slides on Lustre, Lustre examples (including HTML tracers)|
|11||Lustre verification||Feb 20, 13:15, Pol_1245||PR||Slides on Lustre verification, Lustre examples (including HTML tracers)|
|12||An intro to Real-Time Java||Feb 22, 13:15, Pol_1245||PR||Slides on real-time Java, lecture examples|
|13||Memory management; more on Real-Time Java||Feb 27, 13:15, Pol_1145||PR||Slides on memory management, RTSJ example with scoped memory|
|14||RTSJ example, wrap-up elevator lab||Feb 29, 13:15, Pol_1245||PR||Merge-sort example in RTSJ|
|15||Principles of RT OS||Mar 5, 15:15, Pol_1245||KL||Principles of RT OS (Part 1), Principles of RT OS (Part 2)|
|16||RT-Linux: RTAI||Mar 7, 13:15, Pol_1245||KL||RT-Linux: RTAI (Part 1), RT-Linux: RTAI (Part 2)|
|(no lecture)||Mar 12, 13:15, Pol_1245|
|(no lecture)||Mar 15, 13:15, Pol_1245|
|17||Start of the project; solutions assignment 6||Mar 21, 13:15 - 15:00, Pol_1311||PR||Slides about project, more information|
Assignments are done by students individually.
Several students handing in the same assignment solution will be considered as cheating, and reported accordingly.
Each assignment solution will be corrected by us, and given a grade between 0 points and 20 points.
To pass the course, it is necessary to achieve at least 12 points in at least 4 of the 6 assignments.
|1||Basic C and FreeRTOS programming||Jan 27th, 8:15|
|2||Peripherals, concurrency||Feb 2nd, 10:15|
|3||Interrupts, scheduling, arithmetic||Feb 17th, 8:15|
|4||Testing||Feb 23rd, 10:15|
|5||Lustre and Real-time Java||Mar 2nd, 10:15|
|6||ADC and PID controllers||Mar 19th, 13:15|
Solutions to the assignments are to be submitted via email to Othmane Rezine.
The exercise sessions are used to discuss solutions for the home assignments. Apart from this, no new material is presented during the exercises.
|Discussion of assignment 1||Jan 27, 8:15 - 10:00, Pol_1245|
|Discussion of assignment 2||Feb 2, 10:15 - 12:00, Pol_1245|
|Discussion of assignment 3||Feb 17, 8:15 - 10:00, Pol_1245|
|Discussion of assignment 4||Feb 23, 10:15 - 12:00, Pol_1245|
|Discussion of assignment 5||Mar 2, 10:15 - 12:00, Pol_1245|
|Discussion of assignment 6||Mar 21, 13:15 - 15:00, Pol_1311|
Recommended reading material
- On embedded systems and software: "An embedded software primer", David E. Simon, Addison-Wesley, 1999
- On real-time systems: "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
Please note that 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 course-related questions whenever possible, instead of mailing any of the teachers directly.