Publication Type |
Manuscript |
School or College |
College of Engineering |
Department |
Computing, School of |
Creator |
Regehr, John |
Title |
Safe and structured use of interrupts in real-time and embedded software |
Date |
2007-01-01 |
Description |
While developing embedded and real-time systems, it is usually necessary to write code that handles interrupts, or code the interacts with interrupt handlers. Interrupts are indispensable because they use hardware support to reduce both the latency and overhead of event detection, when compared to polling. Furthermore, modern embedded processor cores can save energy by shutting down when idle, leaving only simple circuitry such as timers running. For example, a TelosB [13] sensor network node drains a pair of AA batteries in a few days by running the processor continuously, but can run a useful application for months if the duty cycle is kept appropriately low. Interrupts have some inherent drawbacks from a software engineering point of view. First, they are relatively non-portable across compilers and hardware platforms. Second, they lend themselves to a variety of severe software errors that are difficult to track down since they manifest only rarely. These problems give interrupts a bad reputation for leading to flaky software: a significant problem where the software is part of a highly-available or safety-critical system. The purpose of this chapter is to provide a technical introduction to interrupts and the problems that their use can introduce into an embedded system, and also to provide a set of design rules for developers of interrupt-driven software. This chapter does not address interrupts on shared-memory multiprocessors, nor does it delve deeply into concurrency correctness: the avoidance of race conditions and deadlocks. Concurrency correctness is the subject of a large body of literature. Although the vast majority of this literature addresses problems in creating correct thread-based systems, essentially all of it also applies to interrupt-driven systems. |
Type |
Text |
Publisher |
Taylor & Francis (Routledge) |
First Page |
1 |
Last Page |
12 |
Dissertation Institution |
University of Utah |
Language |
eng |
Bibliographic Citation |
Regehr, J. (2007). Safe and structured use of interrupts in real-time and embedded software. Chapter in Handbook of Real-Time and Embedded Systems, CRC, 1-12. |
Rights Management |
(c)Taylor & Francis ; This is an electronic version of an article printed in Handbook of Real-Time and Embedded Systems, CRC. Handbook of Real-Time and Embedded Systems, CRC is available online at http://www.informaworld.com/smpp/ with the link (http://www.cs.utah.edu/~regehr/papers/interrupt_chapter.pdf) to the article. |
Format Medium |
application/pdf |
Format Extent |
799,910 bytes |
Identifier |
uspace,17482 |
ARK |
ark:/87278/s6xw53km |
Setname |
ir_uspace |
ID |
708020 |
Reference URL |
https://collections.lib.utah.edu/ark:/87278/s6xw53km |