DOI: https://doi.org/10.20535/2411-2976.22018.44-53

THE PROGRAMMING LANGUAGE FOR EMBEDDED REAL-TIME DEVICES WITH REDUCING ERRORS AND WITHOUT REDUCING THE PERFORMANCE OF PROGRAMS

Oleksii Shmalko, Pavlo Rehida, Artem Volokyta, Heorhii Loutskii, Vu Duc Thinh

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.


Keywords


programming languages; embedded systems; real-time systems.

Full Text:

PDF

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].