http://processors.wiki.ti.com/index.php/CCStudio_FAQ#Q:_CCS_allows_me_to_save_memory_as_Addressable_Unit._Can_I_use_the_GEL_function_GEL_MemorySave.28.29_to_save_memory_in_this_format_as_well.3F
|
This FAQ pertains to issues related to the CCS IDE (GUI, Debugger, etc). For tools issues related to:
NOTE: There is a separate FAQ topic dedicated to Code Composer Studio v4 issues
Non tools related device specific issues usually have their own separate FAQ. Check the main FAQ list for a FAQ topic for the device of interest.
If you email [email protected] TI can provide you with the status of your subscription and help you renew your subscription if it has expired.
You can access service releases from within Code Composer Studio v3.x from the help menu. Alternatively you can directly access the Update Advisor page here.
Common/General issues:
Failure with a new install: An install log is generated during the installation process. The default location of this log is C:\TI_InstallLog.txt. An errors that occur will be logged here. When an error is encountered during installation, open the log and browse to the end of the log and look for the error. Many times the install error encountered during is an InstallShield error with an InstallShield error code:
Other tips to try when encountering InstallShield errors: http://www.ehow.com/how_2109053_around-install-shield-errors.html
When sending a message to support regarding an installation issue, always attach the 'TI_InstallLog.txt' file.
Failure with installing a CCS SR (Service Release):
Occasionally a CCS SR patch (installation of a Service Release over an existing CCS installation) installation will fail. While the root cause is unknown, one theory is that some running process that is launched at startup of the PC is causing issues with InstallShield. One workaround that has been successful is to run the installer when in Windows safe mode (instead of tying to figure out which specific process is causing the problem).
Note that CCS DSK and FET (Free Evaluation Tools) installations can NOT be updated with CCS SR. Hence CCS SR installations will fail when trying to install over a CCS FET installation.
CCSv3.3 is not officially supported on Windows 7. Windows 7 and Vista are very much the same and CCSv3.3 has been tested on Vista. One important thing to note is that CCSv3.3 is designed for 32bit windows, if you install on a 64bit OS you will see error messages during install (these can be ignored). You need to make sure to get 64bit drivers from your emulator vendor. We do recommend that Windows 7 users switch to CCSv4.
There is a file extension .ini file that you can modify to add other extensions such as .xxx, so CCS can understand these files and will use it's editor to open these files.
The file is called FileExt.ini and is located in c:\CCStudio_v3.x\cc\bin\editor
In the file, you can modify the line:
text:Header Files (*.h*;*.inc):*.h*;*.inc
to be the following:
text:Header Files (*.h*;*.inc;*.xxx):*.h*;*.inc;*.xxx
for a customization of the file handling properties you can use the options > editor > language menu in CCS, select the .ini extension from the left hand side, and modify as desired
There is a known issue with the build tools in CCStudio 3.0 and BIOS projects where a symbol needed for stdout in CCStudio (_C$$EXIT) is getting stripped. A workaround to get stdout to work properly is to simply define the missing symbol ‘_C$$EXIT’. This can be done in CCStudio by entering ‘_C$$EXIT’ in the field under:
Project->Build Options…->Linker->Advanced->Create Unresolved Ext Symbol (-u)
This issue has been be resolved in CCStudio 3.1 and greater.
Yes, there is a build option for the C674x processor. It is -mv6740.You can use -mv6740 in the compiler command line, though it is not in the pull-down menu in CCS->Build options.
The .PJT file can be modified by the user, but the .MAK file cannot. The .MAK file contains checksums and other information needed by the project to determine dependencies and so on. In Code Composer Studio, the user can load up a project and right-click on .PJT file in the Project Manager and will be presented with a menu item that says "Open for Editing". This will allow the user to manually edit the .PJT file.
Check the following post: Changing BIOS, DVSDK, INSTALL DIR environment variables in XP
This is the expected behavior. Code Composer Studio adds the header file to the project when it finds a #include statement. The header file is searched for in the project directory path and if the header file does not exist in this path, the compiler generates an error.
This problem will occur if the build tool interface (BTI) dll file does not get self registered during the installation. Please issue the following command from the command prompt after replacing X with the letter that represents the TI DSP being used.
C:\WINNT\system32>regsvr32 C:\ti\cX000\cgtools\bin\BtiX000.dll
A cycle accurate simulator has the ability to simulate your board's peripherals and algorithm as close as possible to the real thing.
A device simulator DOES simulate peripherals. The peripherals are considered under "ideal" or "perfect" conditions.
Code Composer Studio detects when a catastrophic event occurs, regardless of whether the target is running or halted.
Code Composer Studio running the target in a Run-Free state
A catastrophic event is one of the following circumstances:
The feature is implemented in CCS using the workspace concept. What needs to be done is to save the workspace after setting the breakpoints using File -> Workspace -> Save Workspace As.
Then to load that workspace on startup you can do the following:
This will automatically open up that workspace with breakpoints on startup.
There are two ways to re-enable the CCStudio Monitor:
OR
In CCStudio 3.1 and greater, the CCStudio Monitor can be re-enabled from the IDE by simply clicking on the ‘Help->CCS Monitor’ option.
If you have a long search path specified in the options of a project, CCS might truncate this path when loading the make file. So the workaround is to direct Code Composer Studio to use predefined search paths for the compiler by specifying the path in the C6X_C_DIR environment variable for your operating system, as an example.
A mini-dump (*.dmp) is a binary file that contains information about a running process. Microsoft provides the tools that permit creation and analysis of these files (windbg).
When an exception occurs in cc_app.exe, the exception may be caught in one of three ways:
If CCStudio crashes ("unexpected fatal error") and the exception-handler or the unhandled exception-handler catches the process exception, a mini-dump file will be created. These mini-dump files are useful to include when reporting CCStudio issues to customer support, and can help engineers diagnose the cause of the crash. The file will be located in the
There is a known issue with v2.30 where the mini-dump files are not being placed in the .\logs folder described above but being placed in the current windows directory at the time of the crash. This issue has been resolved in later versions of CCStudio. The best way to find mini-dump files generated by CCStudio v2.30 is to simply do a windows search for files with the *.dmp file extension at the root of the CCStudio install directory.
The object code in the library (or file) includes Dwarf debug information that the older linker cannot read. Dwarf is a new and improved way to encode debug information. Debug information is read by a debugger like Code Composer Studio (CCS). The format of the debug information changed between the compilers released with CCS 2.X and CCS 3.X. If you are seeing this message, you are doing the final build with a CCS 2.X compiler while using a library (or other object module) built with a CCS 3.X compiler.
The rest of this FAQ presumes a library is the source of the problem. If you have this problem with a single object file instead, then the problem is no different conceptually. But the details of how you address the problem change. The rest of this FAQ presumes you are dealing with a library. The adjustments when handling a file instead are straightforward.
Presuming you cannot update to the newer compiler, you have two options. One is to rebuild the library to not use Dwarf debug information. The other option is to strip the debug information out of the library.
Rebuild the Library:
These directions presume you are using a CCS 3.X compiler to rebuild the library. Build the library the same as before, but use an additional switch to change the format of the debug information. The compiler switch --symdebug:none turns off all debug information. The switch --symdebug:coff enables the old style Stabs (sometimes called COFF) debug information that the old compiler can read. Note using --symdebug:coff interferes with optimization.
Strip the Library:
This process removes all the debug information from the library. These directions use executables from the C5500 compiler toolset. If you are using a different toolset, replace the “55” with the abbreviation for your toolset. For instance, C6000 users should replace ar55 with ar6x.
The name of the example library is: mylib.lib.
Note you have to perform these steps each time you receive an update of the library.
The *.CS_ folder is cached information for CodeSense (the “CodeMaestro” feature for the CodeWright editor – auto-completion, where referenced, etc…) generated by CCStudio when you start editing a source file for the associated project using CodeWright. CodeWright is the default editor integrated with CCS version 2.40 and 3.1+.
If you are using the CCScripting method to set a breakpoint at a given line of a .c source file, you would do the following (example code in Jscript) : -
var rtnCode = ccs.BreakpointSetLine("scom.c", 86);
However, you may observe that the breakpoint is indeed set and hit by your script, but the source code nor red-dot at the line number never appears.
This is often due to the fact that CCStudio cannot find your source file – its not in its search path since it may be e.g. outside the .pjt.
2 ways to fix this: -
(i) In CCStudio do Option -> Customize -> Directories -> then add the name of the directories containing sources which you’ll be setting breakpoints on.
This has the downside of hardcoding paths in CCStudio and not being automated.
(ii) create a GEL file which adds the directories to the CCStudio search path, and invoke that GEL file from CCScripting.
You can do this with the following scripting code: -
ccs.TargetEvalExpression('GEL_LoadGel("./scompath.gel");') … ccs.BreakpointSetLine("scom.c", 86);
And in your scompath.gel put e.g. : -
/*-----------------------------------------------------------------*/ /* OnFileLoaded() is called after a program is loaded. */ /* Customize this function to automate actions before a */ /* program is loaded */ /*-----------------------------------------------------------------*/ OnFileLoaded (int nErrorCode, int bSymbolsOnly) { // check for errors in loading program if (nErrorCode) { GEL_TextOut("An error occurred while loading a file. -%d-\n",,,,, nErrorCode); } else { GEL_TextOut("File was loaded successfully. -%d-\n",,,,, nErrorCode); } // Check to see if only symbols are loaded if (bSymbolsOnly) { GEL_TextOut("Only symbols were loaded.\n"); } else{ GEL_TextOut("Full load.\n"); } // Add my source search paths DebugSourceSearchPaths(); } hotmenu DebugSourceSearchPaths() { // Source search paths GEL_SrcDirAdd("$(GEL_file_dir)\\..\\..\\src\\scom"); GEL_TextOut("Added dir to path for source-level debug and file, line BPs etc\n"); }
There’s more detail here than necessary. The keys are simply: -
When having problems trying to get CCStudio to recognize files in source control, try the option to auto-connect to the default source control provider selected.
This can be done by going to Project->Source Control->Options and selecting the ‘Attempt connection to default provider’ option for the ‘Connect:’ drop-down options box:
Code Composer uses an exclusion file, ‘exclude.dat’ (located in .\cc\bin), to prevent scans for dependencies on certain files. This will also, in effect, hide these files from view in the ‘Includes’ folder of the CCS IDE Project View. In its initial state, exclude.dat contains a list of system include files which are unlikely to change. You can edit this file to exclude scans of other files, such as your header files that will never change, or to include scans of system files that you need to alter.
There is a file called FileExt.ini, located in .\cc\bin\editor, that allows you to set file type associations with the CCStudio built-in text editor. This will allow for non-native file types to be recognized and opened by the built-in text editor when the file is ‘double-clicked’ on in the Project View. This will also allow you to filter for that file type (using the ‘Types of Files’ in the drop down) when opening a file in CCStudio via File->Open…
Example of a FileExt.ini file. Note the last two entries are custom entries:
text:C/C++ Source files (*.c*):*.c* text:Asm Source Files (*.a*;*.s*):*.a*;*.s* text:Header Files (*.h*;*.inc):*.h*;*.inc text:Memory Map Files (*.map):*.map text:Linker Command Files (*.cmd;*.lcf;*.lkf):*.cmd;*.lcf;*.lkf text:General Extension Language Files (*.gel):*.gel text:Text Files (*.txt;*.log):*.txt;*.log text:Data Files (*.dat):*.dat text:Project Files (*.pjt):*.pjt text:Makefiles (*.mak):*.mak text:Generated List Files (*.lst):*.lst text:Configuration Files (*.tcf;*.cdb):*.tcf;*.cdb text:Configuration Include Files (*.tci):*.tci text:JScript Files (*.js):*.js text:My New File Association (*.zzz):*.zzz
Screenshot of File->Open..
In CCStudio it is tricky to add complex custom build steps when building an archive. This can be necessary if say, you wish to build a library which you pre-build with partial linking in order to create a relocatable object file with certain global symbols hidden. This technique is often used with 3rd party code which runs on other processors i.e. the 3rd party is not keen to change symbol names hence the –h linker switch is used to hide symbols and prevent symbol collision in end-applications.
The problem is that it’s tricky to add such steps to a CCStudio pjt of type Library i.e.
There is no Linker Tab in this Built Tools Interface. Hence its cumbersome to try and add lnk6x based steps.
One solution is to flip the Project Type to Executable. Ie open the pjt for Editing and change it from: -
[Project Settings] ProjectName="fir_ti64" ProjectDir="C:\my_c_drive_stuff\localwork\perf_audio\rf_v3_21_00_01\referenceframeworks\src\fir_ti\" ProjectType=Library CPUFamily=TMS320C64XX Tool="Archiver" Tool="Compiler" Tool="CustomBuilder" Tool="DspBiosBuilder" Config="Debug"
to: -
[Project Settings] ProjectName="fir_ti64" ProjectDir="C:\my_c_drive_stuff\localwork\perf_audio\rf_v3_21_00_01\referenceframeworks\src\fir_ti\" ProjectType=Executable CPUFamily=TMS320C64XX Tool="Compiler" Tool="CustomBuilder" Tool="DspBiosBuilder" Tool="Linker" Config="Debug"
This gives us a linker Tab as follows: -
The –r switch is essential so we can further relink the code, once more with the final application. –h hides the necessary symbols. –o”.\Debug\fir_ti64_plink.obj” is the output partially linked relocatable object file.
1 caveat with this technique is that N input files get coalesced into the 1 object file. This reduces the linker granularity in eliminating unused functions, hence codesize may increase versus standard archives, if not all functions in the library are used by a given application.
A linker command file similar to the following is typically used for the partial link: -
/* expose global symbols which the end-application interfaces with */ -g _FIR_TI_IFIR -g _FIR_TI_IALG -g _FIR_TI_init -g _FIR_TI_exit SECTIONS { /* expose sections which user may wish to manually place */ .text:algAlloc {} .text:algInit {} .text:algFree {} .text:algActivate {} .text:algMoved {} .text:algDeactivate {} .text:algControl {} .text:algNumAlloc {} .text:exit {} .text:init {} .text:filter {} .text:myDoMult {} }
A final custom build step can then be applied to turn this into an archive.
This step gets applied by CCStudio after the partial link step.
Important Notes
>> warning: creating output section .text:_MYUTIL_TI_doMult without SECTIONS specification
This is because -r (without -a) does not combine subsections into the base (parent) section. So .text:_MYUTIL_TI_doMult is treated like its own section, not a subsection of .text. Hence with -w we get a warning that this section has not been explicitly placed.
Thus, when partial linking (particularly with -mo) dont use -w.
However 1 important note is that you should avoid using the MEMORY directive in the linker command file of a partial link - it doesnt really mean anything in partial links (there's no placement) and it can have serious side-effects. One such side effect is if you create a MEMORY section that's > 4Mb. Since -r (without -a) disables trampolines if you had code, then a large amount of data, then more code there's a high chance it won't link. ie you'll get relocation overflow errors because it's beyond the reach of near calls (assuming you're not using far calls...which you shouldnt be!)
All versions of CCS: The following Linker Command file (cmd) statements will create a subsection named "sect1" in the ‘.text’ section. The ‘.text’ part of the object file (hello.obj) will be placed in ‘sect1’.
The ‘.text’ section will be placed in SDRAM at 0x80000000 followed by ‘sect1’. The user can also place multiple object files names separated by commas.
SDRAM: len=0x80000000 org=0x4000 .text:sect1 > SDRAM { hello.obj(.text) }
This error message is usually generated when you are trying to load a section of the code to a memory section which is reserved or when you are trying to access an undefined memory location.
This can be avoided by referring to the memory map of the particular device.
The linker is producing an executable with the TI new COFF format (default in current revisions is COFF2). Some TI emulators and simulators do not understand this new format and can only treat these files as invalid objects. A workaround is to link with the "-v0" option to use the old COFF format. Another solution is to use the latest emulator or simulator releases which support the new COFF format.
The map file designates:
- Memory configuration.
- Input and output section allocation.
- The addresses of external symbols after they have been relocated.
Map file for a project can be generated by using the Build options in the CCS. The steps below can be followed in order to generate the map file using CCS.
1. Go to Project --> Build Options.
2. In Linker tab, select Basic in the category.
3. Specify the name and path of the file in the Map Filename (-m) field.
The specific compiler user guide documentation of the can be referred to for further informataion.
See: Debugging Overlays With CCStudio
This is caused when the ‘ccs_Compdb.ini’ file has been corrupted or has a blank entry. The exact cause of this is unknown. Every time CCStudio needs to update the ‘ccs_Compdb.ini’ file, it will generate a backup of the existing file with a *.bak extension in the same folder. If the backup is not also corrupted (this can occur when an already corrupted ‘ccs_Compdb.ini’ file is backed up) then overwriting the corrupt file with the backup can restore your CCStudio environment to the state when the backup file was created. The location of the ‘ccs_Compdb.ini’ file is located in ‘C:\Program Files\Common Files\Texas Instruments’
If the DSP starts executing `garbage` data from flash, the DSP will `fly off in the left field.` You will not be able to gain control of the DSP once it starts executing garbage data from flash. You can try to use the no boot process so that the DSP doesnot execute garbage from flash. This feature is available on the C620x/C670x and C64x only. For more information, refer to chapter discussing Boot Modes and Configuration in the TMS320C6000 Peripherals Reference Guide
There is an issue with RTDX and RTA with certain versions of CCStudio. This caused RTA updates to occur very slowly if the application execution is started before the RTA plug-ins were opened. The workaround is to either make sure RTA plug-ins are opened before application execution or to halt and continue execution if the RTA plug-ins are opened after application execution and the RTA updates are coming out slowly. This has been resolved in CCStudio 3.3.
There are conflict issues with a CodeWright dll (cwctls32.dll) that comes with certain versions of CCStudio and certain PCs that use a particular set of audio drivers. This will cause problems when trying to launch CCStudio. This is resolved in CCStudio 3.3 and CCStudio 3.1 Service Pack 1 build number 29 and greater.
See: Creating Custom Memory Mapped CCStudio Register Windows
If the PC that is being used has a history of prior CCStudio installations, then the issue may be caused by left over registry entries that confuse COM and its type library resolution. In order for the problem to trigger users would have to install (or have previously installed) a newer version of CCStudio than what they are currently using and then uninstall that newer version. E.g. user installs 3.1 and 3.3, then uninstalls 3.3. The issue is that the 3.3 type library information is still in the registry, hence COM type library resolution mechanism is picking the most recent one… which does not exist anymore. This issue is only affecting clients that do not use SDK wrapper libraries. CCScripting is one of them and RTA plug-ins are another.
A fix will be made to CCStudio to make sure that there are no such stale registry entries remain under the registry entry with the CCStudio type library information. This fix will be made in CCStudio 3.3 SR2+ and CCStudio 3.1 SP1 build 31+. In the meantime, there is a workaround that can be used.
Workaround: A workaround is to remove extra registry entries. CCStudio type library information can be found under:
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{7037933C-B77F-11D1-B009-0040055C1953}.
The entire registry key can be removed since launching CCStudio (after removing the key) will re-create the registry key. You can remove the entire key by executing the following line in a Windows Command Prompt:
reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{7037933C-B77F-11D1-B009-0040055C1953}
In the example below, there are two entries, one from CCStudio 3.1 (1.29) and one from CCStudio 3.3 (1.32). CCStudio 3.3 has since been uninstalled but the registry entry remains. Removing the 1.32 subkey that points to a non existent version of CCStudio will also resolve the issue.
NOTE: If the entire registry key is removed, CCS scripting will not work correctly. The user must manually start CCStudio once for the registry key to be re-created. Any subsequent launches of CCStudio using CCStudio Scripting will not have any issues.
A common cause is that newer type library information from CCStudio 3.3 is not “uninstalled” or cleaned up from the registry when CCStudio 3.3 is uninstalled.
A fix will be made to CCStudio to make sure that there are no such stale registry entries remain under the registry entry with the CCStudio type library information. This fix will be made in one of the later CCStudio 3.3 Service Releases (SR).
Workaround: A workaround is to remove the following type lib registry entries from CCStudio 3.3:
KEY_CLASSES_ROOT\TypeLib\{7037933C-B77F-11D1-B009-0040055C1953}\1.32H HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{7037933C-B77F-11D1-B009-0040055C1953}\1.32
You can remove these entries by executing the following line in a Windows Command Prompt:
*reg delete HKEY_CLASSES_ROOT\TypeLib\{7037933C-B77F-11D1-B009-0040055C1953}\1.32 *reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{7037933C-B77F-11D1-B009-0040055C1953}\1.32
See: Running CCStudio v3.3 on Windows Vista
When Code Composer Studio is updated through the update advisor, the files from the previous version are stored in an uninstall directory in the CCS folder. This information allows you to uninstall the last update to your CCS installation in case an error occurs. This information can be deleted if you do not plan on uninstalling the latest update to CCS.
When upgrading to newer versions of Code Composer Studio, the Windows Registry may not be updated to remove the prevoius version's elements.
If you experience problems with overinstalling on previous versions of CCS, try removing residual registry entries before installation (Note: errors in the registry can prevent your PC from booting properly):
Please follow these steps to completely remove CCS from your machine.
1. Go through the Add/Remove programs step in Control panel to remove CCS.
2. When the uninstallation is complete, check to see if there is a Details button to the left of the ok button. If a Details button does exist, please click on it and look at the directories that are remaining and then delete them from your drive.
3. Then go into regedit. From regedit, go to the following places in the registry and delete the Go DSP, TI and Texas Instruments keys (if they continue to exist).
HKEY_CURRENT_USER -> Software -> Go DSP
HKEY_CURRENT_USER -> Software -> Texas Instruments
HKEY_CURRENT_USER -> Software -> Texas Instruments' RTDX Log File Dumper
HKEY_CURRENT_USER -> Software -> TI
4. In the registry go to HKEY_LOCAL_MACHINE -> Software. From here delete the GODSP and TI and Texas Instruments keys (if they exist).
After following these steps, reboot your machine. By eliminating all of the references to CCS from your computer, you will be installing CCS on a clean machine.
Adding a clean-up routine to the installation to remove residual registry entries would alleviate any concern in this area.
Please check the DSP BIOS FAQ page .
CCStudio 3.3 supports debug of ARM ELF output. Older versions of CCStudio has more limited debug support, hence it is recommend to upgrade to CCStudio 3.3. Make sure the latest CCStudio 3.3 Service Release is installed to ensure the latest support.
Yes. CCStudio come with a utility called timake.exe that allows you to build your CCStudio project (*.pjt) file from the command line. Building a project with timake has the same effect as building the project from within the CCStudio IDE (timake uses the same project manager and versions of Code Generation Tools and DSP/BIOS that CCStudio is configured for).
To Invoke the timake Utility:
The syntax for invoking the timake utility is:
>timake.exe PJT -lc | CFG [ -a | -clean ]
The first parameter is required.
The second parameter must be one of the following:
When a project configuration (CFG) is specified as the second parameter, one of the following options can be specified as the third parameter:
Ex:
>timake.exe modem.pjt Debug -a
This is a generic CCS error message that occurs when an exception occurs in CCS and handled by the default CCS exception handler. This exception can be caused by a variety of factors. Some potential causes:
When such a crash occurs, CCS will generate a crash mini-dump file. This file is useful to help diagnose the cause of the crash and should be attached when reporting a CCS crashing issue to support, along with a very detailed and reproducible test case.
Go to the CCStudio menu 'Help->About' to see the CCStudio Version Number:
In the screenshot above, it is 3.3.77. Using the Version Number, you can find which Service Release is installed:
3.3.38.2 = CCStudio 3.3 RTM 3.3.42.1 = Service Release 1 3.3.46.1 = Service Release 2 3.3.49.1 = Service Release 3 3.3.50.2 = Service Release 4 3.3.54.1 = Service Release 5 3.3.57 = Service Release 6 3.3.67 = Service Release 7 3.3.77 = Service Release 8 3.3.79 = Service Release 9 3.3.80.11 = Service Release 10 3.3.81.6.2= Service Release 11 3.3.82.13 = Service Release 12
We can see that CCStudio 3.3.77 = Service Release 8 for our example.
See the CCStudio 3.3 Service Release page for a list of release notes for all the Service Releases
The "Symbol Browser" displays all of the associated files, functions, global variables, types, and labels of a loaded COFF file (*.out). This option is avaialble under "View" option of CCS. Please refer to the picture.
It allows the user to see where defined symbols occur in the disassembly output, the user can analyze cache performance and have a better idea on placement of a function in a program in order to reduce thrashing or improve cache performance.
For further information you can refer CCS-> Help under "Debugging Windows and Analysis tools".
The error message means that you are trying to load a section of the code to a memory section which is not writable. If you are using Simulator then please go to Options -> memory map and uncheck the "enable memory mapping" box and click done. This will convert whole memory into unified RAM. Now load the .out file and execute it. The cause for the problem is that when you are loading sections from the .out file into the target memory (in this case Simulator memory) if the memory is not available at the address you specified in the linker command file then you cannot load the .out file.
Please refer the TMS320C55x Assembly Language Tools User's Guide for details about linker command files.[SPRU280]
The error you have received is a result of the fact that your whole application is linked to RAM and not to flash memory. You need to check your linker command file to see if you really link sections to the flash memory.
To be more elaborate, this appears each time you program the flash memory, if your application has code in RAM, to remind you that having application code in RAM prevents your application from working as a standalone system. So you need modify your CMD file.
Please refer to the application note SPRA958H (includes also code examples) to get an idea how to run an application from the DSP internal flash memory.
CCS creates two sets of build options - called Configurations: one called Debug, the other Release (Optimized one).
Debug is unoptimized build configuration and it maintains the symbolic debug information. The Release (optimized) configuration invokes the optimizer with -o3 and disables source-level, symbolic debugging by omitting -g (which disables some optimizations to enable debug). In many cases you might also want to add the -g option to the Release configuration as this makes it easier to evaluate the performance of optimized code.
Now in CCS3.3, -gp,-gt,-gw complier options are replaced by new option --symdebug:dwarf or -g
While converting from debug mode to release mode, please add the path for the header files in Project -> Build Options -> Compiler -> Preprocessor -> Include Search Path. When you change your mode from debug mode to release mode, the search path for the header files changes.
For more information on this, you can refer to the contextual help in CCS i.e
CCS Help -> Contents -> Code Generation Tools Build Options -> Compiler Options -> Preprocessor.
It is quite commonly found that values on the axes of the graph in CCS do not appear as they are expected to appear. For example, instead of a value 4096 being displayed 5.739719e-42 might be displayed.
This can be avoided by taking care of the settings in the graph properties dialog box.
1. Please see that the Q-value is 0. This is because Q-value gives a fractional representation of an integer value, formed by inserting a decimal space inside a binary representation of an integer. This increases precision. The formula that is applied to convert an integer value to a value specified by a setting in Q-Value is:
New_integer_value = integer/2^Q-Value
2. Change the scale from log to linear scale, if not required.
3. Please be sure of the DSP data type that needs to be displayed.
Note: If your version of CCS is SR7 or below it is advisable to upgrade to the latest version of the CCS and Codegen tools.
Usually the license is for a single-user host computer. The user may not be able to install the licensed version on a network server or otherwise use the licensed copy on more than one host computer at the same time. Additionally, if this package contains multiple versions of the licensed copies, users may only use one version of the licensed copy on a single host computer. The users may install the licensed copies on additional single-user host computers, provided however, that in no event may more than one copy of the Licensed Materials be in use at any time. Basically, this means that if the user has a laptop and a desktop, he can install it on both but can use only one at a time.
Please note that the agreement is bound to the individual person in whose name is stands.
Below is the link available for Software License Agreement http://focus.ti.com/lit/ml/sprz273/sprz273.pdf
Code Composer Studio is made available in the following version
With the release of CCSv4, this version is not available for download anymore
Load the program into flash using one of the FLASH programming tools and bring up the Code Composer Studio Software. Load the project that generated the COFF file that you programmed on FLASH. Now load symbols by using `File --> Load Symbols --> Load Symbols Only` in Code Composer Studio menu and select exactly the same COFF (.out) file you used to program the FLASH. When running your program from on-chip Flash, you will need to use hardware(h/w) breakpoints. When debugging code in Flash on the 28x devices, you are limited to 2 H/W breakpoints. CCS may automatically set certain breakpoints which will utilize both of your available 2 breakpoints unless you disable certain options. See this article for more info.
If the system clock is changed the CCS License is broken. The license breakage occurs for the following CCS version:
This problem does not occur if the customer uses
Precaution: When you are using FET version of CCS, CCS with EVM the system clock should not be adjusted.
Check what your environment variable TEMP is set to (Look in "My computer -> right click -> Properties -> Advanced -> Environment variables"). If they're set to "C:\Documents and settings\admin\temp,” please change the TEMP variable to use "C:\windows\temp,” the error message should go away.
If you are still facing any issues then try to uninstall and reinstall CCS completely. This will resolve the issue.
Stb.lib is part of the Software Test Bench software. You need to install this as well, when using the FFT library.
ISA: C6000, All CCS versions: When linked with the -cr option, the loader uses the data in the .cinit section to auto initialize all the global variables. The .cinit section is marked with the COPY flag, which means that the auto-initialization data exists in the .out file, but does not take up any space in the memory defined with the MEMORY linker directive.
In the memory map, the user will find that the .cinit section has been overlapped with ome other section that actually takes up space in the memory. Since the .cinit section is marked with the COPY attributes, and it is technically overlapping other sections, the hex utility does not include it when run with the -image option. The user probably should link their code with the -c option in this case.
You may notice an increase in the size of the object files because the default debug format for the code generation tools shipped with CCS 3.0 is DWARF, which is a richer language than the debug format used in previous releases (STABS). An increase in object file size does not necessarily reflect an increase in the application’s code size as the DWARF information is not loaded onto the target.
When the CPU enters an exception service routine, the EXC bit in TSR is set to indicate an exception is being processed. If a new exception is recognized while this bit is set, then the reset vector is used when redirecting program execution to service the second exception. In this case, NTSR and NRP are left unchanged. TSR is copied to ITSR and the current PC is copied to IRP. TSR is set to the default exception processing value and the NMIE bit in IER is cleared in this case preventing any further external exceptions.
The NTSR, ITSR, IRP, and the NRP can be tested in the users boot code to determine if reset pin initiated reset or a reset caused by a nested exception. For information on C64x+ exception refer SPRU732
Currently this feature is implemented in CCS using the workspace concept. What needs to be done is to save the workspace after setting the breakpoints using File -> Workspace -> Save Workspace As. Then to load that workspace on startup you can do the following:
1. Right click on the CCS icon on your desktop.
2. Choose properties and for your "Target" path enter c:\ti\cc\bin\cc_app.exe c:\test\test.wks where c:\test\test.wks is the path of your saved workspace.
This will automatically open up that workspace with breakpoints on startup.
If the C source file is not open in CCS, and the user has loaded the symbols, you may notice that while single-stepping, CCS executes several assembly instructions per step command. This is because CCS is stepping in C source mode, which in some cases, could translate to several assembly instructions for each line of C source. To view the correct stepping, select Mixed Mode.
IBQ stalls are produced by the fetch pipeline and most of the time they are related to PC discontinuities. They can be encountered with BLOCKREPEAT, BRANCH, and CALL Instructions. This application report for TMS320C55x DSP SPRA865 shows how to resolve the IBQ stalls and align the target address (loop starting address) on a 32-bit boundary by adding nop instructions before the beginning of the loop. In order to optimize assembly code with respect to pipeline stalls, the DSP programmer needs to determine where the stalls occur, what the origin of the stalls is, and how, if possible, to remove the stalls.
In a pipelined DSP processor, as the instruction flows through the pipeline, many internal registers and states are modified before the instruction has completed its execution. Due to depth of pipeline at a certain point of time (Clock Cycle), many instructions reside in the pipeline and affect the processor state. It is sometimes difficult to understand what states are affected and when exactly an instruction enters and exits the pipeline.
Also, in pipeline-protected machines, hardware NOP cycles (Stalls) are introduced by hardware to maintain the programmer’s view. Appropriate instruction scheduling is important to avoid such stalls so that software running on the processor can execute in less number of cycles. So, while running a simulation session, it is highly beneficial if some kind of a visual aid is provided which describes the instruction flow through each stage of the pipeline and highlights resource conflicts so that you can optimize your code accordingly. Code Composer Studio™ IDE has provided such a tool: the Pipeline Stall Analyzer.
The Pipeline Stall Analyzer tool allows you to see the following:
To use Pipeline Stall Analyzer click on CCS menu->Tools->Pipeline Stall Analyzer. Ensure that Flush Pipeline on Halt is disabled (deselected) in the Debug menu. The pipeline stall analyzer tool was developed to help the TMS320C55x DSP assembly programmers to efficiently optimize the critical sections of his code. For more information on pipeline stall analyzer refer CCS contextual help.
One reason is the lack of heap space on the target. By default, printf() internally makes calls to malloc(). If no heap is configured or no space is remaining on the heap, printf will silently fail (actually, it returns a negative number). No output will be shown, specifically the "Stdout" window in CCS will not be opened automatically.
Another possibility is not having a '\n' string terminator to flush the line.
See Tips_for_using_printf#How_to_use_printf_in_a_project for more details.
Tconf scripts (*.tcf) are the legacy content configuration format that is used by BIOS5. In the BIOS5 build flow '*.tcf' scripts are evaluated using the legacy 'tconf' tool. Tconf scripts have been superseded by RTSC configuration (*.cfg) scripts which are more generalized and can be used to consume any RTSC content like - BIOS6 and Codec Engine. Note that if you are planning to use BIOS5 you are required to use tconf scripts. XDCtools ships a tool named 'configuro' that can be used to evaluate both '*.tcf' and '*.cfg' scripts. In your particular case you have both the 'tcf' and 'cfg' files in your project. In order for the build to succeed only the 'configuro' tool need to be invoked. When both 'tconf' and 'configuro' are executed you will see linker errors.
This problem can be easily resolved by excluding the 'tcf' file from your build - right click on the tcf file and then select "File Specific Options...". Click on the "General" tab and then check the "Exclude file from build" checkbox. This will prevent the tconf tool from running. However the 'configuro' tool will evaluate both the 'cfg' and 'tcf' files and you should be able to build your application successfully.
CodeWright is the integrated editor with CCS. While the cause can vary, there are several workaround to try which can resolve the issue:
There are several benefits to GEL files:
For the description of all the available GEL functions, in CCS please navigate to Help->Contents. This is the best source of information pertaining to the usage of the GEL functions.
All custom actions via GEL are synchronous. There are certain built-in GEL functions that exhibit asynchronous behavior.
See Application Note SPRAA74 Appendix A for a list of built-in GEL functions and their behavior.
You cannot declare arrays in a GEL file, as GEL does not support arrays.
You may have a GEL file like this: - /* * The StartUp() function is called every time you start * Code Composer. You can customize this function to * initialize wait states in the EMIF or to perform * other initialization. */ StartUp() { GEL_OpenWindow("My EVM Board",0,15); clear_memory_map(); GEL_Reset(); init_emif(); // misc user stuff to initialize peripherals etc GEL_TextOut("\nMy EVM GEL file loaded\n","My EVM Board"); GEL_TextOut("\nStartup completed\n"); }
You would expect that GEL_OpenWindow() would create an Output Window to be used for My EVM Board specific confidence/status messages.
However, this may not work. You may get an error popup in certain CCStudio revisions as follows: -
The reason is that StartUp() runs before any control window is open. Hence GEL_OpenWindow() fails.
GEL_TextOut() to the standard CCStudio output window is also often used in StartUp(). Such calls wont give an error, but wont necessarily print out the message you’d hoped for either.
Hence, options to remedy this are: -
When CCStudio is launched, startup gel files defined in the CCStudio setup utility will be loaded into host memory and any actions defined in the ‘StartUp()’ function will be executed (if one is defined). Often both host and target initializations steps are done in the StartUp() call to help automate the process of initialization. However with versions of CCStudio that support Connect/Disconnect, these gel files may not work properly since CCStudio will startup disconnected to the target… hence actions in StartUp() that attempt to access the target will fail. A new built-in GEL callback function called ‘OnTargetConnect()’ has been provided for essential target initialization that needs to be done to put the target in a ‘good state.’ This function will get called by CCStudio after connection with the target has been established. Any initialization steps that do not access the target may be left alone in StartUp().
See Application Note SPRAA74 for more information.
No. Even if you configure CCStudio to connect to the target automatically when you open a control window, it will still call StartUp() before it automatically then tries to connect to the target. ‘OnTargetConnect()’ should still be used to automate target initialization steps.
Not for versions of CCStudio prior to version 3.1. Calls to any built-in GEL function that accesses the target are not recommended (ex. GEL_Reset(), GEL_MemoryFill(), etc…). Calls to custom GEL functions are fine. The reason why built-in GEL calls that access the target are not recommended (other than ‘OnTargetConnect()’ itself) is because the behavior of some built-in calls can potentially disrupt the connect/disconnect process in CCStudio. If GEL built-in calls that access the target are needed for additional initialization, it is recommended that they are called (manually via GEL hotmenu for example) after target connection has been established and OnTargetConnect() has finished execution.
Examples of some OnTargetConnect() calls:
// This example will run with no problems OnTargetConnect() { *0x8000 = 1; // simple write to a memory location (ok) MyCustomGELFunc(); // no issues calling custom gel functions } // This will have problems OnTargetConnect() { GEL_RefreshWindows(); // this is a built-in GEL callback! }
For versions 3.1 and greater, this limitation has been removed. OnTargetConnect() will now only be called after the entire connect phase has been successfully completed. Thus any target access call can now be made in OnTargetConnect(). An undocumented ‘OnTargetInit()’ callback function now exists in place of where OnTargetConnect() used to be called.
It is not possible to use the GEL_MemoryLoad() function to load the hex file into the flash memory. The GEL_MemoryLoad() function is used to load a block of target memory not the external flash memory. The user can use GEL_MemoryLoad() to load a block of target memory from a specified file. If the filename contains a *.out for the file extension, COFF format is used; otherwise, the Code Composer Studio debugger uses the header information in the file to determine the file format. The gel function GEL_MemoryLoad can only recognize and load .out file and data files which contain magic number in the header. The hex file does have the header information that GEL_MemoryLoad expecting. After generating a .hex file using HEX utility, use a FLASH programming utility to write the hex image into the FLASH memory. Flashburn is a new FLASH programmer capable of programming the entire FLASH memories available on the board at specified logical address.
This option is actually supported, it just is not documented (as of May/08).
The GEL documentation says: io_format is an integer that represents the format in which memory words will be written to the specified output file. The default output is 1 (hexadecimal). It accepts the following Parameters:
1 *.dat Hexadecimal 2 *.dat Integer 3 *.dat Long 4 *.dat Float 5 *.out COFF
However, if you specify a 6 for the io_format, this will map to the addressable unit option internally.
To save memory in this format using CCS 3.3 go to menu File -> Data -> Save and select Addressable Unit (*.dat) in the Save as type: box.
You cannot. The CCStudio profiler defines a range as linear block consecutive instructions (and not as an execution flow) with the start address <= end address. Also the range cannot go across function boundaries. To do such profiling, the user should manually use breakpoints at the start and end points and view the profile clock.
The new behavior when enabling functions/loops/ranges for profiling is to calculate the ranges and apply all breakpoints needed ahead of time. This improves profiling performance in terms of speed. The drawback is that for applications with many functions/loops/ranges, it can take quite some time to enable all those functions/loops/ranges since it needs to do breakpoint calculation and application for all the functions/loops/ranges being enabled. This tends to happen when people select the ‘Enable all Functions’ option for a large application.
In older versions of CCStudio, there is a limit to the number of SW breakpoints available. Currently the limit is 10K. Applications large enough can have enough branches in it so that the number of breakpoints needed to enable the profiling of all functions exceed the limit. This caused bad behavior in CCStudio (hanging (or the appearance of), constant error messages, etc). The following enhancements have been made for CCStudio v3.1 and greater:
Profiling of the 55x portion of the OMAP2420 processor in earlier versions of Code Composer Studio may not work correctly with Code Composer Studio's default installation configuration. As a result, attempting to use the Profile Clock or advanced profiling tools may not return the expected results.
To work around the problem and enable profiling, please perform the following:
If using Code Composer Studio version 2.3:
When CCS starts you'll receive a message indicating that AET could not be initialized. This message can be ignored. You should now be able to view the Profile Clock to retrieve the number of cycles executed by the target and use the CCStudio profiler normally.
If using Code Composer Studio version 2.4:
You should now be able to view the Profile Clock to retrieve the number of cycles executed by the target and use the CCStudio profiler normally.
On actual DSP targets you cannot use both profiling and RTDX at the same time. Code Composer Studio displays resource conflict message in this case. However it is possible to use both profiling and RTDX in the Simulator mode (i.e without connecting a target board).
There are limitations using the profiling tool with hardware; these limitations and considerations are documented in the Help CCS menu. Go to menu Helpand select the Search tab. Search for the keyword profile clock and check the following topics in the results box:
Profiling in Flash is possible but you cannot do as much as you could in RAM because the profiler will need to use the analysis resources for counting and also for hardware breakpoints.
On C28x target you have two resources available for analysis at given time. One resource can be used as a hardware breakpoint, watch point, or a counter. The other one can only be used as a hardware breakpoint or a watch point. In order to profile, you need to use the analysis counter which uses up one of your resources therefore, now, you can set only one hardware breakpoint. In order to step through the source in flash, for example, you need two hardware breakpoints, therefore you won't be able to simultaneously step through the source in flash and profile.
If the user wants to get the number of cycles it takes to execute a function in flash, it might be better to use the analysis plug-in directly to configure the benchmark counters.
The external counter contained inside most emulators can be used to count “roll-overs” of an internal counter by counting EMU pin signals that are strobed whenever the internal counter rolls over. This external counter effectively gives the internal counter an additional 16-bits (on XDS510 based emulators) or 32-bits (on XDS560 based emulators) of resolution.
The limitations of the use of this counter in this manner depend on the Emulator being used. A few of the different options are listed below:
Emulator | Maximum Count Rate |
---|---|
TI XDS560 | ~50 MHz |
TI XDS510 | (Depends on TCLK) |
Spectrum Digital USB510 | 80MHz |
Spectrum Digital XDS510PP Plus | 80MHz |
If we’re profiling cycles, the maximum CPU speed is dependent on the size of the internal counter. If the internal counter is 5 bits, then we get a “roll-over” signal every 32 cycles. On a 200 MHz processor, the effective rollover frequency is 6.25 MHz. If the internal counter is 16 bits, then the effective rollover frequency would be ~3KHz.
With "clock" as the measurement option (Profiler-> Clock Setup->Count) you will get the actual clock cycles taken to execute your range of code. With "Execution Packet", you get the number of execute packets it executes in that range.
It is correct that in one clock cycle one Execute Packet gets executed. But apart from executing the execute packet the processor has to fetch the instructions, which is the reason for the difference in the values shown by the profiler. The statistics shown with the measurement option as "clock" will be greater than the statistics shown from the measurement option as "Execution Packet".
Enabling the cache will reduce the difference.
The Analysis Tool Kit (ATK), which is the code coverage and exclusive profile tool, aids you to analyze the robustness and efficiency of embedded digital signal processing (DSP) applications. It assists you in developing correct and efficient application software. The code coverage and exclusive profile tool provides visualization of source line coverage. With this information, you can construct tests to ensure adequate coverage of your code. The code coverage and exclusive profile tool is supported on all the C5500 and C6000 simulators in Code Composer Studio version 3.1 or higher.
Please refer to "Analysis Toolkit for Code Composer Studio User's Guide" (SPRU623) for more information.
SPRU623d
The XDAIS component wizard was a CCSv3 plugin developed by a 3rd party. The XDAIS product removed this wizard in XDAIS 5.00.
XDAIS 4.00 contains the tool, however algorithm developers are encouraged to implement the XDM interfaces provided with XDAIS 5.00 and later to ease integration into upper layer frameworks. Note that recent releases of XDAIS (also provided in CCS Eclipse) include the XDM GenAlg Wizard, as well asQualiTI for XDAIS compliance checking.
For further reference, the XDAIS product includes example algorithms (see $(XDAIS_INSTALL_DIR)/examples) and this article includes some XDAIS examplesas well.