Abstract
Embedded software often involves intensive numerical computations and suffers from a number of runtime errors. The technique of numerical static analysis is of practical importance for checking the correctness of embedded software. However, most of the existing approaches of numerical static analysis consider sequential programs, while interrupts are a commonly used facility that introduces concurrency in embedded systems. Therefore, a numerical static analysis approach is highly desired for embedded software with interrupts. In this article, we propose a static analysis approach specifically for interrupt-driven programs based on sequentialization techniques. We present a method to sequentialize interrupt-driven programs into nondeterministic sequential programs according to the semantics of interrupts. The key benefit of using sequentialization is the ability to leverage the power of state-of-the-art analysis and verification techniques for sequential programs to analyze interrupt-driven programs, for example, the power of numerical abstract interpretation to analyze numerical properties of the sequentialized programs. Furthermore, to improve the analysis precision and scalability, we design specific abstract domains to analyze sequentialized interrupt-driven programs by considering their specific features. Finally, we present encouraging experimental results obtained by our prototype implementation.
- Eva Beckschulze, Sebastian Biallas, and Stefan Kowalewski. 2012. Static analysis of lockless microcontroller C programs. In SSV’12. 103--114.Google Scholar
- Bruno Blanchet, Patrick Cousot, Radhia Cousot, Jérôme Feret, Laurent Mauborgne, Antoine Miné, David Monniaux, and Xavier Rival. 2003. A static analyzer for large safety-critical software. In PLDI’03. ACM, 196--207. Google Scholar
Digital Library
- François Bourdoncle. 1992. Abstract interpretation by dynamic partitioning. Journal of Functional Programming 2, 4, 407--435.Google Scholar
Cross Ref
- Dennis Brylow, Niels Damgaard, and Jens Palsberg. 2001. Static checking of interrupt-driven software. In ICSE’01. IEEE, 47--56. Google Scholar
Digital Library
- Dennis Brylow and Jens Palsberg. 2004. Deadline analysis of interrupt-driven software. IEEE Transactions on Software Engineering 30, 10, 634--655. Google Scholar
Digital Library
- Sagar Chaki, Arie Gurfinkel, and Ofer Strichman. 2013. Verifying periodic programs with priority inheritance locks. In FMCAD’13. 137--144.Google Scholar
- Takashi Chikamasa, Eiji Sato, and Koji Shimizu. 2010. OSEK platform for LEGO® MINDSTORMS® Retrieved July 4, 2016 from http://lejos-osek.sourceforge.net/.Google Scholar
- Nathan Cooprider and John Regehr. 2006. Pluggable abstract domains for analyzing embedded software. In LCTES’06. ACM, 44--53. Google Scholar
Digital Library
- Patrick Cousot and Radhia Cousot. 1976. Static determination of dynamic properties of programs. In Proceedings of the 2nd International Symposium on Programming. Dunod, Paris, 106--130.Google Scholar
- Patrick Cousot and Radhia Cousot. 1977. Abstract interpretation: A unified lattice model for static analysis of programs by construction or approximation of fixpoints. In POPL’77. ACM, 238--252. Google Scholar
Digital Library
- Stephen A. Edwards. 2003. Tutorial: Compiling concurrent languages for sequential processors. ACM Transactions on Design Automation of Electronic Systems 8, 2, 141--187. Google Scholar
Digital Library
- Jérôme Feret. 2004. Static analysis of digital filters. In ESOP’04. Springer, 33--48.Google Scholar
- Dan Goodin. 2015. Boeing 787 Dreamliners contain a potentially catastrophic software bug. Retrieved July 4, 2016 from http://arstechnica.com/information-technology/2015/05/boeing-787-dreamliners-contain-a-potentially-catastrophic-software-bug/.Google Scholar
- Omar Inverso, Ermenegildo Tomasco, Bernd Fischer, Salvatore La Torre, and Gennaro Parlato. 2014. Bounded model checking of multi-threaded C programs via lazy sequentialization. In CAV’14, Lecture Notes in Computer Sciences, Vol. 8559. Springer, Berlin, 585--602. Google Scholar
Digital Library
- Bertrand Jeannet, Nicolas Halbwachs, and Pascal Raymond. 1999. Dynamic partitioning in analyses of numerical properties. In SAS’99. Springer, 39--50. Google Scholar
Digital Library
- Bertrand Jeannet and Antoine Miné. 2009. Apron: A library of numerical abstract domains for static analysis. In CAV’09, Lecture Notes in Computer Sciences, Vol. 5643. Springer, Berlin, 661--667. Google Scholar
Digital Library
- Nicholas Kidd, Suresh Jagannathan, and Jan Vitek. 2010. One stack to run them all - Reducing concurrent analysis to sequential analysis under priority scheduling. In SPIN’10, Lecture Notes in Computer Sciences, Vol. 6349. Springer, Berlin, 245--261. Google Scholar
Digital Library
- Jonathan Kotker and Sanjit A. Seshia Dorsa Sadigh. 2011. Timing analysis of interrupt-driven programs under context bounds. In FMCAD’11. IEEE Press, 81--90. Google Scholar
Digital Library
- Akash Lal, Tayssir Touili, Nicholas Kidd, and Thomas W. Reps. 2008. Interprocedural analysis of concurrent programs under a context bound. In TACAS’08, Lecture Notes in Computer Sciences, Vol. 4963. Springer, Berlin, 282--298. Google Scholar
Digital Library
- Laurent Mauborgne and Xavier Rival. 2005. Trace partitioning in abstract interpretation based static analyzers. In ESOP’05. Springer, 5--20. Google Scholar
Digital Library
- Antoine Miné. 2006. The octagon abstract domain. Higher-Order and Symbolic Computation 19, 1, 31--100. Google Scholar
Digital Library
- Antoine Miné. 2011. Static analysis of run-time errors in embedded critical parallel C programs. In ESOP’11, Lecture Notes in Computer Sciences, Vol. 6602. Springer, Berlin, 398--418. Google Scholar
Digital Library
- Antoine Miné. 2014. Relational thread-modular static value analysis by abstract interpretation. In VMCAI’14, Lecture Notes in Computer Sciences, Vol. 8318. Springer, Berlin, 39--58. Google Scholar
Digital Library
- David Monniaux. 2007. Verification of device drivers and intelligent controllers: A case study. In EMSOFT’07. ACM, 30--36. Google Scholar
Digital Library
- George C. Necula, Scott McPeak, Shree Prakash Rahul, and Westley Weimer. 2002. CIL: Intermediate language and tools for analysis and transformation of C programs. In CC’02, Lecture Notes in Computer Sciences, Vol. 2304. Springer, Berlin, 213--228. Google Scholar
Digital Library
- Shaz Qadeer and Dinghao Wu. 2004. KISS: Keep it simple and sequential. In PLDI’04. ACM, 14--24. Google Scholar
Digital Library
- John Regehr, Alastair Reid, and Kirk Webb. 2005. Eliminating stack overflow by abstract interpretation. ACM Transactions on Embedded Computed Systems 4, 4, 751--778. Google Scholar
Digital Library
- Martin D. Schwarz, Helmut Seidl, Vesal Vojdani, Peter Lammich, and Markus Müller-Olm. 2011. Static analysis of interrupt-driven programs synchronized via the priority ceiling protocol. In POPL’11. ACM, 93--104. Google Scholar
Digital Library
- Trampoline. 2015. OpenSource RTOS project. Retrieved July 4, 2016 from http://trampoline.rts-software.org/.Google Scholar
- Xueguang Wu, Liqian Chen, Antoine Miné, Wei Dong, and Ji Wang. 2015. Numerical static analysis of interrupt-driven programs via sequentialization. In EMSOFT’15. IEEE Press, 55--64. Google Scholar
Digital Library
- Wenhua Yang, Yepang Liu, Chang Xu, and Shing-Chi Cheung. 2015. A survey on dependability improvement techniques for pervasive computing systems. SCIENCE CHINA Information Sciences 58, 5, 1--14.Google Scholar
Index Terms
Static Analysis of Runtime Errors in Interrupt-Driven Programs via Sequentialization
Recommendations
Numerical static analysis of interrupt-driven programs via sequentialization
EMSOFT '15: Proceedings of the 12th International Conference on Embedded SoftwareEmbedded software often involves intensive numerical computations and thus can contain a number of numerical run-time errors. The technique of numerical static analysis is of practical importance for checking the correctness of embedded software. ...
A Value Analysis for C Programs
SCAM '09: Proceedings of the 2009 Ninth IEEE International Working Conference on Source Code Analysis and ManipulationWe demonstrate the value analysis of Frama-C. Frama-C is an Open Source static analysis framework for the C language. In Frama-C, each static analysis technique, approach or idea can be implemented as a new plug-in, with the opportunity to obtain ...
Modular verification of interrupt-driven software
ASE '17: Proceedings of the 32nd IEEE/ACM International Conference on Automated Software EngineeringInterrupts have been widely used in safety-critical computer systems to handle outside stimuli and interact with the hardware, but reasoning about interrupt-driven software remains a difficult task. Although a number of static verification techniques ...






Comments