The most commonly used programming language in embedded systems is a low-level language C. Despite its versatility, it lacks many high-level constructs and isn't safe. One of the projects we actively develop and maintain is an implementation of the Common Lisp language called the Embeddable Common-Lisp. It shares its runtime with C and C++ languages, which makes mixing Common Lisp and C/C++ easy.
ECL (Embeddable Common-Lisp) is an interpreter and compiler that supports such operating systems as 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 Common Lisp is used around the world by both professionals and hobbyists. Thanks to its low resource requirements and reasonable license it is a perfect fit for embedding into applications with high demand for flexibility and extensibility.
The 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
The company Petro Consulting asked us to build a cheap-to-produce and modern terminal for fuel distribution. They sell it to logistic companies. Here are some of the requirements my prototype had to meet:
- Synchronization with the external system
- User authentication and authorization
- Handling peripherals (probes, RFFID reader, etc)
- A backup system and system administration
Marketing materials (in Polish) are available at the manufacturer's 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
- an 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), and
- a set of 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. The application allows translations to other languages. It is easily configurable either from the terminal or the website.
Additionally we have prepared the procedure for the deployment of the software. Devices are built on top of cheap boards with ARM1176JZF-S processors.
The project has concluded with success and the device is now sold on the fueling automation market.
We 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 production yet. A port is available on the terms of the 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 implementers.
metering – a portable Common-Lisp profiler tool originally written by Mark Kantrowitz.
cl-bench – Lisp package indended for performance bencharking of different Common Lisp implementations.
translate – a small abstraction layer for Common Lisp that facilitates translations to various languages at 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 – we've ported Linux 4.x kernel and upstream U-Boot for the Asus Transformer (tf101). We've written the keyboard driver from scratch for its detachable keyboard.