THE PROGRAMMING LANGUAGE FOR EMBEDDED REAL-TIME DEVICES WITH REDUCING ERRORS AND WITHOUT REDUCING THE PERFORMANCE OF PROGRAMS
DOI:
https://doi.org/10.20535/2411-2976.22018.44-53Keywords:
programming languages, embedded systems, real-time systems.Abstract
Background. C or C ++ languages are most commonly used for programming of embedded systems. The main drawbacks are: lack of updates, difficulty in use, limited backward compatibility and potentially a large number of possible programmer errors. Therefore, it is important to provide developers of low-level software of embedded systems, operating systems and system
utilities with fast, productive, reliable and stable language on the basis of modern programming theory.
Objective. The aim of the paper is to create a new productive and reliable programming language for embedded systems using the principles and approaches of modern programming theory.
Methods. Analyzing well-known publications devoted to programming languages used for embedded systems allowed identifying their main advantages and disadvantages. Comparing of modern approaches to the implementation of programming languages allowed determining the requirements for the developed language.
Results. A new programming language for embedded devices has been developed. The following compiler modules are described: lexer, parser, semantic analyzer, intermediate code generator. A detailed description of the developed programming language is presented.
Conclusions. In this paper, we propose to use a new programming language for embedded devices. An analysis of existing programming languages and typical developer errors was performed to ensure the reliability of the proposed language.
References
D.M. Ritchie, ‘C Programming Language History’, [Online]. Available:
https://www.livinginternet.com/i/iw_unix_c.htm. [Accessed: 27- April-
.
idris-lang.org, ‘Idris. A Language with Dependent Types’, [Online].
Available: https://www.idris-lang.org. [Accessed: 27- April- 2018].
hackage.haskell.org, ‘idris: Dependently Typed Functional
Programming Language’, [Online]. Available:
http://hackage.haskell.org/package/idris-0.1.3. [Accessed: 27- April-
.
hackage.haskell.org, ‘atom: An EDSL for embedded hard realtime
applications.’, [Online]. Available:
https://hackage.haskell.org/package/atom. [Accessed: 27- April- 2018].
ivorylang.org, ‘Ivory Language’, [Online]. Available:
https://ivorylang.org/index.html. [Accessed: 27- April- 2018].
haskell.org, ‘Haskel An advanced, purely functional programming
language’, [Online]. Available: https://www.haskell.org/. [Accessed:
- April- 2018].
nim-lang.org, ‘nim Efficient and expressive programming.’, [Online].
Available: https://nim-lang.org/. [Accessed: 27- April- 2018].
nim-lang.org, ‘Nim Manual Pragmas’, [Online]. Available: http://nimlang.
org/docs/manual.html#pragmas. [Accessed: 27- April- 2018].
github.com, ‘Nim Issues’, [Online]. Available: https://github.com/nimlang/nim/issues. [Accessed: 27- April- 2018].
rust-lang.org, ‘The Rust Programming Language’, [Online]. Available:
https://www.rust-lang.org/en-US/. [Accessed: 27- April- 2018].
lambda-the-ultimate.org, ‘Lambda the Ultimate’, [Online]. Available:
http://lambda-the-ultimate.org/node/4009. [Accessed: 27- April- 2018].
llvm.org, ‘The LLVM Compiler Infrastructure’, [Online]. Available:
http://llvm.org/. [Accessed: 27- April- 2018].
H. Massalin, ‘Synthesis: An Ecient Implementation of Fundamental
Operating System Services’, Columbia University, 1992, 158 pages.
arm.com, ‘Cortex-M Series’, [Online]. Available:
https://www.arm.com/products/processors/cortex-m. [Accessed: 27-
April- 2018].
st.com, ‘STM32 32-bit ARM Cortex MCUs’. [Online]. Available:
http://www.st.com/en/microcontrollers/stm32-32-bit-arm-cortexmcus.
html. [Accessed: 27- April- 2018].
Rasmus Christian Larsen, ‘Advanced Sleep-Mode Techniques for
Enhanced Battery Life in Real-Time Environments’, 2011. [Online].
Available:
https://www.digikey.com/en/articles/techzone/2011/dec/advanced-sleepmode-techniques-for-enhanced-battery-life-in-real-time environments. [Accessed: 27- April- 2018].
J. Atwood, ‘Hardware is Cheap, Programmers are Expensive’, 2008.
[Online]. Available: https://blog.codinghorror.com/hardware-is-cheapprogrammers-are-expensive/. [Accessed: 27- April- 2018].
misra.org.uk, ‘Motor Industry Software Reliability Association’,
[Online]. Available: https://www.misra.org.uk/. [Accessed: 27- April-
.
G. Gonzalez, ‘Worst practices should be hard’, [Online]. Available:
http://www.haskellforall.com/2016/04/worst-practices-should-behard.
html. [Accessed: 27- April- 2018].
A. Chou, J. Yang, B. Chelf, S. Hallem, and D. Engler, “An Empirical
Study of Operating Systems Errors”, ACM SIGOPS Operating Systems
Review, vol. 35, pp. 73-88, 2001.
P. J. Guo and D. Engler, “Linux Kernel Developer Responses to Static
Analysis Bug Reports”, Proceeding USENIX'09 Proceedings of the
conference on USENIX Annual technical conference, pp. 22-22,
June 14-19, 2009.
I. Abal, C. Brabrand and A. Wąsowski, ‘40 Variability Bugs in the
Linux Kernel’, IT University of Copenhagen, Copenhagen, 2014.
L. Krubner, ‘Object Oriented Programming is an expensive disaster
which must end’, [Online]. Available:
http://www.smashcompany.com/technology/object-orientedprogramming-is-an-expensive-disaster-which-must-end. [Accessed: 27-April- 2018].
heartbleed.com, ‘The Heartbleed Bug’, [Online]. Available:
http://heartbleed.com/. [Accessed: 27- April- 2018].
J. Hildenbrand, ‘Let's talk about Blueborne, the latest Bluetooth
vulnerability’, [Online]. Available: https://www.androidcentral.com/letstalk-
about-blueborne-latest-bluetooth-vulnerability. [Accessed: 27-
April- 2018].
haskell.org, ‘Alex: A lexical analyser generator for Haskell’, [Online].
Available: https://www.haskell.org/alex/. [Accessed: 27- April- 2018].
haskell.org, ‘Happy. The Parser Generator for Haskell’, [Online].
Available: https://www.haskell.org/happy/. [Accessed: 27- April- 2018].