Luperco is an expert house specialized in embedded systems software. Therefore it is focusing on three aspects of building software systems which are typical for embedded products.
The first focus is time. Most embedded software has some kind of timing constraints to keep if it want to be accepted in the market. In this context we skip the rather academic discussion about soft or hard real-time, but we use the concept of “economical real-time”. In this sense a product has to be real-time enough to be accepted by the end user as a good enough quality/price trade-off. Timing requirements implies threading. As a result we believe in a very important aspect of software design which is mostly overlooked: how to divide the software over multiple threads. As embedded systems become more and more multi processor (core) as well, also the division over computing resources becomes a very important aspect. We can provide support for symmetrical as well as asymmetrical multi processor solutions.
The second focus is the complex boundary between software and hardware. In general purpose software, what you have written in memory is what you will read. Compilers and even processors, which can handle instructions out-of-order, are following this concept while optimizing the software. However, once you are working with hardware this statement is not true anymore. First of all hardware can access memory independently from the CPU (via DMA). Second, read-access or write-access on a hardware register can have a different impact and meaning. Another aspect that is usually overlooked is the impact of hardware configuration on the software. For instance bus prioritization and arbitration can impact timing behavior of your system.
The third focus is on software performance. Of course the biggest win is starting with a simple solution. Yet it is not always easy to find a simple solution for at first sight a complex problem. Once the solution is there it is very easy to understand, however it does not mean it is easy to find it!
Further we have a lot of experience in analyzing performance and improving software performance, both on required processing resources as on required memory (footprint).
- The only way to make correct decisions is to understand how things work. “The drive to learn and to understand” is the most important property of our collaborators.
- Trouble solving mind
- We have an un-biased look to embedded systems and as a result we can detect problems that are otherwise overlooked.
- We believe in software quality. This starts with a correct analysis and top down design. During the development it means clean interfaces, well documented code, avoiding complex code as much as possible.
- Technology transfer
- It is not our aim to become owner of your embedded project. The reverse is true, we want to provide good designs and transfer expertise towards your company so you can continue developing your product yourself.