This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM4379: AM437x

Part Number: AM4379
Other Parts Discussed in Thread: SYSBIOS, 4430, TMS320TCI6608, TMS320C6670, TMS320C6678, TMS320C6657, TMS320C6748, OMAPL138, TMS320DM8168, TMS320C6472, TMS320DM8148, AM3359, TCI6636K2H

I have created a RTSC project from scratch in CCS 1011. It comes with a config file. I have copied and pasted configuration which includes EDMA3 to the config file. I want to see if it will compile to then bring in other files and source code. 

The build stops at EDMA3 build. I added some print statements to the package.xs file in the C:\ti\edma3_lld_2_12_05_30E\packages\ti\sdo\edma3\drv directory to see if I can determine the reason why I get an error which is about not finding the necessary EDMA3 library that must be found and linked with the .cfg file. 

Here is the output of the compilation of .cfg file:

==================================================================

**** Build of configuration Debug for project My_RTOS_TEST ****

"C:\\ti\\ccs1011\\ccs\\utils\\bin\\gmake" -k -j 8 all -O

Building file: "../My_RTOS_TEST.cfg"
Invoking: XDCtools
"C:/ti/ccs1011/xdctools_3_61_02_27_core/xs" --xdcpath="C:/ti/pdk_am437x_1_0_17/packages;C:/ti/edma3_lld_2_12_05_30E/packages;C:/ti/ndk_3_61_01_01/packages;C:/ti/bios_6_76_03_01/packages;C:/ti/uia_2_30_01_02/packages;" xdc.tools.configuro -o configPkg -t gnu.targets.arm.A9F -r debug -c "C:/ti/gcc-arm-none-eabi-7-2018-q2-update" "../My_RTOS_TEST.cfg"
configuring My_RTOS_TEST.xa9fg from package/cfg/My_RTOS_TEST_pa9fg.cfg ...
SoC Type is
SoC Type is
generating custom ti.sysbios library makefile ...
Linking with library ti.drv.spi:./lib/am437x/a9/release/ti.drv.spi.aa9fg
Linking with library ti.board:./lib/idkAM437x/a9/release/ti.board.aa9fg
Linking with library ti.drv.gpio:./lib/a9/release/ti.drv.gpio.aa9fg
Linking with library ti.drv.pruss:./lib/a9/release/ti.drv.pruss.aa9fg
Linking with library ti.drv.i2c:./lib/a9/release/ti.drv.i2c.aa9fg
Linking with library ti.drv.uart:./lib/a9/release/ti.drv.uart.aa9fg
Linking with library ti.osal:./lib/tirtos/a9/release/ti.osal.aa9fg
Inside EDMA3 Drv Sample getLibs
Inside EDMA3 Drv Sample getLibs
AM437x is working up to here
0
OMAP4430
1
OMAP4430
2
OMAP4430
3
OMAP4430
4
OMAP4430
5
OMAP4430
6
OMAP4430
7
OMAP4430
8
OMAP4430
9
OMAP4430
10
OMAP4430
11
OMAP4430
12
OMAP4430
13
OMAP4430
14
OMAP4430
15
OMAP4430
16
OMAP4430
17
OMAP4430
18
OMAP4430
19
OMAP4430
20
OMAP4430
21
OMAP4430
22
OMAP4430
23
OMAP4430
24
OMAP4430
25
OMAP4430
26
OMAP4430
27
OMAP4430
28
OMAP4430
29
OMAP4430
30
OMAP4430
subdir_rules.mk:12: recipe for target 'build-629393137-inproc' failed
js: "C:/ti/edma3_lld_2_12_05_30E/packages/ti/sdo/edma3/drv/sample/package.xs", line 170: Error: Unexpected value in "platform" parameter
xdctools_3_61_02_27_core\gmake.exe: *** [package.mak:218: package/cfg/My_RTOS_TEST_pa9fg.xdl] Error 1
xdctools_3_61_02_27_core\gmake.exe: *** Deleting file 'package/cfg/My_RTOS_TEST_pa9fg.xdl'
xdctools_3_61_02_27_core\gmake.exe: *** [package/cfg/My_RTOS_TEST_pa9fg.xdl] Deleting file 'package/cfg/My_RTOS_TEST_pa9fg.h'
xdctools_3_61_02_27_core\gmake.exe: *** [package/cfg/My_RTOS_TEST_pa9fg.xdl] Deleting file 'package/cfg/My_RTOS_TEST_pa9fg.c'
js: "C:/ti/ccs1011/xdctools_3_61_02_27_core/packages/xdc/tools/Cmdr.xs", line 52: Error: xdc.tools.configuro: configuration failed due to earlier errors (status = 2); 'linker.cmd' deleted.
gmake[1]: *** [build-629393137-inproc] Error 1
gmake: *** [build-629393137] Error 2
subdir_rules.mk:9: recipe for target 'build-629393137' failed
gmake: Target 'all' not remade because of errors.

**** Build Finished ****

=========================================================================================

THE COUNT FROM 0 TO 30 AND THE REPETITION OF THE STRING "OMAP4430" IS DUE TO MY PRINT STATEMENTS WHICH i HAVE INSERTED INTO THE "PACKAGE.XS" FILE. IT APPEARS TO ME THA TTHE STATEMENT if (java.lang.String(Program.cpu.deviceName).equals(devices[i])) IN PACKAGE.XS file IS EVALUATED TO OMAP 4430 WHICH IS NOT MEANINGFUL. THE SCRIPT IS SUPPOSED TO FIND "AM437x-EVM" as in the "lib\AM437x-evm", AND find the next level the directory, namely lib\AM437x\arm9 so it can find the library file. The installation of the directory structure in my PC for EDMA3 is good and there are no errors there. once the right directory is found, the variable "bool" is changed to 1. If it all goes correctly there should be no error. The set up of the directory structure matches what is supposed to be there, however, in the package.xs file, you can see that the object Program.cpu.deviceName is permanently stuck at OMAP 4430. 

Could you please help me fix the problem so that in building the .cfg file can proceed. 

Here is package.xs file content

package.xs
*
* xdc script file for the EDMA DRV package.
*
* Copyright (C) 2009 - 2019 Texas Instruments Incorporated - http://www.ti.com/
*
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the
* distribution.
*
* Neither the name of Texas Instruments Incorporated nor the names of
* its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/

/*
* ======== package.xs ========
*
*/

/*
* ======== getLibs ========
*/
function getLibs(prog)
{
var bool = 0;

print ("Inside EDMA3 Drv Sample getLibs");
print ("Inside EDMA3 Drv Sample getLibs");

/* Prepare variables to form the library path within this package */
var name = "edma3_lld_drv_sample";
var lib = "lib/";
var target;
var extension;

/* Devices supported */
var devices = [
'TMS320DA830',
'TMS320TCI6608',
'TMS320TCI6616',
'TMS320TCI6614',
'Kepler',
'TMS320C6670',
'TMS320C6678',
'TMS320TCI6614',
'TMS320C6657',
'TMS320TCI6638',
'TMS320TCI6636',
'TMS320C6748',
'OMAPL137',
'OMAPL138',
'TMS320DM8168',
'TMS320C6472',
'TMS320CTCI6486',
'TMS320DM8148',
'TMS320TI814X',
'TMS320TI816X',
'AM3359',
'AM437x',
'Vayu',
'DRA7XX',
'TDA3XX',
'TCI6636K2H',
'TMS320C66AK2E05',
'TMS320TCI6630K2L',
'C66AK2E05',
'TCI6630K2L',
'TCI66AK2G02'
];

/* Directories for each platform */
var dir = [
'da830-evm/',
'tci6608-sim/',
'tci6616-sim/',
'tci6614-sim/',
'tci6638k2k-sim/',
'c6670-evm/',
'c6678-evm/',
'tci6614-evm/',
'c6657-evm/',
'tci6638k2k-evm/',
'tci6636k2h-evm/',
'c6748-evm/',
'omapl137-evm/',
'omapl138-evm/',
'ti816x-evm/',
'c6472-evm/',
'tci6486-evm/',
'ti814x-evm/',
'ti814x-evm/',
'ti816x-evm/',
'am335x-evm/',
'am437x-evm/',
'tda2xx-evm/',
'tda2xx-evm/',
'tda3xx-evm/',
'tci6636k2h-evm/',
'c66ak2e-evm/',
'tci6630k2l-evm/',
'c66ak2e-evm/',
'tci6630k2l-evm/',
'tci66ak2g02-evm/'
];
print ("AM437x is working up to here");

for (var i = 0; i < devices.length; i++)
{
print (i);
print (java.lang.String(Program.cpu.deviceName));
if (java.lang.String(Program.cpu.deviceName).equals(devices[i]))
{
/* Choose the selected platform */
print ("Found Dir");
lib = lib + dir[i];
print(java.lang.string(lib));
extension = ".a" + Program.build.target.suffix;
if (java.lang.String(Program.build.target.suffix).contains('674'))
target = "674/";
if (java.lang.String(Program.build.target.suffix).contains('64P'))
target = "64p/";
if (java.lang.String(Program.build.target.suffix).contains('66'))
target = "66/";
if (java.lang.String(Program.build.target.suffix).contains('a8'))
target = "a8/";
if (java.lang.String(Program.build.target.suffix).contains('m3'))
target = "m3/";
if (java.lang.String(Program.build.target.suffix).contains('arm9'))
target = "arm9/";
if (java.lang.String(Program.build.target.suffix).contains('m4'))
target = "m4/";
if (java.lang.String(Program.build.target.suffix).contains('a15'))
target = "a15/";
if (java.lang.String(Program.build.target.suffix).contains('arp32'))
target = "arp32/";


lib = lib + target;
bool = 1;
break;
}
}

if (bool == 0)
throw new Error('Unexpected value in "platform" parameter')

switch (this.profile) {
case 'debug':
/* enable debug build for debug profile only */
lib = lib + "debug/" + name + extension;
break;

default:
/* release profile for everything else */
lib = lib + "release/" + name + extension;
}

print(" will link with " + this.$name + ":" + lib);

/* return the library name */
return (lib);
}

function init() {
xdc.loadPackage("ti.sysbios");
}

The problem statement is in read.

Thank you

  • Hi,

    From your build log, I saw the SoC was not defined:

    configuring My_RTOS_TEST.xa9fg from package/cfg/My_RTOS_TEST_pa9fg.cfg ...
    SoC Type is
    SoC Type is

    When you create a CCS project, you'll need to specify the Target.

    Regards,

    Jianzhong

  • Thank you for your reply, but I don't think that SoC Type is the root cause of the problem. I reverted the logging changes to package.xs file and I compiled a much more complicated project. Within both projects, I have specified IDK_AM437X which I pick from the drop-down menu in CCS General in CCS. The bigger CiA402 project has always compiled just fine but this project came back with errors. The funny thing is that after I changed the package.xs and reverted the changes, I tested the compilation again, and it compiles now. But the same two messages with SoC Type comes empty as before. No change there.

    My main.c is empty but it builds just fine. However, when it comes to linking, it is not going well. main.c is empty. Is this normal?

    Building target: "My_RTOS_TEST.out"
    Invoking: GNU Linker
    "C:/ti/gcc-arm-none-eabi-7-2018-q2-update/bin/arm-none-eabi-gcc-7.3.1.exe" -Og -g -gdwarf-3 -gstrict-dwarf -Wall -specs="nosys.specs" -Wl,-Map,"My_RTOS_TEST.map" -o"My_RTOS_TEST.out" "./main.o" -Wl,-T"configPkg/linker.cmd" -Wl,--start-group -lc -Wl,--end-group
    makefile:142: recipe for target 'My_RTOS_TEST.out' failed
    C:\ti\bios_6_76_03_01\packages\gnu\targets\arm\rtsv7A\lib\boot.aa9fg(startup.oa9fg): In function `_fini':
    /db/ztree/library/trees/xdctargets/xdctargets-t09/src/gnu/targets/arm/rtsv7A/startup.c:94: multiple definition of `_fini'
    c:/ti/gcc-arm-none-eabi-7-2018-q2-update/bin/../lib/gcc/arm-none-eabi/7.3.1/crti.o:(.fini+0x0): first defined here
    C:\ti\bios_6_76_03_01\packages\gnu\targets\arm\rtsv7A\lib\boot.aa9fg(startup.oa9fg):/db/ztree/library/trees/xdctargets/xdctargets-t09/src/gnu/targets/arm/rtsv7A/startup.c:29: multiple definition of `__dso_handle'
    c:/ti/gcc-arm-none-eabi-7-2018-q2-update/bin/../lib/gcc/arm-none-eabi/7.3.1/crtbegin.o:(.data+0x0): first defined here
    c:/ti/gcc-arm-none-eabi-7-2018-q2-update/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/bin/ld.exe: error: ./main.o uses VFP register arguments, My_RTOS_TEST.out does not..... etc. .. etc. etc.. 

    But the original problem is resolved.