PEARL is a high level procedural programming language, which was especially designed for the demanding need to have an expressive and comfortable language for solving multitasking problems when controlling technincal processes. PEARL is an abbreviation for "(P)rocess and (E)xperiment (A)utomation (R)ealtime (L)anguage".
In 1998 PEARL-90 was standardized by the Deutsches Institut für Normung e.V. in DIN 66253-2.
PEARL provides the standard data types and structures known from other procedural languages like e.g. PASCAL.
Additionally PEARL brings special language constructs for managing real-time and multitasking tasks.
Implementing a full blown compiler for PEARL-90 is a huge effort. Therefore we decided to take an evolutionary approach. First we implement a small but feature rich subset of PEARL-90 called "OpenPEARL" (This is done in the style of the well known Small-C compiler from Ron Cain and James Hendrix.).
The development of the OpenPEARL system and applications is performed with Linux. Solutions with VMware or VirtualBox were successful for Windows or MacOS users.
PEARL is designed to be platform independend. To execute a PEARL application on a specific platform, there is the need of a runtime system which provides scheduling an i/o. This is reflected in the structure of the OpenPEARL system:
1. a compiler written in Java and ANTRL transforms PEARL code into platform independent C++ code
2. a runtime system provides the platform specific API for scheduling and data types
Currently two target systems are focussed:
Linux (out of the box)
Any Linux distribution with C++ should work. Normal users may run PEARL programs only with the normal linux scheduler, which forbits the usage of priorisized task. If a user run the application with root permissions or if the system administrator allows normal user processes to use the realtime scheduler, the preemptive priority scheduling is available.
No patches and extensions are planned to be used. This solution provides an easy entry to PEARL for students.
Raspberry PI systems may be operated with this platform.
LPC1768-Landtiger Evaluation Board (ARM Cortex-M3)
This approach is the prove of concept of architecture in the runtime system. FreeRTOS is used as scheduler. This platform may be the starting point for other microcontroller systems.
ESP32
This approach attempts to use the resources of the ESP32 system on chip. Currently scheduling works and first device drivers are in production.
The top layer contains several directories. For details see the wiki page behind the directory name.
compiler contains the compiler which compiles PEARL-code into C++-codeconfiguration contains the system configuration menu to set flags for the installation demos contains demo applications errorchecker is part of the test suite to verify expected error messages from the build systemimc3 contains the Inter Module Checker, which verifies that each import (SPC) matches it declration (DCL) of global symbolslanguage_report contains the language description of OpenPEARLruntime contains all files for the runtime system for all supported targetstestsuite contains tests for successful build and runs as well as tests for expected compiler messageswikiImages contains the suorce file for images in this wikiWhen you decide to play around with OpenPEARL you are ether a user who wants to write PEARL applications, or a developer who wants to study and/or extend the features of the OpenPEARL system. Please check the description below according your needs:
Check the demo applications as first steps to verify your installation.
The first release of OpenPEARL is scheduled for end of the year 2017. Most elements of the language report are implemented except the open issues listed below:
Open Issues in the compiler section (Java):
Open Issues in the runtime system (C++):
Testing and bug reporting is always appreciated.
Please add tickets if you encounter some bugs in documentation or implementation.
Ticket reporting is open to all registered sourceforge users.
If you want do join the development team, please
Some open topics:
A list of versions is given here.
Most parts of the project are released under a derivative of the BSD license. The details can be found here.
Some 3rd party elements are distrubuted under their indivual license:
Wiki: BSD license
Wiki: Chan FatFs license
Wiki: Cortex Microcontroller System Interface Standard
Wiki: Demo Applications
Wiki: Detailed Structure of the OpenPEARL System
Wiki: Differences between OpenPEARL and PEARL90
Wiki: Differences between RTOS-UH and OpenPEARL
Wiki: Docker
Wiki: FreeRTOS license
Wiki: Getting Started as Developer
Wiki: Getting Started as User
Wiki: LpcOpen license
Wiki: Preprocessor
Wiki: Realize Error Recovery
Wiki: Tutorial
Wiki: Version History
Wiki: folderTestsuite