skip to main content
10.1145/3427765.3428495acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
research-article

Programming microcontrollers through high-level abstractions

Published:15 November 2020Publication History

ABSTRACT

In this paper, we present an approach for programming microcontrollers that provides more expressivity and safety than a low-level language approach traditionally used to program such devices. To this end, we provide various abstraction layers (abstraction of the microcontroller, of the electronic components of the circuit, and of concurrency) which, while being adapted to the scarce resources of the hardware, offer high-level programming traits for the development of embedded applications. The various presented abstractions make use of an OCaml virtual machine able to run on devices with limited resources and take advantage of the expressivity and extensibility of the language. We illustrate the interest of our work on both entertainment applications and embedded software examples.

References

  1. J.S. Andersen. 2012. Programming Arduinos in Ada. Free and Open Source Software Developers' European Meeting (FOSDEM'12).Google ScholarGoogle Scholar
  2. Charles Bell. 2017. MicroPython for the Internet of Things: A Beginner's Guide to Programming with Python on Microcontrollers. Apress. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Niels Brouwers, Peter Corke, and Koen Langendoen. 2008. Darjeeling, a Java Compatible Virtual Machine for Microcontrollers. In ACM/IFIP/USENIX Middleware '08 Conference Companion. ACM, 18-23. htps://doi.org/10.1145/1462735.1462740 Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Paul Caspi, Daniel Pilaud, Nicolas Halbwachs, and John Plaice. 1987. Lustre: A Declarative Language for Programming Synchronous Systems. In 14th annual ACM Symposium on Principles of Programming Languages (POPL'87). Association for Computing Machinery, 178-188. htps://doi.org/10.1145/41625.41641 Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Jean-Louis Colaço and Marc Pouzet. 2003. Clocks as First Class Abstract Types. In 3rd International Conference on Embedded Software (EMSOFT 2003 ) (Lecture Notes in Computer Science, Vol. 2855 ). Springer, 134-155. htps://doi.org/10.1007/978-3-540-45212-6_10Google ScholarGoogle ScholarCross RefCross Ref
  6. Mark Grebe and Andy Gill. 2016. Haskino: A Remote Monad for Programming the Arduino. In 18th International Symposium on Practical Aspects of Declarative Languages (PADL 2016 ) (Lecture Notes in Computer Science, Vol. 9585 ). Springer, 153-168. htps://doi.org/10.1007/978-3-319-28228-2_10Google ScholarGoogle Scholar
  7. Robbert Gurdeep Singh and Christophe Scholliers. 2019. WARDuino : a dynamic WebAssembly virtual machine for programming microcontrollers. In MPLR 2019 : proceedings of the 16th ACM SIGPLAN international conference on managed programming languages and runtimes. Association for Computing Machinery (ACM), 27-36. htps://doi.org/10.1145/3357390.3361029 Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Nicolas Halbwachs. 1998. Synchronous Programming of Reactive Systems. In 10th International Conference on Computer Aided Verification (CAV 98) (Lecture Notes in Computer Science, Vol. 1427 ). Springer, 1-16. htps://doi.org/10.1007/BFb0028726 Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Caleb Helbling and Samuel Z. Guyer. 2016. Juniper: a functional reactive programming language for the Arduino. In 4th International Workshop on Functional Art, Music, Modelling, and Design (FARM 2016 ). ACM, 8-16. htps://doi.org/10.1145/2975980.2975982 Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. F. Leens. 2009. An introduction to I2C and SPI protocols. IEEE Instrumentation Measurement Magazine 12, 1 ( 2009 ), 8-13. htps: //doi.org/10.1109/MIM. 2009.4762946Google ScholarGoogle ScholarCross RefCross Ref
  11. Xavier Leroy. 1990. The ZINC experiment: an economical implementation of the ML language. Technical Report 117. INRIA. 100 pages.Google ScholarGoogle Scholar
  12. Vincent St-Amour and Marc Feeley. 2009. PICOBIT: A Compact Scheme System for Microcontrollers. In 21st International Symposium on Implementation and Application of Functional Languages (IFL 2009 ) (Lecture Notes in Computer Science, Vol. 6041 ). Springer, 1-17. htps://doi.org/10.1007/978-3-642-16478-1_1 Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Ryan Suchocki and Sara Kalvala. 2014. Microscheme: Functional programming for the Arduino. In Proceedings of the 2014 Scheme and Functional Programming Workshop (Scheme '14). 1-9.Google ScholarGoogle Scholar
  14. Steven Varoumas and Tristan Crolard. 2019. WCET of OCaml Bytecode on Microcontrollers: An Automated Method and Its Formalisation. In Proceedings of the 19th International Workshop on Worst-Case Execution Time Analysis (WCET 2019 ). Schloss Dagstuhl-Leibniz-Zentrum für Informatik, 5 : 1-5 : 12. htps://doi.org/10.4230/OASIcs.WCET. 2019.5Google ScholarGoogle Scholar
  15. Steven Varoumas, Benoît Vaugon, and Emmanuel Chailloux. 2016. Concurrent Programming of Microcontrollers, a Virtual Machine Approach. In 8th European Congress on Embedded Real Time Software and Systems (ERTS'16). 1-10.Google ScholarGoogle Scholar
  16. Steven Varoumas, Benoît Vaugon, and Emmanuel Chailloux. 2018. A Generic Virtual Machine Approach for Programming Microcontrollers: the OMicroB Project. In 9th European Congress on Embedded Real Time Software and Systems (ERTS'18). 1-10.Google ScholarGoogle Scholar

Index Terms

  1. Programming microcontrollers through high-level abstractions

          Recommendations

          Comments

          Login options

          Check if you have access through your login credentials or your institution to get full access on this article.

          Sign in
          • Published in

            cover image ACM Conferences
            VMIL 2020: Proceedings of the 12th ACM SIGPLAN International Workshop on Virtual Machines and Intermediate Languages
            November 2020
            14 pages
            ISBN:9781450381901
            DOI:10.1145/3427765

            Copyright © 2020 ACM

            Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

            Publisher

            Association for Computing Machinery

            New York, NY, United States

            Publication History

            • Published: 15 November 2020

            Permissions

            Request permissions about this article.

            Request Permissions

            Check for updates

            Qualifiers

            • research-article

            Acceptance Rates

            Overall Acceptance Rate4of4submissions,100%

            Upcoming Conference

          PDF Format

          View or Download as a PDF file.

          PDF

          eReader

          View online with eReader.

          eReader