TI E2E Community
Unresolved symbols for SYSBIOS 188.8.131.52
We have been building on the ARM side of the expOMAPL138 very successfully.
Now we want to get the DSP side up and running so we built a new kernel with similuare settings as our ARM for the DSP.
When we get to the point of doing the final link we get several unresolved symbols that should be resolved.with the DSP SYSBIOS. The application is just the default for a CCS Project that has seperat SYSBIOS project. CCS version is 5.2.1.00018
Here are the errors:
undefined first referenced
>> Compilation failure
symbol in file
error #10234-D: unresolved symbols remain
error #10010: errors encountered during linking; "DSP_Main.out" not built
I was able to reproduce precisely the symptoms you show but it was due to there being an error in the configuration part of the project.
Once I cleared that up, the link proceeded successfully.
In your CCS config project view, do you see any indications of errors (ie red 'x's)?
If so, open the config file using the text editor and it will show you which config statements are causing problems.
No red 'x's.
So I discovered the quick Fix function. It tells me to do things like:
Add this to your config file: var ti_sysbios_BIOS = xdc.useModule('ti.sysbios.BIOS');
Well I have var BIOS = xdc.useModule('ti.sysbios.BIOS');
So I commented out the one and added the other, changed all the names to match, but it still fails.
Gives the same thing about Tasks and Error but they are defined also.
Just to confirm...when you rebuild the .cfg file, you get no errors or warnings. Is this correct?
Can you include the build output from both the configuration build and from the application build?
Correct no errors with build of .cfg file.
Here is the build of the cfg.
**** Build of configuration Default for project SYSBIOS_DSP_configuration ****
C:\TI\ccsv5\utils\bin\gmake -k all
'Building target: configPkg/linker.cmd'
"C:/TI/xdctools_3_23_03_53/xs" --xdcpath="C:/TI/bios_6_33_05_46/packages;C:/TI/ipc_1_24_03_32/packages;C:/TI/uia_1_01_00_04/packages;C:/TI/xdais_7_21_01_07/packages;C:/TI/xdais_7_21_01_07/examples;C:/CCS/platform;C:/TI/ccsv5/ccs_base;C:/TI/dsplib_c674x_3_1_0_0/packages;C:/TI/edma3_lld_02_11_05_02/packages;" xdc.tools.configuro -o configPkg -t ti.targets.elf.C674 -p bh.platform.dsp.expOMAPL138 -r debug -c "C:/TI/ccsv5/tools/compiler/c6000_7.3.7" --compileOptions "-g --optimize_with_debug" ../app.cfg
making package.mak (because of package.bld) ...
generating interfaces for package configPkg (because package/package.xdc.inc is older than package.xdc) ...
configuring app.xe674 from package/cfg/app_pe674.cfg ...
generating custom ti.sdo.ipc library makefile ...
generating custom ti.sysbios library makefile ...
Starting build of library sources ...
making C:/CCS/VSLED_Source_Code/SYSBIOS_DSP_configuration/src/sysbios/sysbios.lib ...
making C:/CCS/VSLED_Source_Code/SYSBIOS_DSP_configuration/src/ipc/ipc.lib ...
Build of libraries done.
cle674 package/cfg/app_pe674.c ...
'Finished building target: configPkg/linker.cmd'
**** Build Finished ****
Here is the build of the Executable DSP Application:
**** Build of configuration Debug for project DSP_Main ****
'Building file: ../DSP_Main.cfg'
"C:/TI/xdctools_3_23_03_53/xs" --xdcpath="C:/TI/ipc_1_24_03_32/packages;C:/TI/bios_6_33_05_46/packages;C:/TI/uia_1_01_00_04/packages;C:/TI/xdais_7_21_01_07/packages;C:/TI/xdais_7_21_01_07/examples;C:/TI/ccsv5/ccs_base;C:/CCS/platform;C:/TI/dsplib_c674x_3_1_0_0/packages;C:/TI/edma3_lld_02_11_05_02/packages;" xdc.tools.configuro -o configPkg -t ti.targets.elf.C674 -p bh.platform.dsp.expOMAPL138 -r debug -c "C:/TI/ccsv5/tools/compiler/c6000_7.3.7" "../DSP_Main.cfg"
configuring DSP_Main.xe674 from package/cfg/DSP_Main_pe674.cfg ...
cle674 package/cfg/DSP_Main_pe674.c ...
'Finished building: ../DSP_Main.cfg'
'Building file: ../src/main.c'
'Invoking: C6000 Compiler'
"C:/TI/ccsv5/tools/compiler/c6000_7.3.7/bin/cl6x" -mv6740 -g --define=xdc__strict --define=VSLED_DEBUG --include_path="C:/TI/ccsv5/tools/compiler/c6000_7.3.7/include" --include_path="C:/CCS/VSLED_Source_Code/Vibration_Monitoring_DSP/h" --display_error_number --diag_warning=225 --abi=eabi --preproc_with_compile --preproc_dependency="src/main.pp" --obj_directory="src" --cmd_file="./configPkg/compiler.opt" "../src/main.c"
'Finished building: ../src/main.c'
'Building target: DSP_Main.out'
'Invoking: C6000 Linker'
"C:/TI/ccsv5/tools/compiler/c6000_7.3.7/bin/cl6x" -mv6740 -g --define=xdc__strict --define=VSLED_DEBUG --display_error_number --diag_warning=225 --abi=eabi -z -m"DSP_Main.map" --warn_sections -i"C:/TI/ccsv5/tools/compiler/c6000_7.3.7/lib" -i"C:/TI/dsplib_c674x_3_1_0_0/lib" -i"C:/TI/ccsv5/tools/compiler/c6000_7.3.7/include" --reread_libs --ram_model --preferred_order=_c_int00 -o "DSP_Main.out" -l"./configPkg/linker.cmd" "./src/main.obj" -l"libc.a" -l"dsplib.ae674" -l"C:\CCS\VSLED_Source_Code\Vibration_Monitoring_DSP\Debug\Vibration_Monitoring_DSP.lib"
gmake: *** [DSP_Main.out] Error 1
gmake: Target `all' not remade because of errors.
Here is what is in the problem window from the DSP Main:
Description Resource Path Location Type#10010 errors encountered during linking; "DSP_Main.out" not built DSP_Main C/C++ Problem<a href="file:/C:/TI/ccsv5/tools/compiler/dmed/HTML/10234.html">#10234-D</a> unresolved symbols remain DSP_Main C/C++ Problemunresolved symbol >>, first referenced in Compilation DSP_Main C/C++ Problem
Here is what is in the problem window from the CFG file:
Description Resource Path Location TypeUnresolved symbol ti_sysbios_BIOS_exit__E in file ./src/main.obj .xdchelp /SYSBIOS_DSP_configuration 0 C/C++ ProblemUnresolved symbol ti_sysbios_BIOS_start__E in file ./src/main.obj .xdchelp /SYSBIOS_DSP_configuration 0 C/C++ ProblemUnresolved symbol ti_sysbios_knl_Task_Object__create__S in file ./src/main.obj .xdchelp /SYSBIOS_DSP_configuration 0 C/C++ ProblemUnresolved symbol ti_sysbios_knl_Task_sleep__E in file ./src/main.obj .xdchelp /SYSBIOS_DSP_configuration 0 C/C++ ProblemUnresolved symbol xdc_runtime_Error_init__E in file ./src/main.obj .xdchelp /SYSBIOS_DSP_configuration 0 C/C++ Problem
And I attached the cfg file again just to make sure - been playing with it quiet a bit to get over this:
Thanks. I see two issues
1. Why do you have two .cfg files: app.cfg in the configuration project and DSP_Main.cfg in the application project.Unless you have a reason to have the separate .cfg project, why not just do all the SYS/BIOS configuration in the application project.
2. your main.c is in a directory called "src". When you do a custom SYS/BIOS build, it creates a "src" directory and puts the object files there. You already having this directory might be causing problems. Can to rename your "src" directory to "appSrc" (or something). Yea, we know in hindsight that we should have made the name "sysbiossrc" or something:(
Yea, we know in hindsight that we should have made the name "sysbiossrc" or something:(
Yea, we know in hindsight that we should have made the name "sysbiossrc" or something:(
The name of the custom build directory is configurable. This statement would leave 'src' available for the app source code:
xdc.module("xdc.cfg.SourceDir").outputDir = "./biossrc";
If my reply answers your question please mark the thread as answered.
OOOO I learn something new! Its a good day...
How about ../../sysbios_src? It looks like "." is Default/configPkg.
We have to have the DSP_Main.cfg (its an empty file) becasue we get the following when we dont have it:
Buildfile generation error occurred..
This project does not contain a buildable RTSC Configuration (.cfg) file. In order for it to build, this project must contain one RTSC Configuration file that is not excluded from build.
Description Resource Path Location TypeThis project does not contain a buildable RTSC Configuration (.cfg) file. In order for it to build, this project must contain one RTSC Configuration file that is not excluded from build. DSP_Main DSP_Main TI Problem Marker
Which way do you want to have your application setup
A. One project: application and SYS/BIOS together
B. Two projects: 1 for your application and 1 for the SYS/BIOS configuration
I prefer "A" because it's easier to manage, but "B" might be better if you have common shared SYS/BIOS configuration
Technically we have about 10 Projects. We have 8 engineers working on this program so it was just easier to have everybody have their own project, share a SYSBIOS, and then have one project be the final executable.
I tried option A and that seems to work.
So what is the trick to get B to work?
Once you create a project as a RTSC-project (e.g. with a .cfg file), you cannot reverse it. You need to make a new (non-RTSC) project and add the compiler.opt (and other things) as specified in the "Compiling and Linking" section of the SPRUEX4 ("XDC Consumer User’s Guide").
There are SYS/BIOS examples (Task) which have both the single project and the config & app projects.
All content and materials on this site are provided "as is". TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with regard to these materials, including but not limited to all implied warranties and conditions of merchantability, fitness for a particular purpose, title and non-infringement of any third party intellectual property right. TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with respect to these materials. No license, either express or implied, by estoppel or otherwise, is granted by TI. Use of the information on this site may require a license from a third party, or a license from TI.
TI is a global semiconductor design and manufacturing company. Innovate with 100,000+ analog ICs andembedded processors, along with software, tools and the industry’s largest sales/support staff.