I have an OMAP-L138 development board, and the following version of software tools installed:
CCSv5 = 5.1.0.08020, BIOS = 6.32.04.49, XDCTOOLS = 3.22.03.41, XDAIS = 7.21.01.05
I have successfully converted a C6726 based product from CCSv3.3 over to CCSv5.1 and gotten it to run on the OMAP-L138 dev board. My project did not use or require any XDC or SYS/BIOS components, and it runs just fine. I am switching over to a C6747 or C6748 chip so that I can take advantage of the C64x+ software libraries such as the G.711, G.722, and G.726 encoder/decoders.
I downloaded c64xplus_g711_1_12_00_000_production, created an "Empty Project" from the "Empty Project" templates, replaced the dummy main.c file with TestAppEncoder.c, and added g711enc_tii.l64P and XDM source files to the project that I created. When I attempted to build the project I got the following error messsage:
#5 could not open source file "std.h" alg_create.c /g711_enc line 16 C/C++ Problem
After reading thru the TI forums, it seems that many people have run into this same problem. The two recommended solutions were either: (1) to go to the project "Build Options -> Include Options" and manually add the include paths to find std.h in xdctools, or (2) create a new project, but this time use the "Empty RTSC Project" template. I chose the second option. This resolved the missing "std.h" file problem, but then I ran into another build problem:
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.
For whatever reason creating a "Empty RTSC Project" from the template does not produce a .cfg along with the project. [NOTE: I selected "ti.targets.c674" as the TARGET, and "ti.platforms.sim67xx" as the PLATFORM for these empty template projects].
After reading thru the TI forums again, it seems that my choices were either to: (1) create a SYS/BIOS project from one of the templates and use the .cfg that was created, or (2) use one of the .cfg files under C:\ti\ccsv5\ccs_base\simulation\bin\configurations. I created app.cfg from the "SYS/BIOS -> Minimal" template, as well as hello.cfg from "SYS/BIOS -> Examples -> Hello" template.
When I added either app.cfg or hello.cfg to my g711 project, and then attempt to rebuild it, I get the following error message:
Unsupported device! .xdchelp /g711_enc 237 C/C++ Problem
Finally I tried using one of the .cfg files from the ..\simulation\bin\configurations subdirectory. I tried separately building my g711 project using tisim_c674x_ca.cfg, tisim_C6747_ca.cfg, or tisim_C6747_pv.cfg. In each case I got the following error message:
missing ; before statement tisim_c674x_ca.cfg /g711_enc 6 C/C++ Problem
I have no idea what that error message means or how to resolve it.
Overall, I have searched all over the TI Forums and wiki pages, and I can't find a simple explanation of how to create a simple main.c file that creates a single instance of the g711 encoder that will build and run under CCSv5. As soon as you use the common XDM files alg_create.c and alg_malloc.c, you then need to use std.h, and then you go down the tool chain rabbit hole.
Bottom line, how do you create a project in CCSv5 to create and build an instance of the g711 encoder that is found in c64xplus_g711_1_12_00_000_production.zip ?
Hello,
Why do we want to create a vanilla Empty Project with a dummy main.c and not an Empty RTSC project?
I created another new Empty Project as you suggested and called it "g711aenc2". I followed your instructions and created an "alg.h" header file and placed it in the same subdirectory as the other ..\ti\xdais header files. I also commented out the reference to "#include <_alg.h>" in alg_create.c. When I compiled the project I get a slew of new error messages and warnings:
Description Resource Path Location Typeunresolved symbol G711AENC_TII_IG711AENC, first referenced in ./g711Encodermain.obj g711aenc2 C/C++ Problem<a href="file:/C:/ti/ccsv5/tools/compiler/dmed/HTML/10234.html">#10234-D</a> unresolved symbols remain g711aenc2 C/C++ Problem#10010 errors encountered during linking; "g711aenc2.out" not built g711aenc2 C/C++ Problem<a href="file:/C:/ti/ccsv5/tools/compiler/dmed/HTML/225.html">#225-D</a> function declared implicitly alg_create.c /g711aenc2 line 43 C/C++ Problem<a href="file:/C:/ti/ccsv5/tools/compiler/dmed/HTML/225.html">#225-D</a> function declared implicitly alg_create.c /g711aenc2 line 51 C/C++ Problem<a href="file:/C:/ti/ccsv5/tools/compiler/dmed/HTML/225.html">#225-D</a> function declared implicitly alg_create.c /g711aenc2 line 77 C/C++ Problem<a href="file:/C:/ti/ccsv5/tools/compiler/dmed/HTML/225.html">#225-D</a> function declared implicitly g711Encodermain.c /g711aenc2 line 139 C/C++ Problem<a href="file:/C:/ti/ccsv5/tools/compiler/dmed/HTML/225.html">#225-D</a> function declared implicitly g711Encodermain.c /g711aenc2 line 148 C/C++ Problem<a href="file:/C:/ti/ccsv5/tools/compiler/dmed/HTML/225.html">#225-D</a> function declared implicitly g711Encodermain.c /g711aenc2 line 154 C/C++ Problem<a href="file:/C:/ti/ccsv5/tools/compiler/dmed/HTML/225.html">#225-D</a> function declared implicitly g711Encodermain.c /g711aenc2 line 160 C/C++ Problem<a href="file:/C:/ti/ccsv5/tools/compiler/dmed/HTML/225.html">#225-D</a> function declared implicitly g711Encodermain.c /g711aenc2 line 203 C/C++ Problem<a href="file:/C:/ti/ccsv5/tools/compiler/dmed/HTML/225.html">#225-D</a> function declared implicitly g711Encodermain.c /g711aenc2 line 209 C/C++ Problem<a href="file:/C:/ti/ccsv5/tools/compiler/dmed/HTML/225.html">#225-D</a> function declared implicitly g711Encodermain.c /g711aenc2 line 365 C/C++ Problem
#303-D typedef name has already been declared (with same type) g711aenc2 line 89, external location: C:\ti\xdctools_3_22_03_41\packages\xdc\std.h C/C++ Problem#303-D typedef name has already been declared (with same type) g711aenc2 line 90, external location: C:\ti\xdctools_3_22_03_41\packages\xdc\std.h C/C++ Problem#303-D typedef name has already been declared (with same type) g711aenc2 line 91, external location: C:\ti\xdctools_3_22_03_41\packages\xdc\std.h C/C++ Problem#303-D typedef name has already been declared (with same type) g711aenc2 line 92, external location: C:\ti\xdctools_3_22_03_41\packages\xdc\std.h C/C++ Problem#303-D typedef name has already been declared (with same type) g711aenc2 line 93, external location: C:\ti\xdctools_3_22_03_41\packages\xdc\std.h C/C++ Problem#303-D typedef name has already been declared (with same type) g711aenc2 line 94, external location: C:\ti\xdctools_3_22_03_41\packages\xdc\std.h C/C++ Problem#303-D typedef name has already been declared (with same type) g711aenc2 line 95, external location: C:\ti\xdctools_3_22_03_41\packages\xdc\std.h C/C++ Problem#303-D typedef name has already been declared (with same type) g711aenc2 line 96, external location: C:\ti\xdctools_3_22_03_41\packages\xdc\std.h C/C++ Problem
#10349-D creating output section ".rodata" without a SECTIONS g711aenc2 C/C++ Problem#10349-D creating output section ".neardata" without a SECTIONS g711aenc2 C/C++ Problem#10349-D creating output section ".fardata" without a SECTIONS g711aenc2 C/C++ Problem#10321-D creating group "NEARDP_DATA" to co-locate output sections g711aenc2 C/C++ Problem
By the way, what are you using for the linker command file? I am using the g711_c6455_elf.cmd that I found under ..\ti\sdo\codecs\g711aenc\app\client\build of the original unzipped package.
Joseph,
Have you linked in the g711aenc library, and have you changed the compiler options to build ELF format?
I didn't use the g711_c6455_elf.cmd file, but I think you could, and you could adjust the memory for your platform. I think I just got some default memory map.
Best regards,
Janet
Yes, I have g711aenc_tii_elf.I64P in the same directory in the project as g711Encodermain.c, and yes I have changed the output format to eabi (ELF).
Upon closer examination of the warning messages, the alg_create.c file is not seeing a header file for "_ALG_allocMemory(memTab, n)" and "_ALG_freeMemory(memTab, n)".
Upoon closer examination of the warning messages for g711Encodermain.c, the compiler/linker doesn't know how to resolve "exit(0)'. Likewise, it also doesn't know how to resolve the following in g711Encodermain.c: between lines 203..210:
if ((handle = (ISPHENC1_Handle) ALG_create ( (IALG_Fxns *) &G711AENC_TII_IG711AENC, (IALG_Handle) NULL, (IALG_Params *) ¶ms)) == NULL) { printf("Failed to Create Instance... Exiting for this configuration..\n"); exit(1); }
ALG_create() and ALG_delete() were defined in t alg.h, which is the missing file we needed to create. I put that file under c:\ti\xdais_7_21_01_05_eng\packages\ti\xdais where ialg.h and xdas.h are located.
Finally I created my own g711_c674x.cmd, which has the same contents as g711_c6455_elf.cmd, but with the memory address map for a C674x chip. I still get all the errors that I reported yesterday.
Attached is a zipped copy of my current project:
7181.g711aenc2.zip
I was able to build your project after adding a few directories to the the include search path, and the encoder library and path to the project. Here is a list of what I did to get it to build (note that you have already done some of these steps, but since I have xdctools, xdais, etc in different directories, I had to add my directories to the projects include and library search paths.
I imported the project from the zip file you posted, and tried to build.
First error:
"../g711Encodermain.c", line 14: fatal error #5: could not open source file "std.h"1 fatal error detected in the compilation of "../g711Encodermain.c".Compilation terminated.-- Add <XDC_INSTALL_DIR>/packages/xdc to include file search path
Rebuilt project and got this error:
"C:/ti/xdctools_3_22_04_46/packages/xdc/std.h", line 71: fatal error #5: could not open source file "ti/targets/select.h"1 fatal error detected in the compilation of "../g711Encodermain.c".Compilation terminated.
-- Add <XDC_INSTALL_DIR>/packages to include file search path
Next error:
"../g711Encodermain.c", line 16: fatal error #5: could not open source file "g711aenc_tii.h"1 fatal error detected in the compilation of "../g711Encodermain.c".Compilation terminated.-- Add <G711_DIR>/ti/sdo/codecs/g711aenc/app/Inc to include file search path
Next error:"I:\jeh\docs\support\g711\ti\sdo\codecs\g711aenc\app\Inc\isphenc1.h", line 27: fatal error #5: could not open source file "xdas.h"1 fatal error detected in the compilation of "../g711Encodermain.c".-- Add <XDAIS_INSTALL_DIR>/packages/ti/xdais to include file search path
Next error:"../alg_malloc.c", line 37: fatal error #5: could not open source file "alg.h"1 fatal error detected in the compilation of "../alg_malloc.c".Compilation terminated.-- Add an alg.h to project and I:\jeh\docs\support\g711\Joseph Z's project\g711aenc2 to include search path
Next error:warning #10349-D: creating output section ".rodata" without a SECTIONS specification. For additional information on this section, please see the 'C6000 EABI Migration' guide at http://processors.wiki.ti.com/index.php/C6000_EABI:C6000_EABI_Migration#C6x_ EABI_Sectionswarning #10321-D: creating group "NEARDP_DATA" to co-locate output sections .neardata and .rodata with .bss undefined first referenced symbol in file --------- ---------------- G711AENC_TII_IG711AENC ./g711Encodermain.objerror #10234-D: unresolved symbols remainerror #10010: errors encountered during linking; "g711aenc2.out" not built-- Add library "I:\jeh\docs\support\g711\ti\sdo\codecs\g711aenc\lib\g711aenc_tii_elf.l64P"and library search path: "I:\jeh\docs\support\g711\ti\sdo\codecs\g711aenc\lib" to project.
After that, I was able to build the .out (still plenty of warnings, though). The _ALG_allocMemory() and _ALG_freeMemory() functions must have been defined in the missing _alg.h file.
Are these the errors you were also seeing?
I haven't seen the first five compilation errors that you listed in your posting. I believe that they were caused by difference in our tool chain paths, which in turn affect our respective include paths, i.e.
"${CG_TOOL_ROOT}/include""C:/ti/xdctools_3_22_03_41/packages""C:/ti/xdctools_3_22_03_41/packages/xdc""C:/ti/xdais_7_21_01_05_eng/packages/ti/xdais""C:\Program Files (x86)\c64xplus_g711_2_00_00_000_production\c64xplus_g711adec_2_00_00_000_production\ti\sdo\codecs\g711adec\app\Inc"
As an aside, I did a search on my hard drive and I located two different versions of "alg.h" and "_alg.h". At some point when I was installing software for my OMAP-L137 board, I downloaded the C674x_dsp_1_00_00_11 archive, which included subdirectories for "framework_components_2_23_01" and "codec_engine_2_23_01". Each subdirectory had it's own version of "alg.h" and "_alg.h". I copied the version of these files from "framework_components_2_23_01" and placed them under "C:/ti/xdais_7_21_01_05_eng/packages/ti/xdais". I restored the reference to "#include <_alg.h>" in "alg_create.c" and recompiled my project. That resolved the problem with _ALG_allocMemory() and _ALG_freeMemory() functions, but still left me with the other errors that I reported earlier.
Another interesting thing to point out is that all the functions found in "alg.h" under "codec_engine_2_23_01" have an additional function parameter "groupId" of type "Int", i.e.
extern ALG_Handle ALG_create(IALG_Fxns *fxns, IALG_Handle p, IALG_Params *prms);
versus
extern ALG_Handle ALG_create(Int groupId, IALG_Fxns *fxns, IALG_Handle p, IALG_Params *prms);
Over the past 3 or 4 years we have seen the XDM interface evolve from version 0.9 to version 1.0 to version 1.1. For some reason which I can not fathom, the header files alg.h and _alg.h have never been located under the "ti\xdais_<version>\packages\ti\xdias" subdirectory where other files such as "ialg.h" are stored. As a software developer trying to use TI's codec library or volib library, I don't see how we can ever get these libraries to compile and link if we don't have the correct header files installed under the correct tool chain.
The header files alg.h and _alg.h are not part of the xdais product. The G711 encoder test has its own alg.h and _alg.h, which should have been included with the test, but are missing. These header files are not the same as the ones used in framework components or codec engine. The contents of the alg.h that I posted earlier is what you need to build the test. It's probably better to place this alg.h in the test directory, rather than under xdais, since it is specific to the test.
Are you still getting the linker error, unresolved symbol G711AENC_TII_IG711AENC, or is there some other error?
If I don't use the "_alg.h" obtained from somewhere else, then we to create one to resolve the problem with the missing _ALG_allocMemory() and _ALG_freeMemory() functions.
The following are the error and warning messages that I am still seeing:
Description Resource Path Location Type#10010 errors encountered during linking; "g711aenc2.out" not built g711aenc2 C/C++ Problem<a href="file:/C:/ti/ccsv5/tools/compiler/dmed/HTML/10234.html">#10234-D</a> unresolved symbols remain g711aenc2 C/C++ Problemunresolved symbol G711AENC_TII_IG711AENC, first referenced in ./g711Encodermain.obj g711aenc2 C/C++ Problem#10321-D creating group "NEARDP_DATA" to co-locate output sections g711aenc2 C/C++ Problem#10349-D creating output section ".fardata" without a SECTIONS g711aenc2 C/C++ Problem#10349-D creating output section ".neardata" without a SECTIONS g711aenc2 C/C++ Problem#10349-D creating output section ".rodata" without a SECTIONS g711aenc2 C/C++ Problem#303-D typedef name has already been declared (with same type) g711aenc2 line 89, external location: C:\ti\xdctools_3_22_03_41\packages\xdc\std.h C/C++ Problem#303-D typedef name has already been declared (with same type) g711aenc2 line 90, external location: C:\ti\xdctools_3_22_03_41\packages\xdc\std.h C/C++ Problem#303-D typedef name has already been declared (with same type) g711aenc2 line 91, external location: C:\ti\xdctools_3_22_03_41\packages\xdc\std.h C/C++ Problem#303-D typedef name has already been declared (with same type) g711aenc2 line 92, external location: C:\ti\xdctools_3_22_03_41\packages\xdc\std.h C/C++ Problem#303-D typedef name has already been declared (with same type) g711aenc2 line 93, external location: C:\ti\xdctools_3_22_03_41\packages\xdc\std.h C/C++ Problem#303-D typedef name has already been declared (with same type) g711aenc2 line 94, external location: C:\ti\xdctools_3_22_03_41\packages\xdc\std.h C/C++ Problem#303-D typedef name has already been declared (with same type) g711aenc2 line 95, external location: C:\ti\xdctools_3_22_03_41\packages\xdc\std.h C/C++ Problem#303-D typedef name has already been declared (with same type) g711aenc2 line 96, external location: C:\ti\xdctools_3_22_03_41\packages\xdc\std.h C/C++ Problem<a href="file:/C:/ti/ccsv5/tools/compiler/dmed/HTML/225.html">#225-D</a> function declared implicitly g711Encodermain.c /g711aenc2 line 139 C/C++ Problem<a href="file:/C:/ti/ccsv5/tools/compiler/dmed/HTML/225.html">#225-D</a> function declared implicitly g711Encodermain.c /g711aenc2 line 148 C/C++ Problem<a href="file:/C:/ti/ccsv5/tools/compiler/dmed/HTML/225.html">#225-D</a> function declared implicitly g711Encodermain.c /g711aenc2 line 154 C/C++ Problem<a href="file:/C:/ti/ccsv5/tools/compiler/dmed/HTML/225.html">#225-D</a> function declared implicitly g711Encodermain.c /g711aenc2 line 160 C/C++ Problem<a href="file:/C:/ti/ccsv5/tools/compiler/dmed/HTML/225.html">#225-D</a> function declared implicitly g711Encodermain.c /g711aenc2 line 203 C/C++ Problem<a href="file:/C:/ti/ccsv5/tools/compiler/dmed/HTML/225.html">#225-D</a> function declared implicitly g711Encodermain.c /g711aenc2 line 209 C/C++ Problem<a href="file:/C:/ti/ccsv5/tools/compiler/dmed/HTML/225.html">#225-D</a> function declared implicitly g711Encodermain.c /g711aenc2 line 365 C/C++ Problem
Did you add the g711 library to your project? The zipped up project that you posted yesterday did not have that library. You need to add the library and the search path to the project link options. In CCS, open your project Build Options, and then go to:
Build -> C6000 Linker -> File Search Path
This is what I did:
Sorry, but I don't know why my screen shot wasn't uploaded. It showed both the library in the upper box, and the path to it in the lower box.
After adding the file search path to the project to locate g711aenc_tii_elf.l64P, it resolved the missing symbol G711AENC_TII_IG711AENC. There are no further errors preventing g711aenc3.out from being produced, but there still are 23 warning message that I reported earlier.
I would like to try and run the test application on the TI software simulator, but the question next becomes which one? Under
General -> Build Options -> Variant:
I have "Generic C674x Device" selected. Should it be "Generic C64x+ Device" instead to run the codec library?
Likewise under
General -> Build Options -> Advanced Settings -> Rutime support library:
I have "<automatic>" choice selected. When I looked at g711aenc2.map, the "rts6740_elf.lib" was chosen as the runtime support library. Should I explicitly select "rts64plus_elf.lib" instead?
Finally, under
Project -> New -> Target -> Texas Instrument Simulator
I selected "C674x CPU Cycle Accurate SImulator, Little Endian". Should it be "C64x+ CPU Cycle Accurate Simulator, Little Endian"?
I could create CCSv5 projects for G711, based on version 2_00_00 downloaded from TI website, and I could build and run them on C6747 Device simulator for the sample test vector available.
Please find attached the archive for your reference. The project files are available @ \app\Client\Build\Encoder (Decoder).
I have used the following tools set and Build Variables to set, you may need to update these Build Variables if you are using dufferent tool set.
BIOS_INSTALL_DIR=C:\CCSV5\bios_6_31_00_18
XDCROOT=C:\CCSV5\xdctools_3_20_08_88
FRMWORKROOT=C:\CCSV5\framework_components_3_20_02_29
To change these variables, Import the CCS project, Right click on the project and Select "Build Options". Select "Build" Tab. You can find the above variables under "Build Variables". Click Edit and Modify according to your PATHs. If you have the above tools installed at C:\CCSv5, no need to make any changes, the projects should build as is and work for you.
Let me know if you have any difficulties or questions.
Thanks,
Venkat2867.c64xplus_g711_2_00_00_000_production.zip
after some trials i was able to build the code,but still i am getting some errors can u pls look into it and suggest any solution.
when i tried to run the code i am getting this error,
[C674X_0] Testing G.711 Encoder[C674X_0] [C674X_0] Error in opening input file list
warnings:
Description Resource Path Location Type#10321-D creating group "NEARDP_DATA" to co-locate output sections .neardata and .rodata with .bss g711a_encoder C/C++ Problem#10349-D creating output section ".fardata" without a SECTIONS specification. For additional information on this section, please see the 'C6000 EABI Migration' guide at http://processors.wiki.ti.com/index.php/C6000_EABI:C6000_EABI_Migration#C6x_ EABI_Sections g711a_encoder C/C++ Problem#10349-D creating output section ".neardata" without a SECTIONS specification. For additional information on this section, please see the 'C6000 EABI Migration' guide at http://processors.wiki.ti.com/index.php/C6000_EABI:C6000_EABI_Migration#C6x_ EABI_Sections g711a_encoder C/C++ Problem#10349-D creating output section ".rodata" without a SECTIONS specification. For additional information on this section, please see the 'C6000 EABI Migration' guide at http://processors.wiki.ti.com/index.php/C6000_EABI:C6000_EABI_Migration#C6x_ EABI_Sections g711a_encoder C/C++ Problem<a href="file:/C:/ti/ccsv5/tools/compiler/dmed/HTML/225.html">#225-D</a> function declared implicitly alg_create.c /g711a_encoder line 43 C/C++ Problem<a href="file:/C:/ti/ccsv5/tools/compiler/dmed/HTML/225.html">#225-D</a> function declared implicitly alg_create.c /g711a_encoder line 51 C/C++ Problem<a href="file:/C:/ti/ccsv5/tools/compiler/dmed/HTML/225.html">#225-D</a> function declared implicitly alg_create.c /g711a_encoder line 77 C/C++ Problem<a href="file:/C:/ti/ccsv5/tools/compiler/dmed/HTML/225.html">#225-D</a> function declared implicitly g711Encodermain.c /g711a_encoder line 139 C/C++ Problem
i am getting problem near the exit(0); in lines 139,148 in g711encodermain.c and other error in line 43 i n the alg_create.c
please revert back asap.
Hi joseph,
can u please post ur compiled file here, i am getting error
can u suggest any solution?
Hello lenin,
I am not a TI employee, but I can offer a few suggestions.
1. When you created your project, did you specify that the output format of the build is "eabi (ELF)" and not "Legacy COFF" format? The G.711 library that you are linking with is ELF format.
2. What are you using for your linker command file? The g711_c6455_elf.cmd file that is packaged with the test application might not match the memory map of your target platform. I had to create my own .cmd file to match the target DSP chip on my EVM board.
Hi Joseph,
Thanks for the reply.
I have specified the output format as "eabi" by seeing the earlier posts.
The library i am using is "g711aenc_tii_elf.l64p".
I tried to make my own cmd file but still i find same errors.
[C674X_0] Testing G.711 Encoder[C674X_0] [C674X_0] Error in opening input file[C674X_0] All input Files processed
when i tried to run the program i get the following error:
No source available for "C$$EXIT() at C:\Documents and Settings\lenin\workspace_v5_2\g711a_encoder\Debug\g711a_encoder.out:{3} 0x8000bda0{4}"