L – A Common Lisp for Embedded Systems

A commercially available system has been developed which allows for the use of Common Lisp in real time embedded control systems. The backbone of this system is a language called L. L is a subset of Common Lisp with multi-processing extensions. It is ideal for use in embedded systems with small computers. The system has a minimal memory footprint and can run on small processors. L contains both a runtime environment and an interpreter which runs on the target system and a cross compiler which runs on the host system. Making use of Common Lisp’s macro facilities, a special purpose language has been constructed on top of L, called MARS for Multiple Agency Reactivity System. This language is uniquely tailored for real time control applications. It allows for the spawning of many small processes which communicate with one another via a message passing approach. A graphical user interface debugging tool was also developed which allows real time monitoring and modification of values of variables on the target system by the host system. Underlying this system is an efficient real time operating system, called VENUS. The operating system is written in C for portability. The interface between L code and the hardware takes place via operating system calls. L accesses the C operating system calls via its foreign function interface. The first application for this system has been the programming and control of autonomous mobile robots. These robotic systems must process and react to their sensor systems in real time.