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.

Rebuilding of library-files for VFP Support

Hello,


currently i am trying to activate VFP-Core to speed calculations up.

Modifications at init.asm are done, the runtime support library was selected.

But: Compiling the project results in

<Linking>
fatal error #16016

because the libraries are not compiled with VFP-support.

My question is: How can I recompile the libraries (drivers.lib, system.lib, platform.lib, utils.lib) from StarterWare?

If I remember correctly, this libraries were compiled at first start of Code Composer Studio. (this took a few minutes)

But i don´t know how to restart this process. I would be very grateful for a simple solution.

Thanks all,

Martin

  • Hi Martin, 

    I hope you are using CCS only. If I understood correctly, you are looking for the steps to import, change some settings optionally and build CCS projects. Kindly refer to the below link for details.

    http://processors.wiki.ti.com/index.php/AM335X_StarterWare_Environment_Setup#TMS470_from_CCS_project

    Regards,

    Sujith.

  • Thank you very much,

    the site gave me the right hints.

    My mistakes:

    • I was not aware that there are already the projects for "drivers.lib", "system.lib", "utils.lib" and "platform.lib" already available.

    But there are some additional obstacles:

    • The runtime support library "rtsv7A8_A_le_v3_eabi.lib" (mentioned @ "CortexA_w_Starterware.pdf") was not available for selection, therefore I used  "rtsv7A8_A_le_n_v3_eabi.lib" (not knowing the differences, "rtsv7A8_T_le_n_v3_eabi.lib" also sounds reasonable).
    • I´m using CCS for programming a BeagleBone, but platform.lib is of cause three times available. CCS only showed me the version for evmskAM335x when scanning the complete tree in build-folder. Using the right one solves the problem.
    • Further I added "init.asm" for altering to my main workspace. Very bad idea. The file will be compiled and somehow the linker cannot resolve following like intended:

    SECTIONS
    {
        .init    : {
                     system.lib<init.obj> (.text)
                   } load > 0x80000000

    ...

    The Linker can not place "system.lib" and the resulting binary is generated, but way to small. Removing "init.asm" from Workspace solved the problem for me. (#10068-D: no matching section)

    So some benchmark results for multiplications in exchange:

    • 100000000 integer based multiplications done in 2984 ms. ~30 ns per multiplication.
    • 100000000 float based multiplications without VFP Core done in 19600 ms. ~200 ns per multiplication.
    • 100000000 float based multiplications with VFP Core done in 11500 ms. ~115 ns per multiplication.

    Optimization level 2 for libraries and main-program. No optimization for speed.

    The timings are slower than possible because a control-loop with an interrupt frequency of 50 kHz and an interrupting µs-timer are executet in parallel.

    So far, only the NEON core is missing for my benchmarking.

    Is it possible to use NEON Core with StarterWare? If yes, which configurations are needed?

    sincerly yours,

    Martin

  • Hi Martin, 

    Appreciate you for sharing the information. 

    But in starterware, we never tried enabling Neon code generation. So I think you can explore the CCS project settings for the same.

    I see a checkbox in  CCS project settings @ project Properties->CCS Build->TMS470 Compiler->Runtime Model Options-> Generate SIMD Instructions targeting Neon.

    I hope this is enough apart from the enabling of Neon you might have done in your init.asm file.

    If you succeed, you can probably share that information too.

    Cheers,

    Sujith.

  • Hi Sujith,

    in my CCS, th checkbox is located at: project Properties->Build->ARM Compiler->Advanced Options->Runtime Model Options (slightly different to your path, why ever.)

    The generation of SIMD instructions and the enabling in init.asm is not enough.No speed up is observed.

    @ "project Properties-> Build->ARM Compiler->Processor Options->Specify floating point support (--float_support)": there should be an option for Neon core, but only VFPv2, VFPv3, VFPv3D16, vfplib, fpalib and FPv4SPD16 are available.

    Corresponding to "://processors.wiki.ti.com/index.php/Cortex-A8#Neon_and_VFP_both_support_floating_point.2C_which_should_I_use.3F", the compiler needs to know "--mfpu=neon". There CodeSourcery: GCC: (CodeSourcery Sourcery G++ Lite 2007q3-51) 4.2.1 is used.

    At "CCS only" i see no Option to tell the compiler to use Neon. Even if I could modify the parameter "--float_support=VFPv3" by hand, I wouldn´t know what string to hand over.

    Additional I don´t know if @ "project properties->General->Advanced settings->Runtime support library" the library "rtsv7A8_A_le_n_v3_eabi.lib" is the correct one.

    If I´m able to activate Neon with StarterWare later, I will let you know.

    Greetings,

    Martin