Development Tools

smxAware™
Product Brief
smxAware adds SMX® awareness to popular embedded debuggers produced by other vendors. This is a great convenience during debugging and results in significant time savings. smxAware is a DLL which is loaded on the host by the host portion of the debugger. The following debuggers are currently supported (for Windows hosts):
Debugger |
Processor |
Vendor |
CodeWarrior Professional |
ARM, ColdFire, Power Arch. |
Freescale |
EWARM/C-SPY |
ARM |
IAR Systems |
Paradigm C++ |
x86 (RM, 32-bit PM) |
Paradigm Systems |
SingleStep |
PowerPC |
Wind River |
Soft-Scope / pmScope |
x86 (32-bit PM) |
Micro Digital |
visionCLICK |
CF |
Wind River |
VisualProbe |
x86 (16 & 32-bit PM) |
Beacon Dev Tools |
Visual Studio |
smxSim |
Microsoft |
Kernel Objects Displayed
| Tasks |
LSRs |
Exchanges |
| Messages |
Semaphores |
Mutexes |
| Events |
Event Tables |
Ready Queue |
| Diagnostics |
Timers |
Pipes |
| Buckets |
Heaps |
Stacks |
| Print Statements |
Handle Table |
|
SMX Add-on Module Objects Displayed
- smxFS
- Disk info
- File info for open files
- smxNS
- Net status
- Buffer status
- ARP status
- Route status
|
- smxUSBD
- Device controller name
- Function drivers registered
- Device, configuration, interface, and endpoint descriptor details
- smxUSBH
- Host controller name
- Class drivers registered
- Plugged-in devices
- Device, configuration, interface, and endpoint descriptor details
|
Operation
smxAware is a dialog box that opens when selected from the debugger's main menu. It presents a list of the object types listed above. When one is selected, all objects of that type are displayed. A one-line summary is given for each object of that type. In many displays, double-clicking on an entry expands it to show more information. For example, double clicking on a task entry shows all fields of its control block. Double clicking on an exchange entry shows all the messages or tasks waiting at that exchange. All levels of multi-level objects are shown.
smxAware supports task-specific breakpoints for some debuggers.
smxAware for CodeWarrior displays additional information for suspended tasks. Each task has a thread window associated with it that shows where the task will resume execution, and the call stack up to that point. It also shows local variables, if any, and the task's registers. This information is determined by smxAware from the task context that was saved on the stack when the task was suspended. For CodeWarrior, the smxAware window is a non-modal dialog box meaning that you can watch it while stepping through your code.
Example of Task Display (non-modal version)
(click image for full-size view)
smxAware is included in all SMX Evaluation Kits so you can try it and see all of its displays.
Graphical Analysis Tool
smxAware for CodeWarrior, EWARM/C-SPY, visionCLICK, and Visual Studio includes graphical displays. We recommend that you download the demo version so you can see it up close (www.smxrtos.com/demo/gatdemo.zip). Or download one of the SMX Evaluation Kits that includes it (see www.smxrtos.com/eval).
A standalone .exe is also provided to allow you to analyze collected data off-line.
Event Timelines

(click for larger view)
This view shows when tasks, lsr's, and isr's ran. Inside the bars it shows when ssr's (smx kernel calls) occurred. User events can also be added to the application. This display can be zoomed to a very fine level of detail. Time resolution can be microseconds, or less, depending upon the capture rate in the target. When the Details button is pressed and the mouse cursor is moved over an event, information about the event appears in a small window next to the cursor. For an smx kernel call, this information includes the name of the call, all parameters, and the return value. Hence, the display is clean and uncluttered, yet it is easy to get detailed information about events.
Event timelines are an important visualization tool needed to understand and debug modern, complex embedded systems. The precise time that each isr, lsr, or task started and stopped is shown, along with the cause. Timelines can be moved or resorted by sequence of occurrence. This is helpful to focus on the few timelines of interest, at the moment. The display can be zoomed in or out and scrolled left or right and up or down, if there are too many timelines to fit the screen. Line thickness can be reduced to get more on the screen. isr's, lsr's, and tasks can be selectively turned off or on to create more screen space. Prior to zooming, a reference point can be set, which stays still while zooming in or out. These, and other features, make the smxAware timeline display convenient and effective to use.
CPU Usage

(click for larger view)
This view shows how much time each task, lsr, and isr ran during the sample period, as a percent of the sample period. Known as "task profiling", this window helps to resolve performance issues. (Note that in the diagram to the left the idle task, which has lowest priority, is running 76% of the time. Hence there is plenty of bandwidth for useful work in this system.)
Stack Usage

(click for larger view)
This view shows how much stack each task uses. Orange indicates stacks that are close to their maximum allocated sizes. Red indicates stacks that have overflowed. To the left of each bar is the actual number of bytes used/stack size. The bars show percentages. Stacks can overflow without bringing the system to a halt because in debug mode, smx allocates extra space for each stack. Without this display, stack overflow is often very difficult to debug in a multitasking system.
All of the above views can be brought up whenever the target is stopped at a break point. On-screen help is also provided.
smxAware, like other Micro Digital products, is sold on a 30-day free trial basis and includes 90 days of support. See the smxAware User's Guide for more information.
For More Information
|