Elevate embedded real time programming with a synchronous language
Product development at companies such as Bosch requires systems engineering for digital hardware and mechatronic components as well as software engineering for resource constrained real time applications cooperating with distributed server applications. While many of the involved engineering disciplines greatly benefit from model based approaches and from advances in software infrastructures, deeply embedded software still is written in C since the seventies and runs on platforms designed in the nineties (e.g. OSEK) Simulation tools like Simulink or Modelica are used to test discrete code against continuous plant models or to generate code for certain aspects, but they do not really provide modern implementation technologies to address software architecture and qualities or to make embedded programming "attractive" for software professionals. We regard synchronous languages as suitable to solve many of the issues in the integration (causality) and synchronisation (clocks) of time triggered and event triggered embedded functions that exhibit their behaviour over time steps and are coordinated according to their mode switching in a structured synchronous control flow. Searching for an imperative synchronous language (with deterministic concurrent composition, and synchronous control flow) equipped with features for encapsulation and composition (objects, packages, separate compilation) and supporting programming parallel tasks deployed to separate cores (clock refinement and deterministic inter task communication) we ended up in designing our own language, suitable for resource constrained, real time applications running on multi core controllers. We will explain the main requirements and features of this language, how they integrate with the principles of a synchronous language, how they can be applied to typical everyday problems in embedded development, and how such locally synchronous services may integrate in a globally asynchronous service architecture.
MEMOCODE