Express Logic has developed a tool to monitor the real-time resource requirements of multithreaded embedded systems that lets designers tune task priorities, stack usage and other factors for improved efficiency and memory usage.
Designed to run on systems using the company’s ThreadX RTOS and NetX TCP/IP protocol stack, ViewX captures user-defined run-time data from the target and displays it using a PC-based application. Users can tracks target-system events using graphical or spreadsheet-format views.
The data is collected by an agent thread that transfers snapshots of activities to the host using WiFi, Ethernet, USB, UART, or JTAG. The snapshot capture, upload, and display can be periodic, at user-specified intervals, or on demand. The data can be archived on the host for subsequent analysis.
William Lamie, president of Express Logic, said: “Prior to ViewX, device developers needed to manually instrument their application, a painstaking and time-consuming process that takes months to accomplish. ViewX provides complete system transparency into the inner operations of the system in a fraction of the time.”
ViewX captures three categories of data: thread-by-thread processor usage; memory usage; and network performance. For example, when focusing on processor usage, a developer can see whether threads are running for longer than expected or at too high a priority, resulting in the starvation of other threads. The developer can then optimize the priority of the most significant cycle consumers, rather than tediously trying out different prority strategies.
For memory usage, ViewX shows each thread’s stack usage, so that developers can set lower limits, and reduce overall RAM requirements, without risking stack overflows during short-term peaks.
In terms of network performance, ViewX shows network throughput, packets sent/received/re-transmitted, or dropped, and packet pool use. If the packet pool is exhausted, network transfers can be impacted while waiting for memory to be returned to the pool. Express Logic sees this as particularly helpful for internet of things (IoT) applications, as many small IoT devices cannot spare much memory for deep queues that allow for a extensive re-transmission. When a packet is queued for re-transmission, that means one less packet is available for a new reception or transmission. Inefficient packet use in small devices can lead to packets being delayed excessively or even dropped if the system runs out of buffers.
Designed to be flexible, ViewX can analyze and show the behavior of systems running on over 20 architectures, including ARM architectures, MIPS, Tensilica, ARC, along with many more. As well, the agent thread retrieves only that data specified by the user through the ViewX interface. Implemented as ANSI C code, the agent can be easily customized to dynamically include or exclude information.
ViewX also can capture trace buffers for analysis by Express Logic’s TraceX event viewer. It gathers kernel awareness data similar to that gathered by a debugger, but is capable of displaying findings in real-time. ViewX enables data browsing, searching, and display, either within a single snapshot, as an animated sequence, or within a set of snapshots saved over a period of time.