Written on 2016-05-26 12:30

Embeddable Common-Lisp

The most commonly used programming language in the embedded systems is a low-level language C. Despite it's versatility it lacks many high-level constructs and isn't safe. One of the projects I actively develop and maintain is an implementation of the Common Lisp language called the Embeddable Common-Lisp. It shares it's runtime with C and C++ languages what makes mixing Common Lisp and C/C++ easy.

ECL (Embeddable Common-Lisp) is an interpreter and compiler supporting operating systems Linux, FreeBSD, NetBSD, OpenBSD, OS X, Solaris, Windows and Android, running on top of the Intel, Sparc, Alpha, PowerPC and ARM processors.

This stable and mature implementation of the Common Lisp is used all around the world by both the professionals and the hobbyists. Thanks to it's low resource requirements and a reasonable license it is a perfect fit for embedding into an applications with high demand of flexibility and extensibility.

Implementation is available on terms of a very liberal license LGPL 2.1+ which allows unlimited distribution and inclusion in other software. For commercial support please contact me.

Petromat Mikro terminal

Company Petro Consulting asked me to build a cheap to produce and modern terminal for fuel distribution. They sell it to the logistic companies. Some of the requirements my prototype had to met:

  • synchronization with the external system,
  • user authentication and authorization,
  • handling the peripherals (probes, RFFID reader, etc),
  • backup system and system administration.

Petromat Mikro

Marketing materials (in Polish) are available on the producent website.

From the technical point of view it is a device controlled by a dedicated GNU/Linux distribution which among other things is composed of:

  • SQL database,
  • µPetromat application (using in-house GUI system based on the DirectFB framework),
  • HTTP server,
  • drivers for peripherals (RFFID reader, numeric keyboard, fluid monitoring system etc),
  • set of the scripts responsible for controlling systems health.

System authenticates and authorizes terminal users logging all the transactions in a database and registers the results reported by probes. Application allows translations for other languages. It is easily configurable either from the terminal and the website.

Additionally I have prepared the procedure for the software deployment. Devices are built around cheap boards with ARM1176JZF-S processor.

Project has ended with success and automate is now sold on the fueling automation market.

Other software

I maintain and develop many other applications and libraries. Here are some highlights:

  • ECL Android – this application is in the early development stage and isn't ready for the production yet. Port is available on terms of AGPL-3.0+ license.

  • ANSI Common Lisp test suite – originally written by Paul Dietz, test suite which verifies conformance of the CL implementation. Very helpful for the implementers.

  • metering – portable Common-Lisp profiler tool originally written by Mark Kantrowitz.

  • cl-bench – Lisp package indended for performance bencharking of different Common Lisp implementations.

  • translate – small abstraction layer for Common Lisp enabling translations for various languages at the runtime.

Projects I have developed in the past

  • HMEANT annotation and computation tool – natural language processing application with the graphical user interface.

  • TF101 Linux kernel and U-Boot bootloader ports – I've ported Linux 4.x kernel and upstream U-Boot for the Asus Transformer (tf101). I've written keyboard driver from scratch for it's detachable keyboard.