The University of Southampton
Courses

COMP2215 Computer Systems II

Module Overview

This optional module will introduce you to the general principles and practices of developing software that interacts directly with the hardware and its physical environment. Software has found its way into almost any electronic device with a typical household already possessing well over 100 computers embedded into products. These microcontrollers are complete computers integrated on a single chip, some only costing pennys and taking up no more than 2x2mm^3. The relative simplicity of such microcontrollers make it possible to comprehend a complete computer system within the scope of this module. At the same time these systems are state-of-the art technology with applications ranging from mobile devices and the internet-of-things, to sensor networks, distributed control architectures, and robots. This module is for students with good self-study skills who enjoy to work independently on practical technical challenges. To succeed in this module you need to teach yourself C from on-line resources and you need to be able to install a cross-compilation tool-chain on your own computer. Please note: - There is no text book for this module, you will use on-line resources and publicly available documentation for libraries and circuits (see the module notes). - There is no individual feedback for the frequent coursework (see details below). - You will receive a hardware kit that includes a microcontroller development board and the peripherals needed to develop, download and debug code on the board (see the module notes). In a typical week during this module you will have: - Two lectures introducing new material - One lecture introducing the coursework exercise due in the coming week - A tutorial in which the model answer for the previous coursework exercise is discussed and you can ask questions you have about your own solution - Reading assignments for on-line material that complements the lectures

Aims and Objectives

Module Aims

This module aims to introduce students to the general principles and practices of developing software that interacts directly with the hardware and its physical environment.

Learning Outcomes

Knowledge and Understanding

Having successfully completed this module, you will be able to demonstrate knowledge and understanding of:

  • Key concepts of operating systems
  • Hardware requirements implied by software functionality
  • Implementation of simple operating system components
  • Capabilities and peculiarities of embedded systems
Subject Specific Practical Skills

Having successfully completed this module you will be able to:

  • Write system-level code in C
  • Build and debug applications running on a microcontroller
  • Implement software on an embedded system
Subject Specific Intellectual and Research Skills

Having successfully completed this module you will be able to:

  • Design algorithms for resource-constraint systems
  • Understand the fundamental concepts of real-time systems
  • Assess the reliability of software on devices in harsh environments

Syllabus

Programming embedded systems - Debugging with limited I/O and memory - Asynchronous & reentrant code - Real-time programming Input/Output - Physical Interfaces - Interrupts - Drivers Event-driven programming - State machines - Actors Timing - Hardware timer - Watchdogs Memory management - Bootloader - Stack vs. heap - RAM vs. Flash - Multiprogramming Scheduling - Preemtive multitasking - Real-time scheduling - Performance Serial Communication - UART, I2C/SPII, USB File Systems - Flash file systems - FAT-FS Embedded Applications - Power consumption - Reliability

Learning and Teaching

TypeHours
Wider reading or practice45
Completion of assessment task11
Lecture36
Preparation for scheduled sessions18
Follow-up work18
Revision10
Tutorial12
Total study time150

Resources & Reading list

Staff requirements (including teaching assistants and demonstrators). Approx 10h demonstrator support (clinic sessions to help with tool-chain and hardware problems)

Equipment. - IlMatto board with ATmega1284 CPU - TFT Display board - I/O Board - C232HM Cable for programming and debugging - USB Cable - SD Card

Online Resource. - ATmega1284P Datasheet - Tool-chain Installtion Instructions - Il Matto Quick Reference Card - C Quick Reference Card - AVR Libc Documentation

Assessment

Assessment Strategy

For the weekly coursework excersises you will typically receive skeleton code that you need to modify or you can take as a starting point for your own implementation. You will receive detailed instructions for each exercise. If you submit your solution (attempt) by the deadline you will receive full marks, independent of the quality of your submission. However, the material of the exercises will be a focus of the exam. You will need a computer with two free powered USB ports (required for the electronic kit you will receive) and you will need to install the cross compilation tool chain on the computer (see module notes for instructions). The "noteworthy contributions to the delivery of the module" are the top 5% of marks that can be achieved in this module and will be awarded for exceptionally useful contributions on the student wiki and particularly helpful patches submitted for the module materials.

Summative

MethodPercentage contribution
Contribution 5%
Exam  (2 hours) 75%
Exercise 20%

Referral

MethodPercentage contribution
Coursework marks carried forward %
Exam %

Repeat Information

Repeat type: Internal & External

Linked modules

Pre-requisites: (COMP1202 OR ELEC1201) AND COMP1203 AND COMP1206

Share this module Facebook Google+ Twitter Weibo

We use cookies to ensure that we give you the best experience on our website. If you continue without changing your settings, we will assume that you are happy to receive cookies on the University of Southampton website.

×