DSPRelated.com
Forums

Create a library using DSP/BIOS

Started by Michael Matejko June 25, 2008
Hi,

I try to create a library in CCS 3.3 which uses DSP/BIOS. I've
utilized a tcf bios configuration file for the library project. It
generates all expected files ( *cfg.h, *cfg.h62, *cfg.s62, *cfg_c.c)
and also a *cfg.cmd linker command file.
My problem is that every project using this .lib gets a lot of
"undefined symol" errors at linking time, because a .lib library is
not linked but just an archive of objects.

Is it possible to include/attach the DSP/BIOS objects/archives to the
library?

Best regards,
Mike

Michael Matejko wrote:

> I try to create a library in CCS 3.3 which uses DSP/BIOS. I've > utilized a tcf bios configuration file for the library project. It > generates all expected files ( *cfg.h, *cfg.h62, *cfg.s62, *cfg_c.c) > and also a *cfg.cmd linker command file. > My problem is that every project using this .lib gets a lot of > "undefined symol" errors at linking time, because a .lib library is > not linked but just an archive of objects.
I can't help you with this but another possibility is not to create a library but to compile all source files (both those in your current project and those in your libraries) in one single call of the compiler, using program level optimisation. - The advantage is that the compiler knows the code of the library calls and the parameters they are called with and therefore can optimise the library code for these parameters and for the chosen DSP. - The disadvantage is that the build needs maximum constant execution time. I do this with the command line version of the TI compiler: - step 1: put all source file names in the file file_list: rm -f file_list for i in $LIST_OF_C_FILES do; echo -e -O3 $i >> file_list; done for i in $LIST_OF_CPP_FILES do; echo -e -O3 -fc $i >> file_list; done - step 2: run the compiler <PATH_TO_TI>/bin/cl6x -DCHIP_6415 -mv6400 -ml3 -fg -pm -o main.o -@file_list - step 3: run the linker: <PATH_TO_TI>/bin/lnk6x -c -x -w -priority -o main.out main.o <OTHER_LIBS> ld.cmd bye Andreas -- Andreas H&#4294967295;nnebeck | email: acmh@gmx.de ----- privat ---- | www : http://www.huennebeck-online.de Fax/Anrufbeantworter: 0721/151-284301 GPG-Key: http://www.huennebeck-online.de/public_keys/andreas.asc PGP-Key: http://www.huennebeck-online.de/public_keys/pgp_andreas.asc
Michael Matejko wrote:
> Hi, > > I try to create a library in CCS 3.3 which uses DSP/BIOS. I've > utilized a tcf bios configuration file for the library project. It > generates all expected files ( *cfg.h, *cfg.h62, *cfg.s62, *cfg_c.c) > and also a *cfg.cmd linker command file. > My problem is that every project using this .lib gets a lot of > "undefined symol" errors at linking time, because a .lib library is > not linked but just an archive of objects. > > Is it possible to include/attach the DSP/BIOS objects/archives to the > library? > > Best regards, > Mike >
I bet if you manually added the DSP/BIOS library to your project that it would get folded into your output library. When you create a library in CCS it just invoking the archiver as the final step rather than the linker. I believe that normally the DSP/BIOS libraries get linked into the code because the generated linker command file has a -l statement to include it. So most likely adding the file to your project should cause the archiver to include the BIOS library along with all your other object files when it creates your output library. If not, you could manually modify the statement being used to invoke the archiver such that it adds the BIOS library. Brad