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.

Linking error while implementing VFP through MATLAB TargetLink software

Other Parts Discussed in Thread: HALCOGEN

Hi,

I am using TMDX570LS20SUSB controller. I am trying to implement VFP. While compiling through TargetLink software in MATLAB,

1. enabled all the co-processor CP10 and CP11

2. included the compiler --float_support option as VFPv3D16.

But while linking got the error as,

<Linking>
fatal error: file ".\\TLSim\\pipt1\\TMDX570LS20SUSB_TI42\\sys_intvecs.obj" was built without VFP coprocessor support while a previously seen file was combining incompatible files.

I don't know how to resolve this problem. Is there any suggestions or idea please let me know.

 

One more doubt, Where i can find the predefined macros names for ARM such as, _ _TI_VFPV3D16_SUPPORT_ _, _ _TI_VFPLIB_SUPPORT_ _, etc... because these macro names are mentioned in SPNU151F.pdf or ARM Optimizing C/C++ Compiler v4.7.pdf file.

 

Thanks and Regards

Gowdham Natarajan

  • Hi,

    I tried to replicate the issue you are seeing but couldn't. As such the sys_intvecs.asm that HALCoGen creates doesn't have anything specific to VFP in it. Having compiled it with VFP enabled and disabled, I get the same listing.

    Here are a few questions I have:

    Are you compiling and linking the whole project at once with all source files (.c and .asm)?

    I am not quite sure what you mean with "1. enabled all the co-processor CP10 and CP11". Where did you do this?

    What CCS and compiler versions are you using?


    Regards,

    Abhishek


  • Dear Abhishek,

    Compiling through CCS working fine. But i am trying to compile using dSPACE-TargetLink tool which is integrated with MATLAB. We have to take some sample models from targetlink demos directory and then do the compiling process. If you are familiar with TargetLink tool then you can easily understand this issue.

    For VFP support, co-processor registers (CP10 and CP11) are need to be set as 1. That's what i mentioned in that post. Enabling of these co-processor registers are handled in _coreEnableVfp_() in sys_startup.c file itself.

    void _c_int00()
    {
       
        /* Enable VFP Unit */
    #if (__TI_VFPV3D16_SUPPORT__ == 1)
        _coreEnableVfp_();
    #endif

     

    One more doubt, Where i can find the predefined macros names for ARM such as, _ _TI_VFPV3D16_SUPPORT_ _, _ _TI_VFPLIB_SUPPORT_ _, etc... because these macro names are mentioned in SPNU151F.pdf or ARM Optimizing C/C++ Compiler v4.7.pdf file.

     

    Thanks and Regards

    Gowdham Natarajan

  • Hi,

    I found the problem which i am facing now is due to the assembler files using in my compilation.

    In make file, under compiler options, i gave --float_support=VFPv3D16, through this the instructions i used inside the *.c files are compiled with floating point support.

    But, with the same option i tried inside Assembler options, i got the error message. I don't know what's the option i need to give for assembler to compile with floating point support.

    I am using cl470.exe for compiler, assembler as well as linker.

    Please if you have any idea or suggestions about this, please let me know.

    Note: It is compiling through CCS compiler.

     

    Thanks and Regards

    Gowdham Natarajan

  • Dear all,

    I found the option to run the code successfully. The option is to tell the assembler with the following options to compile with floating point support.

    For CORTEX-R4 processor,

                 -mv7r4            \
                 --float_support=VFPv3D16

     

    Thanks and Regards

    Gowdham Natarajan

  • Gowdham,

    Glad to hear you found the issue and thanks for sharing the solution in the forum.

    Regards,

    Abhishek