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.

OpenMAX with gcc



Hi,

For a project I'm working on I need to use some fast FIR, and OpenMAX implements it. But I am using the gcc toolchain (CodeSourcery). 

Has anyone managed to compile OpenMAX with gcc? Is there any gcc-compatible version?

With gcc compatible I mean NEON assembler optimized, as I need it to be fast.

If I use armcc evaluation to compile it, can it be used later from gcc?

Thanks

 

  • Hi David,

    We've looked at this issue maybe a year ago.  We found that you can not compile the NEON assembly based Openmax using gcc.  Since ARM uses a different syntax for their assembly file format, it is not compatible. However we were able to compile the libraries using armcc.

    We used an app note from ARM #178 - Building Linux Applications Using RVDS 3.1 and the GNU Tools and Libraries.

     

    This is what we did after reading through App Note #178.

     

    Running under Linux

    Once you have downloaded the OpenMAX libs developed by ARM, you can edit the PERL build scripts and build the libraries.

    Just replace the CC_OPTS as shown below:

    $CC_OPTS  = '--no_unaligned_access --cpu Cortex-A8 -c';
    

    With these CC_OPTS:

    $CC_OPTS  = '--no_unaligned_access --dwarf2 --debug --asm --interleave --gnu --signed_bitfields 
    --no_hide_all --library_interface=aeabi_glibc --cpu=Cortex-A8 --fpu=SoftVFP+VFPv3 -Otime --vectorize 
    --enum_is_int --wchar32 --remarks --asm -O3 -c';
    
    
    
    Also to get NEON to work as efficiently as possible, you may want to align data buffers to 32 byte boundaries.
    
    

     

  • Hi,

    I tried this when building openMax using armcc in DS-5. When I tried to link with GCC code, I got a lot of this

    /usr/local/DS-5/sw/gcc/bin/../lib/gcc/arm-none-linux-gnueabi/4.5.1/../../../../arm-none-linux-gnueabi/bin/ld: error: /mnt/hgfs/F/home/openmax/OX002-BU-00010-r2p0-00rel0/lib/libomxSP.a(omxSP_FFTFwd_CToC_SC16_Sfs_s.o) uses VFP register arguments, ds5-gcc-test does not

    Any idea?

    Thanks

     

  • Hi,

    The VFP issue has been solved, and now getting errors of Object has vendor-specific contents that must be processed by the 'ARM' toolchain like this

    /usr/local/DS-5/sw/gcc/bin/../lib/gcc/arm-none-linux-gnueabi/4.5.1/../../../../arm-none-linux-gnueabi/bin/ld:
     error: 
    /mnt/hgfs/F/home/openmax/OX002-BU-00010-r2p0-00rel0/lib/libomxSP.a(omxSP_FFTFwd_CToC_SC16_Sfs_s.o):
     Object has vendor-specific contents that must be processed by the 'ARM'
     toolchain /usr/local/DS-5/sw/gcc/bin/../lib/gcc/arm-none-linux-gnueabi/4.5.1/../../../../arm-none-linux-gnueabi/bin/ld:
     failed to merge target specific data of file 
    /mnt/hgfs/F/home/openmax/OX002-BU-00010-r2p0-00rel0/lib/libomxSP.a(omxSP_FFTFwd_CToC_SC16_Sfs_s.o)


    Any idea how I could solve this?

    Thanks