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.

AM4377: GNU v9.2.1 toolchain in CCS for AM437x

Part Number: AM4377

We are starting a new RTOS EtherCAT-Slave project on the AM4377 in CCS and would like to use some more recent C++ features than available on the GNU v7.3.1 (Linaro) toolchain. When switching to the GNU v9.2.1 (Linaro) toolchain, everything compiles fine, but we get some linker errors:

c:/ti/ccs1040/ccs/tools/compiler/gcc-arm-none-eabi-9-2019-q4-major/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/bin/ld.exe: error: sqpTestSlave.out uses VFP register arguments, c:/ti/ccs1040/ccs/tools/compiler/gcc-arm-none-eabi-9-2019-q4-major/bin/../lib/gcc/arm-none-eabi/9.2.1\libgcc.a(_udivmoddi4.o) does not

When looking into the CCS-GCC 9.2.1 folders I don't find and "hard" libraries, wheres in the 7.3.1 folders there are some "hard" libraries...

Does the GNU v9.2.1 toolchain not support hard floating point? Or what am I doing wrong?

Thanks a lot for your help,

Bernd

  • I'm pretty sure the correct GCC RTS libraries to link with are in a directory location similar to ...

    C:\ti\ccs1040\ccs\tools\compiler\gcc-arm-none-eabi-9-2019-q4-major\lib\gcc\arm-none-eabi\9.2.1\arm\v5te\hard

    However, I'm unsure of the best way to change your configuration to use that path.  The experts I tried to contact are not currently available.  Unfortunately, it may be a few days before I hear back from them.

    Thanks and regards,

    -George

  • Hello George,

    thanks for your help - I will wait for the experts being available - hope they know a solution...

    Thanks and regards,

    Bernd

  • Hi Bernd,

    As George mentioned, you can use the hard libgcc.a from ccs1040\ccs\tools\compiler\gcc-arm-none-eabi-9-2019-q4-major\lib\gcc\arm-none-eabi\9.2.1\arm\v5te\hard. You can change the CCS project linker setting to add this to the search path. Right click your CCS project and then choose Show Build Settings... Then choose GNU Linker > Libraries. Then add the full path of the hard libgcc.a to Library search path and add libgcc.a to Libraries, as shown below:

    Regards,

    Jianzhong

  • Hello Jianzhong,

    thanks a lot for your help - The linking works fine now.

    Just one question. Since we link the cortex-a9 (v7a-architecture) with the v5te-hard library, doesn't the usage of this v5te-library imply quite some performance degradation?

    Have a nice day, regards,

    Bernd

  • Bernd,

    Can you post a new question regarding this? We can ask the compiler team to help.

    Thanks and regards,

    Jianzhong

  • The solution is to take the thumb/v7+fp/hard library (${CG_TOOL_ROOT}/lib/gcc/arm-none-eabi/9.2.1/thumb/v7+fp/hard) and enable thumb instructions in the compiler (remove -marm add -mthumb). Additionally add -mthumb-interwork) for -marm compatibility.

    Thanks a lot for your help,

    have a nice day,

    Bernd