cancel
Showing results for 
Search instead for 
Did you mean: 

How to use two libraries with different floating-point ABI in the same project ? (STM32F469I-DISCO )

Racoon
Associate

Hi,

My board is a STM32F469I-DISCO, which has a FPU (FPv4-SP-D16), and the IDE I am using is STM32CubeIDE 1.0.2. I would like to use libraries (.a files) with different floating-point ABI in the same project.

I downloaded STM32Cube Expansion Package X-CUBE-AUDIO V1.1.1 from the ST website and I flashed two projects to my board that work fine.

One is MP3-STM32F469I-DISCO and the other one is BIQ-STM32F469I-DISCO. By default, I saw in "Properties > C/C++ build > Settings > Tool Settings > MCU Settings" that the first one has 'Mix HW/SW Implementation' (-mfloat-abi=softfp) as floating-point ABI and the second one has 'Hardware implementation' (-mfloat-abi=hard) as floating-point ABI. 

I want to 'merge' these two projects so I need to use libraries from both projects. The only library I need from the second project is 'BIQ_CM4_GCC.a'  and, among others, I need 'lib_mp3encoder_cortex_m4_v2.2.0.a' from the first one.

When I try to compile a project that uses libraries from projects with different floating-point ABI, I get this error from the compiler:  "...Uses VFP register arguments, XXX does not". 

Also, I tried to compile with different floating-point ABI (Mix HW/SW Implementation, Hardware Implementation, Software implementation) and I got the same error.

In the package, there is a 32-bit version of the 'BIQ_CM4_GCC.a' which is 'BIQ_32b_CM4_GCC.a' but I still get the same error when trying to use this one. 

 

How could I fix that ?

 

1 REPLY 1
AScha.3
Chief III

Hi,

afaik only way : to use all pre-compiled libraries with same settings (hard- or software FP ) .

Or find the lib as source, then can compile with your settings matching the other.

If you feel a post has answered your question, please click "Accept as Solution".