ACM Home Page
Please provide us with feedback. Feedback
Segment protection for embedded systems using run-time checks
Full text PdfPdf (199 KB)
Source International Conference on Compilers, Architecture and Synthesis for Embedded Systems archive
Proceedings of the 2005 international conference on Compilers, architectures and synthesis for embedded systems table of contents
San Francisco, California, USA
SESSION: Security table of contents
Pages: 66 - 77  
Year of Publication: 2005
ISBN:1-59593-149-X
Authors
Matthew Simpson  University of Maryland, College Park, MD
Bhuvan Middha  University of Maryland, College Park, MD
Rajeev Barua  University of Maryland, College Park, MD
Sponsors
ACM: Association for Computing Machinery
SIGBED: ACM Special Interest Group on Embedded Systems
SIGMICRO: ACM Special Interest Group on Microarchitectural Research and Processing
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 6,   Downloads (12 Months): 99,   Citation Count: 3
Additional Information:

abstract   references   cited by   index terms   collaborative colleagues  

Tools and Actions: Review this Article  
Save this Article to a Binder    Display Formats: BibTex  EndNote ACM Ref   
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/1086297.1086307
What is a DOI?

ABSTRACT

The lack of virtual memory protection is a serious source of unreliability in many embedded systems. Without the segment-level protection it provides, these systems are subject to memory access violations, stemming from programmer error, whose results can be dangerous and catastrophic in safety-critical systems. The traditional method of testing embedded software before its deployment is an insufficient means of detecting and debugging all software errors, and the reliance on this practice is a severe gamble when the reliable performance of the embedded device is critical. Additionally, the use of safe languages and programming semantic restrictions as prevention mechanisms is often infeasible when considering the adoptability and compatibility of these languages since most embedded applications are written in C and C++.This work improves system reliability by providing a completely automatic software technique for guaranteeing segment protection for embedded systems lacking virtual memory. This is done by inserting optimized run-time checks before memory accesses that detect segmentation violations in cases in which there would otherwise be no error, enabling remedial action before system failure or corruption. This feature is invaluable for safety-critical embedded systems. Other advantages of our method include its low overhead, lack of any programming language or semantic restrictions, and ease of implementation. Our compile-time analysis, known as intended segment analysis, is a uniquely structured analysis that allows for the realization of optimizations used to reduce the number of required run-time checks and foster our technique into a truly viable solution for providing segment protection in embedded systems lacking virtual memory.Our experimental results show that these optimizations are effective at reducing the performance overheads associated with providing software segment protection to low, and in many cases, negligible levels. For the eight evaluated embedded benchmarks, the average increase in run-time is 0.72%, the average increase in energy consumption is 0.44%, and the average increase in code size is 3.60%.


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
L. O. Andersen. Program Analysis and Specialization for the C Programming Language. PhD thesis, University of Copenhagen, May 1994.
 
2
3
4
5
 
6
J. Carbone. Efficient memory protection for embedded systems. RTC Magazine, September 2004. http://www.rtcmagazine.com/home/article.php?id=100120.
7
 
8
CodeSourcery, LLC. GNU ARM Toolchain=. http://www.codesourcery.com/.
9
10
11
 
12
M. Durrant. Running Linux on low cost, low power MMU-less processors, August 2000. http://www.linuxdevices.com/articles/AT6245686197.html.
 
13
F. C. Eigler. Mudflap: Pointer use cheking for C/C++. In Proceedings of the GCC Developers Summit 2003, pages 57--70, 2003.
14
15
16
 
17
M. R. Guthaus, J. S. Ringenberg, D. Ernst, T. M. Austin, T. Mudge, and R. B. Brown. Mibench: A free, commercially representative embedded benchmark suite. In Proceedings of the IEEE Workshop on Workload Characterization, 2001.
 
18
R. Hastings and B. Joyce. Purify: Fast detection of memory leaks and access errors. In Proceedings of the USENIX Technical Conference, pages 205--215, 1992.
 
19
 
20
 
21
22
23
 
24
25
 
26
J. Seward and N. Nethercote. Using Valgrind to detect undefined value errors with bit-precision. In Proceedings of the USENIX Technical Conference, pages 17--30, 2005.
27
28
 
29
Venture Development Corporation. The Embedded Software Strategic Market Intelligence Program 2002/2003 Volume 2, 2003. http://www.vdc-corp.com/embedded/white/03/03esdtvol2.pdf.
 
30
Venture Development Corporation. The Embedded Software Strategic Market Intelligence Program 2004 Volume 1, 2004. http://www.vdc-corp.com/embedded/white/04/04esdtvol1.pdf.
31
32


Collaborative Colleagues:
Matthew Simpson: colleagues
Bhuvan Middha: colleagues
Rajeev Barua: colleagues