M42 embedded e.U.

embedded systems design & software solutions


Quality is never an accident. It is always the result of intelligent effort. John Ruskin

Services

The first and uttermost important aspect of any collaboration is a shared understanding of the project goals. Working on a common goal I can happily contribute quality engineering services in the fields of experience. Something you might want is missing? Don't hesitate to contact me!

Embedded Design

Your new business idea involves a smart device, connected to the cloud? Great! But why build that stuff yourself? Trust me, it's not as easy as to pay €30 for a raspberry and fold it until it fits into the housing! Topics like interfaces, adequate CPU, power supply, reliability, an update concept, production and many other things need to be considered. Feel free to contact me and discuss your needs!

For the better part of my industrial work I have designed and implemented software for embedded devices. I have worked with MIPS, ARM, PowerPC and many more embedded platforms, often in the early board bring-up phases doing Board Support Packages (BSP) and porting the Linux kernel. Things always get interesting when JTAG is your only friend and it's not even sure that DRAM is working stable.

Software Architecture

Software architecture is all about selecting the right bricks and putting them together forming a software solution. A software architect has not to be a great programmer, but an intimate knowledge of the bricks is essential.

I have been doing software architecture work in many projects, often in an embedded context, but have also designed large software systems.

Software Development

This is where the magic happens. It's all about knowing what to do and to implement the chosen architecture. A software developer has to know its tools.

I have years of programming experience in C,C++,Python and Java. But have also worked with JavaScript, Dart, MATLAB, C#, Haskell, various assembly languages and even more esoteric stuff. Software development can't work without version control systems, of which I prefer Git and SVN. I've worked on build automation using CMake, Buildbot, Make and MSBuild. While primarily developing for Linux systems (often cross-plattform), I have also worked on OS X, Windows and Windows CE, freeRTOS, MQX and free-standing environments.


References

An embedded Linux system for though industrial requirements.

Road-side equipment for Kapsch TrafficCom AG

Kapsch TrafficCom AG is a leading provider of intelligent transportation system (ITS) solutions. Especially their tolling products are operated in a very though environment. Hanging some meters above or housed directly next to the highway these devices are exposed to rain, cold, heat, oil, exhaust fumes and vibrations. To add to existing woes high-reliability is an absolute requirement for tolling systems as they are operated 24/7.

The goal was to develop a new linux-based platform which can be used in a number of road-side products. An additional requirement for developing multi-lane free-flow tolling applications are near-hard realtime capabilities to interface a proprietary field-bus.

My primary responsibilities in this projects were to provide the realtime-capable linux kernel and to implement a high-reliable, fail-safe and upgradeable operating system (and boot-loader). I also contributed to the software deployment concepts, kernel drivers and implemented large parts of the build-infrastructure. Finally I supported the development of tools and concepts for the production and functional testing of the product.

Technologies: Linux, C, C++, make, cmake, python, jenkins

A techdemo showing the power of HTML5 for complex user interfaces.

EduC Interpreter

HTML5 is a core technology for today embedded devices, because it's the first choice for implementing user interfaces for IoT devices. As a testbed I decided to implement an interactive C interpreter (complete parsing, syntax analysis, and virtual machine in the browser). (As a nice side-effect I use this tool for my part-time teaching on a higher education center for electronic engineering in Vienna.)

Turns out using modern languages like Google's dart that is completely do-able. Using this technique on embedded devices enables a whole class of cheap (saving on the CPU side), cloud-connected devices with high-quality user interfaces.

You can find the EduC hosted by tgm.ac.at here, the interface is not polished. The magic happens when you step-wise interpret a program (quicksort in EduC).

A business critical application for which I have designed the software architecture.

Digitalization of a complex Production Process

In a position as technical project lead I was responsible for designing and implementing the production process for a highly configurable product at s::can. s::can is a technology leader for online water measurement and monitoring systems. Due to the high quality constraints and complex factory calibration demands the product is assembled directly b s::can. The process involves adaption of analog electronic measurement circuits and calibration of the measurement software.

In this project the whole business process: customer specific order, assembling, factory calibration and creation of shipping documents was identified and fully digitalized. The architecture is a database with a number of distributed special purpose client applications accompanied by web forms. An important aspect of the whole design is robustness (don't stop the production line), which is achieved by client side caching (i.e. client can operate without server) and strict input data validation on the server.

As the result a formerly mostly paper based work-flow is now fully digitalized and a high number of process parameters can be monitored in real-time which helps to further improve the quality of the process. The system is currently enhanced to support other s::can products as well.

Technologies: SQL, PHP, Linux/Windows MATLAB client applications, LabView clients, server-side Python

Some tricky to implement software components I have written.

CASM & vanHelsing

In my thesis Scalable Translation Validation I researched an industrial strength framework for compiler verification (i.e. mathematical proofs that a compilation is error free). Because of the focus to industrial application (scalability) large input programs are used to evaluate the framework and thus I was forced to implement efficient tools, out-performing similar tools by orders of magnitude.

CASM is modeling language I developed to semantically describe program languages and micro-processors. To achieve adequate performance it is compiled and together with a student of mine we implemented novel optimizations to further enhance the performance. Our implementation is about a factor 30 faster than a similar tool developed at Microsoft Research and about a factor of 2500 faster than an academic tool.

Technologies: C, C++, assembly, CASM, Ruby, Make, Git

Read the paper

vanHelsing is a specialized proof checking tool, which operates on a subset of first-order logic formulas. After the algorithmic idea manifested in my brain I finally had an excuse for doing some C++11 development. 2 weeks later things started to work and 2 additional weeks of optimizations doubled the proofing-throughput of my framework.

Technologies: C++, Make, Shell, Git

Read the paper

Who am I

My name is Roland Lezuo. I am holding a PhD in computer science (Vienna University of Technology) and have many years of experience in developing embedded systems.

Contact

For engineering inquiries contact me at:
office@m42-embedded.at
+43 512 319492
+43 650 9673446

GPG: 993C 38AE CD18 4179 D445 EBF6 ADFA 6017 BDCC 30AF

Legal Information

Company
M42 embedded e.U.
Sankt-Ulrichs-Weg 7/2
6065 Thaur
Austria

Office Innsbruck
M42 embedded e.U.
Framsweg 16
6020 Innsbruck
Austria

VAT/UID: ATU70022049
FN 441393h Landesgericht Innsbruck
Informationen zu E-Commerce und Mediengesetz

AGB

Datenschutzerklärung

Based on Bootstrap small-business template