The STRIDE Runtime routes messages both within and between platform boundaries and manages the conversion of interface data as it crosses from one platform to another. This "transparent messaging" model means that your test cases can be located on one platform (e.g., as a script running off-target) and your code on another (on-target).
The STRIDE Runtime is a combination of processes and libraries that provide services for messaging, remote function calls, and tracing while providing seamless connectivity between the target application and the host operating system. The STRIDE Runtime standardizes how threads and applications communicate with each other, independent of the platform on which they are executing, which eliminates the need to integrate new software on the target hardware. Developers can then incrementally integrate embedded software on a combination of the desktop environment and the target hardware, providing more control over integration and testing. New software functionality under development can be simulated on the desktop environment while the software using this new functionality can run on the target hardware. This flexibility allows developers to choose how to integrate different software components and target platforms allows developers to detect integration and testing issues and correct defects much earlier in the development process.
Other related components:
- The PAL (Platform Abstraction Layer) - provides a consistent interface for the STRIDE Runtime regardless of the operating system or data transport used. It consists of a small set of functions that provide a virtual link between the target operating system and the STRIDE Runtime. The PAL functionality, defined in the pal.h header file, allows the STRIDE Runtime to transmit and receive packets of data (called I-blocks) using the platform’s transport mechanism.
- The Intercept Module - is auot-generated harnessing code that facilitates remote function calls between the host and target.
Refer to the STRIDE Runtime Developer's Guide for more details.
You can configure the STRIDE Runtime by editing srcfg.h to achieve specific real-time performance objectives. By tailoring the RAM requirements, real-time performance, and traffic across the host-target transport, you can meet your own unique needs. Use the following STRIDE Runtime configuration parameters:
- Total number of STRIDE Transaction Identifiers (STIDs) that may be active simultaneously
- Total number of simultaneous broadcast message subscribers
- Total number of embedded pointers in your interfaces
- Total number of unique interfaces
- Total memory allocated for tracing
- Size of an individual trace buffer
- Frequency that trace buffers are transmitted from target to host
- Remote Function Call settings
- Enabling and configuring Memory Management settings
- Enabling Multi-Process Target settings
- Enabling Variable Arguments
- Timestamp unit
The default configuration is generally adequate for most uses, however the configuration may need to be adjusted as more sophisticated tests are developed with more numerous or complex interfaces.
Runtime Test Services (RTS)
The Runtime Test Services (RTS) are a set of APIs implemented using the STRIDE Runtime that facilitate the writing of target based test code. These APIs are considered an optional extension on top of the STRIDE Runtime and can be used to communicate additional information about tests to the host based reporting mechanism. They also allow target test code to create additional test suites and test cases dynamically at runtime.
Please refer to the srtest.h header file and Runtime Test Services article for more information on these APIs.
The following are the categories available in the Runtime API for logging, that is, collecting and/or displaying, information at the host runtime environment:
- Setup and Shutdown
- srCreateSTID(): used to allocate resources required to send and receive trace and print messages that implement the following APIs.
- srDeleteSTID(): used to free STRIDE Runtime resources previously allocated for an STID.
- Tracing - Tracing routines are used by target applications for information collection and display by the host runtime environment.
- srTracePoint(): used to output a data structure to the tracing window on the host.
- srTraceStr(): used to output a string to the tracing window.
- Printing - These routines are used by applications to log or display messages on Trace Views on the host.
- srPrintInfo(): used to output a formatted string with variable arguments to be displayed at information level filtering.
- srPrintError(): used to output a formatted string with variable arguments to be displayed at error level filtering.
- Messaging - These routines can be used to send and receive messages for logging or any other debugging purposes.
- srBroadcast(): used to “broadcast” information to one or more subscribers. Each subscriber receives its own copy of the message or pointer, depending on the attributes of the payload. If there are multiple subscribers on a remote platform only one copy of the response is transmitted across the link. If there are no subscribers then the routine simply returns.
- srSubscribe(): used to subscribe to a Broadcast message sent using srBroadcast. There has to be at least one subscriber for a broadcast message to be sent.
These services are defined in sr.h header file.