Embedded Systems

The embedded system’s complexity is growing constantly and high-level languages such as Java take up more and more space in this area. impulse can help developers to improve the visibility of what is going on inside.

What's going on?

impulse allows developers to view signals and other information from multiple sources that are formatted in various ways — reading logic data from an analyser, parsing and visualizing log data from the serial line, showing line diagrams of analogue inputs, getting variables from the debug adapter and presenting communication protocols grabbed from the Ethernet.

Analyse log data

Logging is probably the most frequently used technique in debugging embedded systems. In most cases, log data are in form of text lines with columns of given value types and order (pattern log).

With impulse you can load any pattern log data from a file, a pipe or a serial interface and show them in line with signals of another type (analogue, digital, events,… ). See Using log files for more information. Beside simple pattern logs, Impulse also supports xml log files (log4j 1.2).

2014-02-21 15:18:08,173 FATAL [main] Main (Main.java:56) - Started X unresolved
2014-02-21 15:18:08,222 WARN  [main] Main (Main.java:52) - No more tuples
2014-02-21 15:18:08,235 INFO [main] Main (Main.java:54) - Started X2
2014-02-21 15:18:08,247 INFO [main] Main (Main.java:56) - Started X3
2014-02-21 15:18:08,296 INFO [main] Main (Main.java:52) - Started X4
2014-02-21 15:18:08,309 INFO [main] Main (Main.java:54) - Started X5
2014-02-21 15:18:08,321 INFO [main] Main (Main.java:56) - Started X6

Combine multiple sources

It's often the case that an embedded system has multiple outputs (e.g., log files, analogue data,… ). By using a Multi-Adapter Port, you can combine multiple sources into one. These sources can be streaming sources (pipes, sockets,…  ) but also file resources, so you may combine multiple files into a single view.

Attach logic analysers and analogue acquisition devices

The sigrok project provides drivers to access various acquisition device types, such as logic analysers, MSOs, oscilloscopes, multimeters, LCR meters, sound level meters, thermometers, hygrometers, anemometers, light meters, energy meters, DAQs, dataloggers, function generators, RF receivers, spectrum analysers, power supplies and GPIB interfaces.

You will also find protocol decoders, like SPI, serial, USB,...

impulse contains an adapter to access sigrok by using the sigrok command-line interface. See Using the new Sigrok Adapter for more information.

Using the Serial Wire Viewer

The Serial Wire Viewer from ARM (Cortex-M microcontroller) provides non-intrusive real-time tracing. Usually this mechanism is used for 'print' only. The impulse SWV Tracer enhances SWV use-cases as it allows you to log and trace different kinds of data (real, integer, strings, logic) to be stored, visualized and analysed with impulse.See Using the SWV Tracer for how to get started.

#define SEVERITY_ERROR 'e'
#define SEVERITY_INFO 'i'
void itm_log(unsigned char port,unsigned char severity,const char* source,const char* message);
void itm_write(unsigned char port,unsigned char b);
void itm_write(unsigned char port,signed char b);
void itm_write(unsigned char port,unsigned short b) ;
void itm_write(unsigned char port,short b) ;
void itm_write(unsigned char port,unsigned long b);
void itm_write(unsigned char port,long b);
void itm_write(unsigned char port,unsigned long long b);
void itm_write(unsigned char port,long long b);
void itm_write(unsigned char port,float f) ;
void itm_write(unsigned char port,double f);
void itm_write(unsigned char port,const char* text);
void itm_write(unsigned char port,const char* text,char e);

Using this simple API, you can write any kind of variables, logs and text, and visualize them as tables, line diagrams,...

Adopting the impulse trace format

The impulse trace format makes it simple to transfer your trace data into impulse. The format includes all required information, such as signal names, types and context, and is easily generated with the help of existing open-source multi-language trace emitters. It supports multi-core tracing (trace data from multiple cores can be merged), and can be used on any connection. See A3 Trace format to get the full information.

Implementing your own trace formats and attach to new hardware, communication interfaces or platforms

impulse uses the eclipse extension mechanism consistently. It is designed to be extensible in an easy way, and composed to be adaptable to different environments and use cases..

Implementing your own reader for a specific format is not a difficult job. What you need is some basic Java knowledge and the following articles about extending impulse.

If you need further support or development services, just contact us. We are looking forward to supporting you in all technical areas.

Contact us