Development of all the DSP applications in the topic was done using version 2.20 or 2.21 of Code Composer Studio. As this topic was going to press, version 3 of Code Composer Studio has been recently released and the source code and project files should be easily ported to this new version of the IDE. The CCStudio manual contains a wealth of information pertaining to the various compiler and linker options, however the manuals do not address the temperamental nature of both the EVM and DSK.
Figure 2-4. C6416 DSK (image courtesy of Texas Instruments). In its nominal form, connecting the DSK to the host is simple: there is a power cord that connects to the board and a USB cable to runs from the board to the USB port on the PC.
In particular, there are times when one needs to reset the systems, or else CCStudio will not work correctly. With respect to the EVM, if you receive an error message along the lines of "File <some .out file> Does not match the target type, not loaded" then the CCStudio application needs to be closed, and the EVM board reset. The EVM reset is done using a batch file named evm6xrst.bat, which is included in the CCStudio bin directory. After resetting the board, re-open CCStudio and attempt the load operation again. In addition, it has been observed numerous times in Windows XP that the CCStudio application hangs around as a zombie process even after exiting, preventing normal operation the next time it is opened. In this event, the Windows process manager can be used to kill the cc_app. exe process. The DSK, in comparison to the EVM, is actually far more reliable. However, there are some cases when CCStudio and the DSK diagnostics utility claim they are unable to make a connection to the board. In the event that this occurs, the best course of action is to cycle the power on the DSK, making sure to explicitly kill any cc_app.exe processes that may be lingering around via the Windows process manager.
This topic features a variety of Tl-related software toolkits. These technologies and libraries are briefly introduced in the remainder of this section, along with pointers on where to obtain a few of them that are not included with the stock CCStudio install. In contrast to integrating libraries with applications built using Visual Studio, which very often involves "DLL hell," arcane compilation strategies, and various other annoyances, the DSP software integration process is decidedly simpler. All of the libraries described in this section are available in the form of precompiled static libraries, and incorporating them into CCStudio projects entails two basic steps: including the header fde directory into the C preprocessor include path and linking the static library to the project COFF executable. The former can be set from the project settings within CCStudio, and the latter is achieved by either explicitly adding the static library to the project, or adding it to the linker configuration in the project settings.
EVM support libraries
As shown in Figure 2-2, the DSP development platforms feature a variety of peripherals. All of these peripherals, and the board itself, need to be initialized and then preferably accessed using C functions which hide the nastiness of twiddling with memory-mapped registers and the like. For example, prior to accessing any external RAM, the external memory interface (EMIF) peripheral needs to initialized properly, and failure to do so results in undefined behavior.
Many of the EVM programs in this topic use an older support library to perform such duties, as it is the author’s experience that this particular library is more reliable on the EVM platform than some of the newer libraries that TI includes with more current versions of CCStudio, such as the Chip Support Library. This C library is the "EVM DSP Support Library," is documented in  and can be downloaded from .
Chip Support Library
The Chip Support Library (CSL) is a newer C API that offers similar functionality to the library described in the preceding section, but supports all C6x devices. The CSL can be used with both EVM and DSK platforms, although as previously stated there are some cases, notably involving host/target communication, where we use a different library for the EVM. However, on the DSK platform, any programs that do not use the DSP/BIOS real-time operating system will use the CSL to initialize peripherals like the EMIF, EDMA, and clock (used for profiling).
DSP/BIOS is a scalable real-time operating system that is supported across a range of TI DSPs. The operating system is configured by a GUI that allows one to tailor the operating system to the application at hand, and it contains various "modules" (basically C APIs) that mirror the functionalities in the CSL.
The TMS320C62x/C64x Fast Run-Time Support Library, or FastRTS for short, is a C-callable library that contains a set of optimized floating-point functions that can be used in fixed-point C6x DSPs. While this library is not extensively utilized, for performance reasons described in 2.1.2, there are a few instances where it is required. This library is documented in  and is not included with the C6416 DSK CCStudio. It can be downloaded from .
DSPLIB and IMGLIB
Developing software is a labor-intensive task. Developing highly efficient DSP software is even more labor-intensive, and in this topic we attempt to leverage existing TI libraries wherever possible. TI has developed and actively maintains a set of functions implementing a number of common one-dimensional signal processing (DSPLIB) and two-dimensional image processing algorithms (IMGLIB). Both libraries are highly optimized implementations, and come standard with CCStudio. The C62x/C67x DPSLIB directory, which includes the header files, static library and even the source code (in text files with the .src extension), is located in [TI]\c62 00\dsplib, where [TI] should be replaced with whatever the root path of your particular installation is (typically C:\TI). The C64x DSPLIB directory is [TI]\c6400\dsplib. The C62x/C67x and C64x IMGLIB directories are located in the same directory tree, in sub-directories named imglib.