I had planned this piece some months ago, but suddenly it has become tied into a major breaking news story.
In the last ten or so years, the RTOS (Real-Time Operating System) has moved from being a relatively rare beast to becoming almost commonplace, as applications, particularly those built as embedded systems, have demanded communication and, particularly in the Internet of Things (IoT), have added sensing. To manage the complexities of such a system, the developer divides all the software running on the system into tasks: small blocks of code that include functions like managing the human machine interface, control, and communication. The key to success lies in understanding which task is to be run when. To help the RTOS make the decision, developers assign priorities to each task. At set intervals, the RTOS checks the tasks that are ready to run and runs the one with the highest priority – and, according to rules of priority, manages them. This multitasking makes it look as though the tasks are running independently and concurrently. Neat, but one can instantly see the opportunities for problems. Some tasks with low priorities may never get to run, and, if there are several tasks with high priority, which one should be executed? Tasks are not independent; one task may require input from another, or need to provide output to a third. They may need to share things, like a communication channel, or even areas of memory – and, in some cases, access may be blocked for a higher priority task by a lower priority one.
Such issues, and others, may cause the system to slow down, to produce incorrect results, or to crash. Finding out what is causing these problems is difficult, and this is why Percepio, a Swedish-based company, created Tracealyzer, which they describe as a trace visualisation tool. There are tools that take trace information from an executing system to discover how it is running and what problems it is encountering. Where Tracealyzer scores is that it provides over 25 different and interconnected graphical views of that information, which expose the run-time behaviour at system or application level. The developer can manipulate these views to understand the issues that the system is experiencing far faster than grappling with a simple trace report.
Tracealyzer is developed for 32-bit hardware, and it installs monitoring software on the target system for instrumentation, which the company claims offers minimal overhead. The information can be streamed over a JTAG or other debug probes, but it can also be accessed through a USB port or by TCP/IP for FreeRTOS, Micrium, and SafeRTOS systems, with others in development. There is a long list of current targets, including many processors based on Arm Cortex families as well as Renesas, Microchip, and Atmel families.
Supported RTOSs include FreeRTOS, SafeRTOS, Micrium µC/OS, ThreadX, Keil RTX5 and VxWorks. While Tracealyzer explicitly supports Eclipse-based IDEs and market leaders such as IAR Embedded Workbench, Keil µVision (MDK), Atmel Studio, and Microchip MPLAB X IDE, it can also be used with any IDE that allows you to save RAM contents to a host-side file.
Percepio say that, while Tracealyzer is primarily intended for use in development, it can also find a role when deployed systems have problems, and the company has customers who ship products with tracing enabled and have used it to resolve problems arising in the field.
The web site, Percepio.com, has a mass of supporting material, including white papers, tutorials and case studies, and it is perhaps one of the best I have seen for such support. You can also download a version for evaluation, which comes with demo trace for a wide range of visualisations.
Now the news angle.
Firstly, and a bit on the nerd news angle, is the announcement that Percepio and UltraSOC have announced a partnership. UltraSOC is a Cambridge, England based IP company supplying a monitoring and analytics platform for integration into complex ICs, including processors, ASICs and SOCs. Since I last wrote about them two years ago, UltraSOC has struck deals with a wide range of companies, including Arm, Imagination (plus a separate deal with MIPS), and Microsemi, and they are very active in the RISC V community. The IP, which puts little overhead on the chip’s real estate and its footprint, provides information to assist in development, debug, and optimisation of a device. By integrating this with Tracealyzer, the developer no longer has to mediate between the hardware team and the software team when each blames the other for a problem.
An announcement with potentially much wider implications came from Amazon Web Services (AWS). AWS made a series of major announcements at its annual conference in November. One of them was the launch of Amazon FreeRTOS. This is a new release (v10) of the existing FreeRTOS, with added libraries. Now, why is Amazon pushing an RTOS? Simple really – AWS is the dominant player in the public cloud business – with close to 80% of the market, according to Gartner. Despite the concentration on the “Things” at the periphery, a vital part of the IoT is the central data storage and analysis, and, in most cases, this is from resources rented from the public cloud providers. (Interestingly, IBM’s approach to the IoT is “Use Watson” – which is described as an AI platform.) AWS has a huge number of offerings for the IoT, including AI at the edge, and analytics, machine learning, etc. in the cloud. Clearly AWS want to make it easy for their users to design the edge devices, since, as well as announcing the Amazon FreeRTOS, they also announced that they are creating an ecosystem with the initial partners: Arm, Percepio IAR Systems (an embedded tools supplier) and Wittenstein high integrity systems, which offers the commercial versions of FreeRTOS, OpenRTOS, and SafeRTOS. SafeRTOS is a safety-certified version, being pre-certified to IEC 61508-3 SIL 3 and ISO 26262 ASIL D.
I would, as European editor, be remiss in not pointing out that all of these companies, plus UltraSOC, are based in Europe, even if Arm is no longer European owned.
One of the exciting things about writing about technology is seeing how, as things get more complicated, talented people come up with the tools to help manage that complexity. Tracealyzer is just such a tool.