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.

Compiler/TMS320F28075: Error when changing compiler version in SYS/BIOS project

Part Number: TMS320F28075


Tool/software: TI C/C++ Compiler

Hi,

yesterday I've posted this issue

e2e.ti.com/.../637825

on TI-RTOS forum.

Mr Cheng Jiang ti has replied that the thread has been moved to TI Compiler forum but I haven't found it. Also I cannot reply to the old post (why the Reply button does not work?!) so I've created this one to add some new informations.

I apologize if I've created a duplicated thread.

Looking for a solution to my issue I've found some threads that discuss similar issues.

For example:

1) e2e.ti.com/.../1534120

2) e2e.ti.com/.../412149

The "Target" option in my project is currently "devkits.target.Generic".

Therefore, following the hints of those threads, I've tried to change "Target" option:

1) ti.targets.C28_large: it doesn't work because I get a bunch of compilation errors;

2) ti.targets.C28_float: I get no compilation error and if I run my code it seems to work properly (both with version 6.4.12 and 15.12.6.LTS).

So I presume the second workaround fix my bug.

Is this workaround correct?

While the first workaround doesn't work?

What's the difference between devkits.target.Generic, ti.targets.C28_large and ti.targets.C28_float?

Why does 6.4.11 compiler version work properly with devkits.target.Generic option while 6.4.12 compiler doesn't.?

Thank you.

Best regards,

Demis

  • Demis,
    the target devkits.target.Generic was never supposed to be used as a default target for project builds. It was a bug that was fixed in the newer XDCtools releases. The difference between ti.targets.C28_large and ti.target.C28_float is that the first one is used for devices without a floating point unit, while the second one is used for the devices with a floating point unit.
    Your device has a floating point unit, which means that you should use ti.targets.C28_float. In the newer versions of XDCtools and SYS/BIOS, where that bug was fixed, the right target is used by default so you don't need to type anything in.

    When you choose ti.targets.C28_large for your device, it will instruct the compiler to build XDCtools generated files for C2800 ISA, which means no floating point support. However, the linker will recognize your device as one with the floating point support and it will try to link C2800 object files with the libraries built for C28FPU32 ISA, and the link step will fail because of that incompatibility.
  • Hi Sasha,

    Sasha Slijepcevic said:
    Demis,
    the target devkits.target.Generic was never supposed to be used as a default target for project builds. It was a bug that was fixed in the newer XDCtools releases. The difference between ti.targets.C28_large and ti.target.C28_float is that the first one is used for devices without a floating point unit, while the second one is used for the devices with a floating point unit.
    Your device has a floating point unit, which means that you should use ti.targets.C28_float. In the newer versions of XDCtools and SYS/BIOS, where that bug was fixed, the right target is used by default so you don't need to type anything in.

    Ok, thank you.

    So you confirm my workaround is correct, right?

    A couple of questions:

    1) what are the newer versions of XDCTools and SYS/BIOS that fixed this bug?

    2) If it is a bug, why can I compile and link my project with compiler version 6.4.11 without getting any error?

    Thank you.

    Regards,

    Demis

  • Yes, your workaround is correct.
    It will take me some time to find out where the devkits target came from, I am looking into it now.

    As for changing the compiler and have a project build, I would have to see the complete output of such a build. It would mean that the target devkits.target.Generic was found successfully and I would want to see that. That would help me debug the problem.
  • Hi Sasha,
    thank you.

    Unfortunately if I replace "ti.targets.C28_float" option with "devkits.target.Generic" I cannot build my project succesfully any more, because I always get the error "Can't find the target named 'devkits.target.Generic' along the path etc.". I don't know why.

    I'm so sorry that I can not help you.

    Regards,

    Demis