Abstract
A way to host a full general purpose virtual machine (VM) interpreter on a very small microcontroller platform is described. This machine provides a comprehensive set of general and enhanced functionality efficiently by abstracting the VM instruction set. Measurements were made on the execution of software programs in the virtual machine while running on the target platform in order to demonstrate the machine’s capabilities. Additionally, multitasking capabilities were added to the baseline and found to perform efficiently within the VM. The results proved to be satisfactory and demonstrate that a robust virtual machine can be made available for very small embedded platforms based on simple microcontrollers, such as those that are widely found in aerospace applications.
Similar content being viewed by others
References
Abelson H, Dybvig R, Haynes C, Rozas G, Adams N, Friedman D, et al (1998) Revised report on the algorithmic language scheme. In: Higher-order and symbolic computation, pp 7–105
Agosta G, Reghizzi S, Svelto G (2006) Jelatine: a virtual machine for small embedded systems. In: JTRES ’06 Proceedings of the 4th international workshop on Java technologies for real-time and embedded systems. JTRES ’06, Paris, pp 170–177
Aslam F, Schindelhauer C, Ernst G, Spyra D, Meyer J, Zalloom M (2008) Introducing TakaTuka: a Java virtual machine for motes. In: Proceedings of the 6th ACM conference on Embedded network sensor systems (SenSys ’08). ACM, New York, pp 399–400
Atmel Corporation. (2010). AVR Solutions—8 and 32 bit low power, high performance MCU. Retrieved September 2, 2010, from Atmel. http://www.atmel.com/dyn/products/devices.asp?family_id=607#1965 (June 15)
Atmel Product Guide (2011) Key parameters for ATxmega128A1. Retrieved April 13, 2011, from Atmel Corporation Product Guide. http://www.atmel.com/dyn/products/product_parameters.asp?category_id=163&family_id=607&subfamily_id=1965&part_id=4298&ListAllAttributes=1
Atmel XPlain (2010) AVR Xplain Series. Retrieved November 16, 2010, from Atmel. http://www.atmel.com/products/AVR/xplain.asp?family_id=607
Brouwers N, Corke P, Langendoen K (2009) Darjeeling, a feature-rich VM for the resource poor. In: Proceedings of the 7th ACM conference on embedded networked sensor systems (SenSys ’09). ACM, New York, pp 18169–18182
Brouwers N, Langendoen K, Corke P (2009). Darjeeling, a feature-rich VM for the resource poor. In: Proceedings of the 7th ACM conference on embedded networked sensor systems (SenSys ’09) (pp. 169–182). New York, ACM
Byte Craft Limited (2010) Catalog. Retrieved December 19, 2010, from Byte Craft Limited. http://www.bytecraft.com/MPC_C_Compiler_for_Microchip_PIC
Craig ID (2005) Virtual Machines. Springer, New York
Davis WR (2012) Evaluating virtual machines for use on a small embedded real time microcontroller platform. Dissertation, Colorado Technical University, Colorado Springs
Demichelis A (2010) Squirrel the Programming Language. Retrieved August 20, 2010, from Squirrel: http://squirrel-lang.org/ (August 12)
Dis Virtual Machine Specification (1999) (Lucent Technologies) Retrieved August 20, 2010, from vita nuova. http://www.vitanuova.com/inferno/papers/dis.html (September 30)
Eickhold J, Fuhrmann T, Saballus B, Schlender S, Suchy T (2008) AmbiComp: a platform for distributed execution of Java programs on embedded systems. AmI-Blocks’08, European Conference on Ambient Intelligence 2008. Nurnberg
Eller H (2005) Optimizing Interpreters with Superinstructions. Master’s Thesis, Institut fur Computersprachen der Technischen Universit at Wien, Wien
eLua—Embedded Lua (2010) Retrieved August 20, 2010, from eLua Project. http://www.eluaproject.net/ (August 4)
GHI Electronics (2012) TinyCLR. Retrieved March 20, 2012, from TinyCLR. http://www.tinyclr.com/
Gutierrez DA, Soler FO (2008) Applying lightweight flexible virtual machines to extensible embedded systems. In: Proceedings of the 1st workshop on isolation and integration in embedded systems. ACM, Glasgow, pp 23–28
Hammond K, Michaelson G (2003) Hume: a domain-specific language for real-time embedded systems. In: Proceedings of the 2nd international conference on generative programming and component engineering. Springer, Erfurt, pp 37–56
Harbaum T (2006) The NanoVM—Java for the AVR. Retrieved April 21, 2011, from Harbaum. http://www.harbaum.org/till/nanovm/index.shtml (June 13)
Hudak P (1996) Building domain-specific embedded languages. ACM Computing Surveys (CSUR), 28 (4es)
IAR Systems (2010) IAR embedded workbench for Atmel AVR. Retrieved November 16, 2010, from IAR Systems. http://www.iar.com/website1/1.0.1.0/107/1/
ISO 7185:1990 (1990) Retrieved August 20, 2010, from International Organization for Standardization. http://www.iso.org/iso/iso_catalogue/catalogue_ics/catalogue_detail_ics.htm?csnumber=13802
Kazi I, Chen H, Stanley B, Lilja D (2000) Techniques for obtaining high performance in Java Programs. ACM Computing Surveys, pp 213–240
Levis P, Culler D (2002) Maté A tiny virtual machine for sensor networks. In: Proceedings of the 10th international conference on Architectural support for programming languages and operating systems, pp 85–95
Lilith and Modula-2 (2010) (CFB Software) Retrieved August 20, 2010, from CFB Software. http://www.cfbsoftware.com/modula2/
Longbottom R (2010) Dhrystone Benchmark Results On PCs. Retrieved March 2, 2011, from Roy Longbottom’s PC Benchmark Collection. http://www.roylongbottom.org.uk/dhrystone%20results.htm (November)
Lua the Programming Language (2010) Retrieved August 20, 2010, from Lua. http://www.lua.org/ (July 29)
Micrium (2010) uC/OS-II Kernel. Retrieved December 20, 2010, from Micrium. http://www.micrium.com/page/products/rtos/os-ii
Microsoft .NET Micro Framework (2010) Retrieved August 20, 2010, from Microsoft .NET Micro Framework. http://www.netmf.com/Home.aspx (August 19)
Microsoft (2011) .NET Micro Framework. Retrieved March 20, 2012, from Microsoft. http://www.microsoft.com/en-us/netmf/default.aspx
Microsoft (2010) Common language runtime overview. Retrieved October 21, 2010, from Microsoft Corporation. http://msdn.microsoft.com/en-us/library/ddk909ch
Microsoft (2010) Device memory management in the .NET Compact Framework. Retrieved October 26, 2010, from Microsoft Corporation. http://msdn.microsoft.com/en-us/library/s6x0c3a4.aspx
Microsoft Visual Studio (2005) Microsoft Visual Studio 2005. Retrieved May 30, 2011, from Microsoft. http://www.microsoft.com/visualstudio/en-us/products/2005-editions
Mono for Android (2012) Retrieved March 20, 2012, from Xamarin. http://xamarin.com/monoforandroid
Moore S (2010) http://www.standardpascal.org/p5.html. Retrieved August 20, 2010, from Standard Pascal: http://www.standardpascal.org/p5.html (July)
Novell (2010) Mono-project. Retrieved August 20, 2010, from Mono. http://mono-project.com/Main_Page (June 15)
Oracle (2010) Java Embedded FAQ. Retrieved October 26, 2010, from Oracle Corporation. http://www.oracle.com/technetwork/java/embedded/overview/index.html (June)
Oracle (2008) The Java Card 3 Platform. Retrieved June 21, 2011, from Oracle. http://www.oracle.com/technetwork/articles/javase/javacard3-whitepaper-149761.pdf (August)
Parrot (2010) Retrieved August 20, 2010, from Parrot. http://www.parrot.org/ (August 18)
Plummer B, Khajanchi M, Edwards SA (2006) An Esterel Virtual Machine for Embedded Systems. In: Proceedings of synchronous languages, applications, and programming (SLAP 2006)
Praus F, Kastner W (2008) User applications development using embedded Java. Retrieved April 21, 2011, from Praus. http://www.praus.at/files/knx08_embeddedjava_final.pdf
Proebsting TA (1995) Optimizing an ANSI C interpreter with superoperators. In: Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on principles of programming languages. ACM, San Francisco, pp 322–332
Riedel T, Arnold A, Decker C (2007) An OO approach to sensor programming. EWSN 2007 European conference on Wireless Sensor Networks. EWSN 2007, Delft
Simon D, Cifuentes C, Cleal D, Daniels J, White D (2006) Java on the bare metal of wireless sensor devices: the squawk Java virtual machine. In: Proceedings of the 2nd international conference on virtual execution environments (VEE ’06). ACM, New York, pp 78–88
St-Amour V, Feeley M (2009) PICOBIT: a compact scheme system for microcontrollers. Université De Montréal, Montreal
STMicroelectronics (2011) Smartcard MCU with 32-bit ARM. Retrieved June 21, 2011, from STMicroelectronics. http://www.st.com/stonline/stappl/st/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/DATA_BRIEF/CD00296560.pdf
STMicroelectronics (2008) ST23YL80 Smartcard MCU. Retrieved June 21, 2011, from STMicroelectronics. http://www.st.com/stonline/books/pdf/docs/13982.pdf
Texas Instruments (2010) Microcontrollers (MCU). Retrieved September 2, 2010, from Texas Instruments. http://focus.ti.com/mcu/docs/mcuprodoverview.tsp?sectionId=95&tabId=1531&familyId=916
The LLVM Compiler Infrastructure (2010) (University of Illinois at Urbana-Champaign) Retrieved August 20, 2010, from LLVM. http://llvm.org/ (April 27)
Topley K (2002) J2ME in a Nutshell. O’Reilly Media, Sebastopol
Virtanen J (2005) GNU Pascal. Retrieved August 20, 2010, from GNU Pascal. http://www.gnu-pascal.de/gpc/h-index.html
Weicker RP (1988) Dhrystone benchmark: rationale for version 2 and measurement rules. SIGPLAN Notices 23(8): 49–62
Weicker RP (1984) Dhrystone: a synthetic systems programming benchmark. Communications of the ACM 27 (10)
Weiss AR (2002) Dhrystone benchmark history, analysis, scores, and recommendations. Retrieved December 19, 2010, from EEMBC Certification Laboratories. http://www.eembc.org/techlit/datasheets/dhrystone_wp.pdf (October 1)
Wirth N (1983) Programming in Modula-2. Springer, Berlin
Wirth N (1970) The Programming language Pascal. Retrieved August 20, 2010, from. http://www-sst.informatik.tu-cottbus.de/~db/doc/People/Broy/Software-Pioneers/Wirth_hist.pdf (October 30)
XDS Modula-2 Compiler (2000) Retrieved February 22, 2011, from Excelsior LLC Web Site. http://www.excelsior-usa.com/xdsdl.html
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
About this article
Cite this article
Davis, W.R., Laplante, P.A. & Sandén, B.I. A real-time virtual machine implementation for small microcontrollers. Innovations Syst Softw Eng 8, 223–241 (2012). https://doi.org/10.1007/s11334-012-0188-1
Received:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s11334-012-0188-1