Choosing Appropriate Programming Language to Implement Software for Real-Time Resource- Constrained Embedded Systems

ion and offers a better O-O programming style, but some of its features may cause degradation in program efficiency (Barr, 1999). Also, such a new generation O-O language is not readily available for the small embedded systems, primarily because of the overheads inherent in the O-O approach, e.g. CPU-time overhead (Pont, 2003). Despite that Ada was a leading language that provided full support for concurrent and realtime programming, it has not gained much popularity (Brosgol, 2003) and has rarely been used outside the areas related to defense and aerospace applications (Barr, 1999; Ciocarlie & Simon, 2007). Unlike C, not many programmers nowadays are experienced in Ada, therefore only a small number of embedded systems are currently developed using this language (Ciocarlie & Simon, 2007). In addition, despite their approved efficiency, Ada compilers are not widely available for small embedded microcontrollers and usually need hard work to accept the program; especially by new programmers (Dewar, 2006). Indeed, both Ada and C++ have too large demand on low-cost embedded systems resources (e.g. memory requirements) and therefore cannot be suitable languages for such applications1 (Walls, 2005). 1 However, despite the indicated limitations of Ada, there has been a great deal of work on assessing a new version of Ada language (i.e. Ada-2005) to widen its application domain (see Burns, 2006; Taft et al., 2007). It has been noted that Ada-2005 can have the potential to overwhelm the use of “C” and its descendants in embedded systems programming (Brosgol and Ruiz, 2007).

[1]  Ascher Opler Requirements for real-time languages , 1966, CACM.

[2]  John Forrest Brown Embedded systems programming in C and Assembly , 1994 .

[3]  Jean J. Labrosse,et al.  Embedded Systems Building Blocks: Complete and Ready-to-use Modules in C , 1995 .

[4]  Per Brinch Hansen,et al.  The programming language Concurrent Pascal , 1975, IEEE Transactions on Software Engineering.

[5]  Michael J. Pont,et al.  Patterns which help to avoid conflicts over shared resources in time-triggered embedded systems which employ a pre-emptive scheduler , 2007, EuroPLoP.

[6]  Organización Internacional de Normalización ISO 5127 : Information and documentation -- Vocabulary , 2001 .

[7]  Ellis Horowitz,et al.  The Evolution of Programming Languages , 1983 .

[8]  Brian A. Wichmann,et al.  Reference Manual for the Ada Programming Language. Proposed Standard Document , 1980 .

[9]  W. Diehl,et al.  Extended FORTRAN for Process Control , 1968, IEEE Transactions on Industrial Electronics and Control Instrumentation.

[10]  Teera Phatrapornnant,et al.  Reducing jitter in embedded systems employing a time-triggered software architecture and dynamic voltage scaling , 2006, IEEE Transactions on Computers.

[11]  Henry Ledgard,et al.  Reference Manual for the ADA® Programming Language , 1983, Springer New York.

[12]  Mo Budlong Teach yourself Cobol in 21 days , 1994 .

[13]  H. Ciocarlie,et al.  Definition of a High Level Language for Real-Time Distributed Systems Programming , 2007, EUROCON 2007 - The International Conference on "Computer as a Tool".

[14]  J. D. Schoeffler,et al.  A real-time language for industrial process control , 1970 .

[15]  B.C. Roberts Fortran IV in a Process Control Environment , 1968, IEEE Transactions on Industrial Electronics and Control Instrumentation.

[16]  Niklaus Wirth,et al.  Recollections about the development of Pascal , 1993, HOPL-II.

[17]  Herbert Schildt,et al.  Teach Yourself C , 1990 .

[18]  Dong,et al.  Network Dictionary , 2007 .

[19]  D. G. Bates PROSPRO/1800 , 1968, IEEE Transactions on Industrial Electronics and Control Instrumentation.

[20]  Hartwig U. Steusloff Advanced Real-Time Languages for Distributed Industrial Process Control , 1984, Computer.

[21]  Michael J. Pont,et al.  Reducing the impact of task overruns in resource-constrained embedded systems in which a time-triggered software architecture is employed , 2008 .

[22]  Kenneth A. Lambert,et al.  Java: A Framework for Program Design and Data Structures , 2000 .

[23]  Phillip A. Laplante,et al.  Real-Time Systems Design and Analysis , 1992 .

[24]  Kiyofumi Tanaka,et al.  Embedded Systems - Theory and Design Methodology , 2014 .

[25]  Michael Barr,et al.  Programming embedded systems in C and C , 1999 .

[26]  Kirk Zurell C Programming for Embedded Systems , 2000 .

[27]  Wolfgang A. Halang,et al.  Comparative evaluation of high-level real-time programming languages , 2005, Real-Time Systems.

[28]  P.H. Jarvis Some Experiences with Process Control Languages , 1968, IEEE Transactions on Industrial Electronics and Control Instrumentation.

[29]  Ted Van Sickle Reusable software components: object-oriented embedded systems programming in C , 1997 .

[30]  John C. Mitchell,et al.  Concepts in programming languages , 2002 .

[31]  Richard H. Barnett,et al.  Embedded C Programming and the Atmel AVR , 2002 .

[32]  Henrik Schutz On the Design of a Language for Programming Real-Time Concurrent Processes , 1979, IEEE Transactions on Software Engineering.

[33]  Ronald J. Kizior,et al.  The Case for Continued Cobol Education , 2000, IEEE Softw..

[34]  Pankaj Jalote,et al.  An Integrated Approach to Software Engineering , 1997, Undergraduate Texts in Computer Science.

[35]  Michael J. Pont Patterns for Time-Triggered Embedded Systems: Building Reliable Applications with the 8051 Family of Microcontrollers , 2001 .

[36]  Ricardo Bautista-Quintero,et al.  Meeting Real-Time Constraints Using "Sandwich Delays" , 2009, Trans. Pattern Lang. Program..

[37]  Jean E. Sammet,et al.  Programming languages - history and fundamentals , 1969, Prentice-Hall series in automatic computation.

[38]  Erhard Plödereder,et al.  Ada 2005 Reference Manual. Language and Standard Libraries - International Standard ISO/IEC 8652/1995 (E) with Technical Corrigendum 1 and Amendment 1 , 2007, Lecture Notes in Computer Science.

[39]  Alan Burns,et al.  Concurrent programming , 1980, Operating Systems Engineering.

[40]  M. V. Panduranga Rao,et al.  Development of Scheduler for Real Time and Embedded System Domain , 2008, 22nd International Conference on Advanced Information Networking and Applications - Workshops (aina workshops 2008).

[41]  Jesse Liberty Teach yourself C++ in 21 days , 1994 .

[42]  Michael J. Pont,et al.  Restructuring a pattern language which supports time-triggered co-operative software architectures in resource-constrained embedded systems , 2006 .

[43]  Stephen H. Kaisler Real-Time Languages , 2002 .

[44]  Alexander S. Douglas,et al.  Book Review: IFIP-ICC Vocabulary of Information Processing, 1966 , 1966, Computer/law journal.

[45]  G.W. Oerter A New Implementation of Decision Tables for a Process Control Language , 1968, IEEE Transactions on Industrial Electronics and Control Instrumentation.

[46]  Des Watson High-level languages and their compilers , 1989, International computer science series.

[47]  Stephen J. Chapman Fortran 90/95 for Scientists and Engineers , 1998 .

[48]  James M. Bieman,et al.  Finding code on the World Wide Web: a preliminary investigation , 2001, Proceedings First IEEE International Workshop on Source Code Analysis and Manipulation.

[49]  Otto Vollnhals,et al.  Dictionary of computer science , 1984 .

[50]  Michael J. Pont,et al.  The maintenance and evolution of resource-constrained embedded systems created using design patterns , 2007, J. Syst. Softw..

[51]  James Martin Fourth-generation languages. Volume I: principles , 1985 .

[52]  Giuseppe De Giacomo History of Programming Languages , 2006 .

[53]  Theodore P. Baker,et al.  The cyclic executive model and Ada , 2006, Real-Time Systems.

[54]  Miro Samek,et al.  Practical statecharts in C/C++: Quantum programming for embedded systems , 2002 .

[55]  Michael J. Pont,et al.  Developing reliable embedded systems using 8051 and ARM processors: Towards a new pattern language , 2003 .

[56]  Edmond Schonberg,et al.  Ada 2012 Reference Manual. Language and Standard Libraries , 2013, Lecture Notes in Computer Science.

[57]  Grady Booch,et al.  Object-Oriented Design with Applications , 1990 .

[58]  Robert G. Clark,et al.  Comparative Programming Languages , 2000 .

[59]  James Davis,et al.  A brief history of programming languages , 1998 .

[60]  Michael J. Pont,et al.  Designing embedded systems using patterns: A case study , 2004, J. Syst. Softw..

[61]  O. Kircher,et al.  On-Line Missil , 1968, IEEE Transactions on Industrial Electronics and Control Instrumentation.

[62]  Ian Broster,et al.  Flexibility in dependable real-time communication , 2003 .

[63]  Paolo Faraboschi,et al.  Embedded Computing: A VLIW Approach to Architecture, Compilers and Tools , 2004 .

[64]  Tim Edwards,et al.  Prototyping Time-triggered Embedded Systems using PC Hardware , 2003, EuroPLoP.

[65]  Colin Walls Embedded Software: The Works , 2005 .

[66]  Chris Tapp An Introduction to MISRA C , 2008 .

[67]  Jack G. Ganssle,et al.  The Art of Programming Embedded Systems , 1991 .

[68]  Thomas J. Bergin,et al.  History of programming languages---II , 1996 .

[69]  Peter I. P. Boulton,et al.  A Process-Control Language , 1969, IEEE Transactions on Computers.

[70]  Mouaaz Nahas,et al.  Bridging the gap between scheduling algorithms and scheduler implementations in time-triggered embedded systems. , 2009 .

[71]  R.E. Hohmeyer CDC 1700 FORTRAN for Process Control , 1968, IEEE Transactions on Industrial Electronics and Control Instrumentation.