|
A Real-Time DSP Environment Kernel Modules System Performance TI API Specifications FAQ's Tech Support Request Form Press Release |
|
|
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. 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:
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. |