[ | smalltalk dot org ].
Community and industry meet inventing the future.
OOVM/Resilient Embedded Smalltalk by OOVM A/S and Esmertec

OOVM A/S (Object Oriented Virtual Machines) which develop a unique and advanced software development platform. OOVM develops the next generation software platform for embedded systems to dramatically improve productivity, serviceability, and reliability.

The OOVM platform is based on a small object-oriented virtual machine, which runs directly on hardware without the need for an operating system. All software components are compiled to safe, ultra compact bytecodes and executed on top of the virtual machine. The compactness makes it possible to fit the virtual machine, core libraries, device drivers, TCP/IP networking stack, and user applications in less than 128KB of memory. The OOVM platform supports pure object-oriented programming. Programmers familiar with object-oriented programming can take advantage of their skills and immediately start developing for embedded devices. Object-orientation enables software reuse. Since bytecodes are independent of the underlying hardware, software components can be reused across different hardware architectures.

"If you have say, a small router or a dishwasher you can upgrade the code while it's running, no reboot is required," [Lars] Bak told us today. "If you have a device, and you have more than one component it doesn't make sense to shut down the system."
Register article

Embedded software today is written in C, linked with libraries and run on top of an RTOS. You put a binary image on a flash memory, and then debug with printf statements or In-Circuit Emulators. The development goes on slowly and uses an unsafe programming language; also there's no way to fix bugs in the deployed product.

Modern systems have embedded software everywhere, even hi-fi systems and digital speakers might be connected by FireWire: Bang & Olufsen uses them and wants to update software and debug/fix potential problems at the customer's site via the Internet.

The embedded industry is requesting increased reliability and rapid development cycles, and also to do quick and cheap dynamic software updates in the field (especially for things like cell phones).

Is embedded Java (J2ME) the solution? The problem is that it has a very complicated virtual machine specification, and the bytecodes are not designed for speed and compactness. It also does not support changing methods and continuing execution on the fly after debugging (you might need to recompute all vtables when adding a single method). There is finally the issues of big libraries that come together with Java, requiring up to 1MB of ROM.

What could be better? It would be nice to use a safe language with dynamic capabilities, that could support a development environment directly connected to the running system, and that could do dynamic software updates.

Lars [Bak] has been implementing object-oriented virtual machines for 18 years, including Beta, Self, Strongtalk, HotSpot for Java (150 million downloads), and then a small HotSpot for cell phones, and now he started his own company called OOVM. OOVM produces a Smalltalk for embedded systems which is a bit different from standard Smalltalk: reflection is only available in the development VM, there is an atomic test and store statement for synchronization, namespaces are supported, and blocks can optionally be typed and LIFO for performance. Pool variables and class-instance variables were removed.
The OOVM embedded platform executes platform independent bytecodes directly on the bare metal, without any underlying RTOS nor C library and with a small memory footprint. The programming environment connects to a running program, supporting true incremental development and full serviceability of running application.


OOVM article by Lars Bak (quoted above). .
Esmertec to acquire OOVM
Esmertec acquires OOVM
Smalltalk/VM allows code modification on the fly OSNews article.
Smalltalk Powers Forward by James Robertson

In depth review of OOVM in the article Resilient - Making Embedded Systems in Smalltalk by James Robertson

A course in the Design and Implementation of Object-Oriented Virtual Machines provides multiple PDF files that explore the topic in depth.
This course focuses on how to design and implement virtual machines for object oriented languages. First part of the course discusses the designs behind some of today's high performance virtual machines. A simple virtual machine is introduced as a platform for testing the implementation techniques covered by this part of the course. The second part of the course is project based: participants are expected to enhance or implement a virtual machine. The result is a report that describes the implementation and any experiences. To widen the perspective, virtual machines for functional languages will be contrasted to object-oriented virtual machines."

High Performance Virtual Machines [PDF] slide presentation.
What is a high performance virtual machine? It is a virtual machine that applies an array of optimizations while preserving the illusion that it executes byte codes.

A slide presentation Resilient: Making Embedded Systems Serviceable [PDF] by Lars Bak.
To present a new compact and fast embedded object-oriented system that provides product serviceability. A variant of the Smalltalk language.

Copyright 1999-2010 by Smalltalk.org™, All Rights Reserved.
April 16 2014
Travel Adventure

Costa Rica

El Salvador




Enjoy a tropical vacation in the sun, surf, in the jungle for adventure, yoga and massage for relaxation or learn the culture, history and langauge. Visit, live, work, play, retire. Enjoy.

Central America
Interoperate.org, the place to find out how to interoperate.

64bits.net AMD64, Intel Pentium EM64T, Intel Itanium
Meet other Smalltalk people, contribute, learn, earn.
On speaking languages
naturally with ease
aiming for fluid fluency.