|
ABSTRACT
An important correctness criterion for software running on embedded microcontrollers is stack safety: a guarantee that the call stack does not overflow. Our first contribution is a method for statically guaranteeing stack safety of interrupt-driven embedded software using an approach based on context-sensitive dataflow analysis of object code. We have implemented a prototype stack analysis tool that targets software for Atmel AVR microcontrollers and tested it on embedded applications compiled from up to 30,000 lines of C. We experimentally validate the accuracy of the tool, which runs in under 10 sec on the largest programs that we tested. The second contribution of this paper is the development of two novel ways to reduce stack memory requirements of embedded software.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
Alter, D. 2003. Online stack overflow detection on the TMS320C28x DSP. Texas Instruments Application Note SPRA820. http://www-s.ti.com/sc/psheets/spra820/spra820.pdf.
|
| |
2
|
Atemu. 2004. Atemu: A sensor network emulator/simulator/debugger. Center for Satellite and Hybrid Communication Networks, University of Maryland. http://www.cshcn.umd.edu/research/atemu/.
|
| |
3
|
Autopilot Project. 2004. http://autopilot.sourceforge.net.
|
 |
4
|
Andrew Ayers , Richard Schooler , Robert Gottlieb, Aggressive inlining, Proceedings of the ACM SIGPLAN 1997 conference on Programming language design and implementation, p.134-145, June 16-18, 1997, Las Vegas, Nevada, United States
|
| |
5
|
Baker, T. P. 1990. A stack-based resource allocation policy for realtime processes. In Proc. of the 11th IEEE Real-Time Systems Symp. (RTSS), Lake Buena Vista, FL. 191--200.
|
| |
6
|
Balakrishnan, G. and Reps, T. 2004. Analyzing memory accesses in x86 executables. In Proc. of the Intl. Conf. on Compiler Construction (CC), Barcelona, Spain.
|
| |
7
|
Barello, L. 2004. The AvrX real time kernel. http://barello.net/avrx.
|
| |
8
|
Dennis Brylow , Niels Damgaard , Jens Palsberg, Static checking of interrupt-driven software, Proceedings of the 23rd International Conference on Software Engineering, p.47-56, May 12-19, 2001, Toronto, Ontario, Canada
|
| |
9
|
Chatterjee, K., Ma, D., Majumdar, R., Zhao, T., Henzinger, T. A., and Palsberg, J. 2003. Stack size analysis for interrupt-driven programs. In Proc. of the 10th Static Analysis Symp., San Diego, CA. 109--126.
|
 |
10
|
|
 |
11
|
Saumya Debray , Robert Muth , Matthew Weippert, Alias analysis of executable code, Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, p.12-24, January 19-21, 1998, San Diego, California, United States
[doi> 10.1145/268946.268948]
|
| |
12
|
|
| |
13
|
|
 |
14
|
David Gay , Philip Levis , Robert von Behren , Matt Welsh , Eric Brewer , David Culler, The nesC language: A holistic approach to networked embedded systems, Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation, June 09-11, 2003, San Diego, California, USA
|
| |
15
|
Heckmann, R. and Ferdinand, C. 2002. Stack usage analysis and software visualization for embedded processors. In Proc. of the Embedded Intelligence Congress, Nuremberg, Germany.
|
 |
16
|
Jason Hill , Robert Szewczyk , Alec Woo , Seth Hollar , David Culler , Kristofer Pister, System architecture directions for networked sensors, Proceedings of the ninth international conference on Architectural support for programming languages and operating systems, p.93-104, November 2000, Cambridge, Massachusetts, United States
|
| |
17
|
|
| |
18
|
|
| |
19
|
|
 |
20
|
|
 |
21
|
|
| |
22
|
Reid, A., Flatt, M., Stoller, L., Lepreau, J., and Eide, E. 2000. Knit: Component composition for systems software. In Proc. of the 4th Symp. on Operating Systems Design and Implementation. Springer Verlag, San Diego, CA. 347--360.
|
| |
23
|
Saksena, M. and Wang, Y. 2000. Scalable real-time system design using preemption thresholds. In Proc. of the 21st IEEE Real-Time Systems Symp. (RTSS), Orlando, FL.
|
|