• DocumentCode
    3662506
  • Title

    Well-formed control flow for critical sections in RTFM-core

  • Author

    Per Lindgren;Marcus Lindner;Andreas Lindner;David Pereira;Luís Miguel Pinho

  • Author_Institution
    Luleå
  • fYear
    2015
  • fDate
    7/1/2015 12:00:00 AM
  • Firstpage
    1438
  • Lastpage
    1445
  • Abstract
    The mainstream of embedded software development as of today is dominated by C programming. To aid the development, hardware abstractions, libraries, kernels and lightweight operating systems are commonplace. Such kernels and operating systems typically impose a thread based abstraction to concurrency. However, in general thread based programming is hard, plagued by race conditions and dead-locks. For this paper we take an alternative outset in terms of a language abstraction, RTFM-core, where the system is modelled directly in terms of tasks and resources. In compliance to the Stack Resource Policy (SRP) model, the language enforces (well-formed) LIFO nesting of claimed resources, thus SRP based analysis and scheduling can be readily applied. For the execution onto bare-metal single core architectures, the rtfm-core compiler performs SRP analysis on the model and render an executable that is deadlock free and (through RTFM-kernel primitives) exploits the underlying interrupt hardware for efficient scheduling. The RTFM-core language embeds C-code and links to C-object files and libraries, and is thus applicable to the mainstream of embedded development. However, while the language enforces well-formed resource management, control flow in the embedded C-code may violate the LIFO nesting requirement. In this paper we address this issue by lifting a subset of C into the RTFM-core language allowing arbitrary control flow at the model level. In this way well-formed LIFO nesting can be enforced, and models ensured to be correct by construction. We demonstrate the feasibility by means of a prototype implementation in the rtfm-core compiler. Additionally, we develop a set of running examples and show in detail how control flow is handled at compile time and during run-time execution.
  • Keywords
    "Switches","Programming","Hardware","Kernel","Concurrent computing","Synchronization","Libraries"
  • Publisher
    ieee
  • Conference_Titel
    Industrial Informatics (INDIN), 2015 IEEE 13th International Conference on
  • ISSN
    1935-4576
  • Electronic_ISBN
    2378-363X
  • Type

    conf

  • DOI
    10.1109/INDIN.2015.7281944
  • Filename
    7281944