Results 1 - 10
of
11
Abstractions for safe concurrent programming in networked embedded systems
- In Proceedings of 4th ACM Conference on Embedded Networked Sensor Systems (SenSys 06
, 2006
"... Over the last several years, large-scale wireless mote networks have made possible the exploration of a new class of highly-concurrent and highly-distributed applications. As the horizon of what kinds of applications can be built on these networked embedded systems keeps expanding, there is a need t ..."
Abstract
-
Cited by 16 (0 self)
- Add to MetaCart
Over the last several years, large-scale wireless mote networks have made possible the exploration of a new class of highly-concurrent and highly-distributed applications. As the horizon of what kinds of applications can be built on these networked embedded systems keeps expanding, there is a need to keep the activity of programming such systems easy, efficient, and scalable. We make three major contributions in this paper. First, we present a library for TinyOS and nesC that enables true multi-threading on a mote. This library includes support for all mote platforms in use currently (AVR, MSP). Second, we present a tool that can effectively and accurately compute stack requirements for multithreaded programs. Such analysis ensures that the stacks allocated to individual threads are correctly sized. Finally, we present a collection of programming abstractions that simplifies the construction of concurrent systems for the mote platform. We also present experimental results obtained from several example systems built using our concurrent programming abstractions and the underlying thread library. Categories and Subject Descriptors C.3 [Special purpose and Application-based systems]: Real-time and embedded systems; D.1.3 [Concurrent Programming]: Parallel programming; D.3.3 [Language Constructs and Features]: Concurrent programming structures
Abstract Interpretation of PIC Programs through Logic Programming
- In SCAM ’06: Proceedings of the Sixth IEEE International Workshop on Source Code Analysis and Manipulation (SCAM’06
, 2006
"... A logic based general approach to abstract interpretation of low-level machine programs is reported. It is based on modelling the behavior of the machine as a logic program. General purpose program analysis and transformation of logic programs, such as partial evaluation and convex hull analysis, ar ..."
Abstract
-
Cited by 7 (1 self)
- Add to MetaCart
A logic based general approach to abstract interpretation of low-level machine programs is reported. It is based on modelling the behavior of the machine as a logic program. General purpose program analysis and transformation of logic programs, such as partial evaluation and convex hull analysis, are applied to the logic based model of the machine. A small PIC microcontroller is used as a case study. An emulator for this microcontroller is written in Prolog, and standard programming transformations and analysis techniques are used to specialise this emulator with respect to a given PIC program. The specialised emulator can now be further analysed to gain insight into the given program for the PIC microcontroller. The method describes a general framework for applying abstractions, illustrated here by linear constraints and convex hull analysis, to logic programs. Using these techniques on the specialised PIC emulator, it is possible to obtain constraints on and linear relations between data registers, enabling detection of for instance overflows, branch conditions and so on. 1
Deriving abstract transfer functions for analyzing embedded software
- In Proc. of the 2005 Conf. on Languages, Compilers, and Tools for Embedded Systems (LCTES
, 2006
"... This paper addresses the problem of creating abstract transfer functions supporting dataflow analyses. Writing these functions by hand is problematic: transfer functions are difficult to understand, difficult to make precise, and difficult to debug. Bugs in transfer functions are particularly seriou ..."
Abstract
-
Cited by 5 (1 self)
- Add to MetaCart
This paper addresses the problem of creating abstract transfer functions supporting dataflow analyses. Writing these functions by hand is problematic: transfer functions are difficult to understand, difficult to make precise, and difficult to debug. Bugs in transfer functions are particularly serious since they defeat the soundness of any program analysis running on top of them. Furthermore, implementing transfer functions by hand is wasteful because the resulting code is often difficult to reuse in new analyzers and to analyze new languages. We have developed algorithms and tools for deriving domains. The interval domain is standard; in the bitwise domain, values are vectors of three-valued bits. For both domains, important challenges are to derive transfer functions that are sound in the presence of integer overflow, and to derive precise transfer functions for operations whose semantics are a mismatch for the domain (i.e., bit-vector operations in the interval domain and arithmetic operations in the bitwise domain). We can derive transfer functions, and execute them, in time linear in the bitwidth of the operands. These functions are maximally precise in most cases. Our generated transfer functions are parameterized by a bitwidth and are independent of the language being analyzed, and also of the language in which the analyzer is written. Currently, we generate interval and bitwise transfer functions in C and OCaml for analyzing C source code, ARM object code, and AVR object code. We evaluate our derived functions by using them in an interprocedural dataflow analyzer.
Automatic Inference of Optimizer Flow Functions from Semantic Meanings
, 2007
"... Previous work presented a language called Rhodium for writing program analyses and transformations, in the form of declarative flow functions that propagate instances of user-defined dataflow fact schemas. Each dataflow fact schema specifies a semantic meaning, which allows the Rhodium system to aut ..."
Abstract
-
Cited by 5 (0 self)
- Add to MetaCart
Previous work presented a language called Rhodium for writing program analyses and transformations, in the form of declarative flow functions that propagate instances of user-defined dataflow fact schemas. Each dataflow fact schema specifies a semantic meaning, which allows the Rhodium system to automatically verify the correctness of the user’s flow functions. In this work, we have reversed the roles of the flow functions and semantic meanings: rather than checking the correctness of the user-written flow functions using the facts’ semantic meanings, we automatically infer correct flow functions solely from the meanings of the dataflow fact schemas. We have implemented our algorithm for inferring flow functions from fact schemas in the context of the Whirlwind compiler, and have used this implementation to infer flow functions for a variety of fact schemas. The automatically generated flow functions cover most of the situations covered by an earlier suite of handwritten rules.
Operations Management
, 2002
"... 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 contex ..."
Abstract
-
Cited by 2 (0 self)
- Add to MetaCart
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.
A method for symbolic computation of precise abstract transformers
, 2011
"... Abstract. In1979, Cousot andCousot gaveaspecification ofthe“best” (most-precise) abstract transformer possible for a given concrete transformer and a given abstract domain. Unfortunately, their specification does not lead to an algorithm for obtaining best transformers. In fact, algorithms are known ..."
Abstract
-
Cited by 2 (2 self)
- Add to MetaCart
Abstract. In1979, Cousot andCousot gaveaspecification ofthe“best” (most-precise) abstract transformer possible for a given concrete transformer and a given abstract domain. Unfortunately, their specification does not lead to an algorithm for obtaining best transformers. In fact, algorithms are known for only a few abstract domains. This paper presents aparametric framework that, for some abstract domains, is capable of obtaining best transformers in the limit. Because the method approaches best transformers from “above”, if the computation takes too much time it can be stopped to yield a sound abstract transformer. Thus, the framework provides a tunable algorithm that offers a performance-versus-precision trade-off. domains, such as intervals, polyhedra, and Cartesian predicate abstraction. We also show that the framework applies to several new variants of predicate-abstraction domains that we define in the paper. 1
COCV 2005 Preliminary Version Automatically Inferring Sound Dataflow Functions from Dataflow Fact Schemas
"... In previous work, we presented a language called Rhodium for writing program analyses and transformations that could be checked for soundness automatically. In this work, we present an algorithm for automatically inferring sound flow functions given only a set of dataflow fact schemas. By generating ..."
Abstract
- Add to MetaCart
In previous work, we presented a language called Rhodium for writing program analyses and transformations that could be checked for soundness automatically. In this work, we present an algorithm for automatically inferring sound flow functions given only a set of dataflow fact schemas. By generating the flow functions mechanically, our approach reduces the burden on compiler writers. This paper presents a detailed description of our algorithm and shows how it works on several examples. We have run our algorithm by hand on all the statements of a simple C-like intermediate language for an is-constant fact schema, a points-to fact schema, and a variable-equality fact schema. Our algorithm generated a total of 71 rules for these cases. It generated all but one of the rules we had written by hand for these dataflow fact schemas, and it also generated new useful rules that we had not thought of previously.
Bilateral Algorithms for Symbolic Abstraction
"... Abstract. Given a concrete domain C, a concrete operation τ: C → C, and an abstract domain A, a fundamental problem in abstract interpretation is to find the best abstract transformer τ # : A → A that overapproximates τ. This problem, as well as several other operations needed by an abstract interpr ..."
Abstract
- Add to MetaCart
Abstract. Given a concrete domain C, a concrete operation τ: C → C, and an abstract domain A, a fundamental problem in abstract interpretation is to find the best abstract transformer τ # : A → A that overapproximates τ. This problem, as well as several other operations needed by an abstract interpreter, can be reduced to the problem of symbolic abstraction: the symbolic abstraction of a formula ϕ in logic L, denoted by ̂α(ϕ), is the best value in A that over-approximates the meaning of ϕ. When the concrete semantics of τ is defined in L using a formula ϕτ that transformer τ # can be computed as ̂α(ϕτ). In this paper, we present a new framework for performing symbolic abstraction, discuss its properties, and present several instantiations for various logics and abstract domains. The key innovation is to use a bilateral successive-approximation algorithm, which maintains both an overapproximation and an under-approximation of the desired answer. The advantage of having a non-trivial over-approximation is that it makes the technique resilient to timeouts. 1
Transfer Function Synthesis without Quantifier Elimination
"... Abstract. Recently it has been shown how transfer functions for linear template constraints can be derived for bit-vector programs by operating over propositional Boolean formulae. The drawback of this method is that it relies on existential quantifier elimination, which induces a computational bott ..."
Abstract
- Add to MetaCart
Abstract. Recently it has been shown how transfer functions for linear template constraints can be derived for bit-vector programs by operating over propositional Boolean formulae. The drawback of this method is that it relies on existential quantifier elimination, which induces a computational bottleneck. The contribution of this paper is a novel method for synthesising transfer functions that does not rely on quantifier elimination. We demonstrate the practicality of the method for generating transfer functions for both intervals and octagons. 1

