Texas Instruments, The World Leader in DSP Solutions (Digital Signal Processing Solutions)
TMS320 DSP Product InformationDSP in the NewsTools for TI DSP SolutionsLiterature for TI DSP SolutionsSupport for TI DSP Solutions

BIOSuite Home    Technical Overview
          A Real-Time DSP Environment
          Kernel Modules
          System Performance
          TI API Specifications
   FAQ's
   Tech Support Request Form
   Press Release
BIOSuite Title Graphic

BIOSuite Technical Overview -
A Real-Time DSP Environment

The application development environment for today's mainstream TMS320 DSPs revolves around two principal categories of software tools:
  1. a program generation suite featuring a C compiler, assembler, and linker for the target DSP architecture; and
  2. a program debug facility for executing application software on a target DSP platform, linked to and controlled by the host via JTAG emulation hardware.

While comparable in capability to their microcontroller counterparts and unquestionably essential to any software development environment, these tools nevertheless fail to directly address a critical dimension of embedded systems in general and signal processing applications in particular - the dimension of real-time.

Working in concert with the basic TMS320 software tools, DSP/BIOS effectively extends the mainstream DSP development environment with an equally essential set of real-time software capabilities. Figure 1 depicts the junctures at which DSP/BIOS and its attendant host utilities dovetail with the familiar program generation and debug process.

[Figure 1]
Figure 1. DSP Development Environment enhanced with DSP/BIOS and BIOSuite™.


DSP/BIOS Kernel.

This small, firmware kernel forms the hub of the environment, furnishing basic run-time services to embedded application programs executing on target DSP hardware. Requiring no more than 1K words of target program memory, this kernel includes a preemptive scheduler for real-time program threads, core I/O modules for managing real-time data streams, and a series of functions that perform real-time capture of information generated by the DSP application program during its course of execution. These capabilities are explained further on in greater detail.

The target application invokes DSP/BIOS run-time services by embedding corresponding API calls within its program source code. For the C programmer, special header files included during program compilation define the DSP/BIOS APIs within the context of the language. Respecting the more conservative use of C within the DSP community, especially for 16-bit applications, an alternative version of the APIs support direct use of DSP/BIOS services from assembly-language programs via an optimized set of macros. (Use of C with DSP/BIOS is in fact entirely optional, as the kernel itself is coded in assembler to minimize time/space overhead in the target system.)

Once compiled or assembled, applications invoking DSP/BIOS services are bound into executable program images using the standard TMS320 linker. To maintain flexibility, the DSP/BIOS firmware is packaged as a library of relocatable, reentrant object modules that can be selectively bound with the target application program and located anywhere within the memory space of the target DSP platform - in RAM or ROM.

BIOSuite™ Configuration Tool.

The second element introduced within the DSP/BIOS environment depicted earlier is a hosted configuration tool that flanks the standard TMS320 program generation suite. Using a modern windowed interface, this tool enables developers to control a wide range of configurable parameters accessed by the DSP/BIOS kernel at run-time. A file of data tables then generated by the tool ultimately becomes input to the program linker.

The BIOSuite configuration tool plays an additional and perhaps more significant role within this environment: the tool also serves as a special-purpose visual editor for creating and assigning attributes to individual run-time objects (threads, streams, etc.) used by the target application program in conjunction with DSP/BIOS API calls. Unlike other systems in which object creation and initialization occur at run-time through supplementary API calls - incurring further target overhead, especially code space - all DSP/BIOS objects are statically configured and bound into an executable program image using hosted tools. In addition to minimizing the target memory footprint by eliminating run-time code and optimizing the layout of internal data structures, the static configuration strategy pursued by the BIOSuite configuration tool provides the means for early detection of semantic errors through validation of object attributes prior to program execution.

Another important benefit of this strategy is the potential for static program analysis by the BIOSuite configuration tool. Given declarations of all target program objects prior to execution, the configuration tool can accurately compute and report (say) the total amount of data memory and stack storage required by the program. In a more advanced setting, the BIOSuite configuration tool might capture information about the processing requirements of individual program threads and synthesize a model of MIPS utilization for the application as a whole.

BIOSuite™ Analysis Utilities.

This final element of the environment complements the familiar program debugger with a series of hosted utilities that work hand-in-hand with the target-resident DSP/BIOS kernel to enable real-time program analysis, a set of visual capabilities that allow developers and integrators to probe, trace, and monitor a DSP application during its course of execution. These utilities in fact piggyback upon the same physical JTAG connection already employed by the debugger, and utilize this connection as a low-speed (albeit real-time) communication link between the target and host; modular software drivers on both ends of the link can accommodate alternate serial or parallel connections, should the need arise for additional bandwidth.

Hosted program analysis requires the presence of the DSP/BIOS kernel within the target system, not only to support real-time communication with the host through the physical link but also to provide rudimentary run-time services to the application itself - unlike a traditional debug monitor which is largely transparent to the executing program. By simply structuring their application around DSP/BIOS APIs and objects that furnish basic multitasking and I/O support, developers have automatically instrumented the target for capturing and uploading real-time information that drives the visual analysis utilities on the host; supplementary APIs and objects allow explicit information capture under target program control as well. From the perspective of its hosted utilities, BIOSuite affords several broad capabilities for real-time program analysis:
  • event logging - capabilities for displaying time-ordered sequences of events written to kernel log objects by independent real-time threads, tracing the program's overall flow of control; events can be logged explicitly by the target program through DSP/BIOS API calls or implicitly by the underlying kernel when threads are readied, dispatched, and terminated.
  • statistics accumulation - capabilities for displaying summary statistics amassed in kernel accumulator objects, reflecting dynamic program elements ranging from simple counters and time-varying data values to elapsed processing intervals of independent threads; statistics can be accumulated explicitly by the target program or implicitly by the kernel when scheduling threads for execution or performing I/O operations.
  • file streaming - capabilities for binding kernel I/O objects to host files, providing the target program with standard data streams for deterministic testing of algorithms; other (real-time) target data streams managed with kernel I/O objects can be tapped and captured on-the-fly to host files for subsequent analysis.
When used in tandem with a standard debugger during software development, the BIOSuite real-time analysis utilities provide critical visibility into target program behavior at exactly those intervals where the debugger offers little or no insight - during program execution. Even after the debugger halts the program and assumes control of the target, information already captured through BIOSuite can provide invaluable insights into the sequence of events that led up to the current point of execution.

Later in the software development cycle, when regular debuggers become ineffective for attacking more subtle problems arising from time-dependent interaction of program components, the BIOSuite analysis utilities assume an expanded role as the software counterpart of the ubiquitous hardware logic analyzer. This dimension of BIOSuite becomes even more pronounced after software development concludes, when the embedded DSP/BIOS kernel and its companion host analysis utilities combine to form the necessary foundation for a new generation of manufacturing test and field diagnostic tools capable of interacting with application programs in operative production systems through the existing JTAG infrastructure.

© Copyright 1998 Texas Instruments Incorporated. All rights reserved.
Trademarks, Important Notice!