Services - tools - models - for embedded software development
Separation strip between header and contents

Technology

Embecosm offers two unique technologies:

  • Our unified SoC debug technology boosts firmware engineer productivity by allowing the same tools to be used throughout the product lifecycle and by giving debug visibility to the entire chip, not just the processor.
  • Our GCC compiler back ends take advantage of MilePost technology to add machine learning, giving earlier availability of compiler optimizations, and continuing improvement to the compiler through its lifetime.

Unified SoC Debug Technology

Image of an embedded software engineering tool

There are three key features of Embecosm's unique tools and technology:

  1. The same debugging interface is presented throughout the design life cycle, from initial model to final silicon.
  2. The engineer has visibility not just of the processor being debugged, but all the peripherals of the System-on-Chip.
  3. The implementation uses existing standard protocols and interfaces.

The user interface is available both from the command line or within Eclipse. The development and debugging experience is the same throughout the product life cycle, whether the target is a high level architectural transaction level model (TLM), a detailed simulation, an emulation in FPGA or final silicon.

The detailed debugging interface depends on the functionality of the target. Reference implementations from Embecosm are based on a standard 5-pin JTAG interface. This can be modeled as a high level SystemC TLM 2.0 debug port, a cycle accurate model of the individual pins, or through device drivers of the TAP for a target in FPGA or silicon. Where the target is a SystemC model or event drive simulation, Embecosm has defined a standard JTAG Cycle Accurate SystemC interface.

Many devices offer a more complex debug unit, driven through the JTAG boundary scan interface. The Embecosm tool flow provides full access to the debug units throughout the product life cycle.

Interfacing to the debugger uses its standard remote communication protocol. For the GNU tool chain, used in the Embecosm reference implementations, this is the GDB Remote Serial Protocol (RSP). For RSP, the qCmd packet is used to exchange requests with the target interface. These requests allow the debugger to access not just the processor core, but the state of the peripherals on the chip.

The Embecosm tool flow may be ported to any debugger which offers a remote protocol with a sufficiently rich command set, for example the MetaWare RASCAL interface.

The Embecosm approach ensures the firmware development team have a consistent and reliable debugging interface from initial system design through to functional silicon.

MilePost Compiler Optimization

MilePost was a research project funded by the European Union from 2006-2009. Embecosm's Jörn Rennecke was a key contributor to this project, which resulted in MilePost GCC 4.4.0 being released in May 2009.

MilePost adds machine learning to the GCC back end. With complex processors, hand-writing GCC optimizations can be a very time-consuming and expensive operation, due to the huge number of possibilities to be explored. Milepost sits alongside the GCC compiler and learns which optimizations are most effective as the compiler is being used. From this an ever improving back end code generator can be created.

There are two complementary benefits from this approach. The first is that optimizing compiler output is obtained sooner, and at lower cost. The second is that the compiler can continue to improve over its lifetime as more code is compiled.

Embecosm is one of the first commercial organizations to offer MilePost technology for GCC. Contact us to discover how MilePost technology could be added to your tool chain.