سند علمی

Functional programming and embedded systems

چکیده

Embedded computer systems seem to be the antithesis of functional language systems. Embedded systems are small, stand-alone, and are often forced to accept inelegant design compromises due to hardware cost. They run continuously and are reactive, that is, their primary goal is to monitor sensors and control effectors, using observed external events to trigger state-changing control actions. Yet this thesis describes how functional abstraction can tame the inelegance of embedded systems. Architectural compromises can be made in device drivers, programmed within the functional language, but a function-level interface is presented to the application programmer. Four modifications are introduced to a test-bed purely-functional language in order to facilitate embedded-systems programming: I/O register access; communicating processes; interrupts; and a real-time incremental garbage collector. Referential transparency is preserved. The conventional model of communicating processes is augmented by the use of type classes and constructor classes to add type security around message-passing. Two case studies of embedded applications are programmed: a marble-sorter and a liftshaft. Both give encouraging results for the adequacy of the approach. Two important areas are identified for future research. (1) It is not clear to what extent lazy evaluation is a help or a hindrance in programming embedded systems. (2) Real-time expression and guarantees of schedulability would extend the attractiveness of functional languages still further.

اسناد مشابه

  • A Framework for Programming Embedded Systems: Initial Design and Results

    سند علمی۱۹۹۸Sebastian Thrun

    This paper describes CES, a proto-type of a new programming language for robots and other embedded systems, equipped with sensors and actuators. CES contains two new ideas, currently not found in other programming languages: support of computing with uncertain information, and su

  • Identification and Verification of Security Relevant Functions in Embedded Systems Based on Source Code Annotations and Assertions

    سند علمی۲۰۱۰WISTPJohannes Loinig, Christian Steger, Reinhold Weiss, Ernst Haselsteiner

    Most modern embedded systems include an operating system. Not all functions in the operating systems have to fulfill the same security requirements. In this work we propose a mechanism to identify and maintain functions that have to meet strict security needs. This mechanism is b

  • Programming Embedded Systems in C and C + +

    سند علمی۲۰۰۲Michael Barr

    Released by guojerry@teamfly This book introduces embedded systems to C and C++ programmers. Topics include testing memory devices, writing and erasing Flash memory, verifying nonvolatile memory contents, controlling on-chip peripherals, device driver design and implementation, o

  • Automated Testcase Generation for Numerical Support Functions in Embedded Systems

    سند علمی۲۰۱۴NASA Formal MethodsJohann Schumann, Stefan-Alexander Schneider

    We present a tool for the automatic generation of test stimuli for small numerical support functions, e.g., code for trigonometric functions, quaternions, filters, or table lookup. Our tool is based on Klee to produce a set of test stimuli for full path coverage. We use a method

  • Proving the Correctness of Reactive Systems Using Sized Types 1 Embedded Functional Programs

    سند علمی۱۹۹۶John Hughes, Lars Pareto, Amr Sabry

    We have designed and implemented a type-based analysis for proving some basic properties of reactive systems. The analysis manipulates rich type expressions that contain information about the sizes of recursively deened data structures. Sized types are useful for detecting deadlo

  • mbeddr: an Extensible MPS-based Programming Language and IDE for Embedded Systems

    سند علمی۲۰۱۲Markus Voelter, Daniel Ratiu, Bernhard Schaetz, Bernd Kolb

    While the C programming language provides very good support for writing efficient, low-level code, it does not offer adequate means for defining higher-level abstractions relevant to embedded software. In this article we present the MPS-based mbeddr technology stack that supports