imx6q - hard-float or soft-float

cancel
Showing results for 
Search instead for 
Did you mean: 

imx6q - hard-float or soft-float

7,299 Views
EinarMar
Contributor IV

Hi guys

I'm starting kernel compilation and other things for i.MX6Q and I am wondering if I should be compiling for hard float or soft float, i.e.  should I be compiling with the arm-linux-gnueabihf- or arm-linux-gnueabi- compiler ?

Kind regards

Einar M. Bjorgvinsson

Embedded Software Engineer

Marel ehf

Iceland

Labels (3)
10 Replies

969 Views
EdWhite
NXP Employee
NXP Employee

If Freescale was going to offer "hardFP" version of the GPU library, it must consider the windowing system.  Is it acceptable if it only supports FBdev and DirectFB?  Is anyone using X11 or Wayland?

0 Kudos

969 Views
alisonchaiken_m
Contributor III

We are using both X11 and Wayland.

0 Kudos

969 Views
Yuri
NXP TechSupport
NXP TechSupport

Please use the arm-linux-gnueabi- compiler.

0 Kudos

969 Views
mcfrisk
Contributor I

Linux kernel does not use floating points, or if some drivers do then that's a grave bug, so hard vs. soft float only matters for user space. Debian wheezy/unstable have both so rootfs images for testing can easily be generated with debootstrap. The only remaining problem is the userspace binaries for Vivante GPU and possibly other blobs as well.

0 Kudos

969 Views
EinarMar
Contributor IV

Hi Yuri, thank you for your response.

Could maybe explain for me why I should not use the hard float compiler, i.e. arm-linux-gnueabihf- compiler.

I assumed you used such compiler for a hardware with hard float support.

regards

Einar

0 Kudos

969 Views
Yuri
NXP TechSupport
NXP TechSupport

Applications, which are built under “hardfp” option, cannot work under Linux, that was

compiled under “softfp” – because different ABI conventions; function parameters transfer

are different : the soft float conventions assume passing floats through general purpose

(integer) registers, but “hardfp” uses the floating point register.

 

   Ubuntu 12.04 for ARM has hard floating support, but we do not have  Ubuntu 12.04 rootfs yet.

But, basically it is possible to rebuild "all the apps and everything around Linux to use hard float" :

https://community.freescale.com/docs/DOC-1628

969 Views
OtavioSalvador
Senior Contributor II

Yuri

In Yocto it'd be very easy to rebuild everything to use hard-float however I am wondering if the GPU and codecs will work in this case. I think Freescale supports only softfp.

Can you correct me if I am wrong?

0 Kudos

969 Views
EricNelson
Senior Contributor II

You're right Otavio.

The closed-source libraries won't run with a hard-float userspace, so both the GPU and gstreamer plugins are essentially unavailable.

We've had multiple queries about that for those using Linaro builds.

969 Views
OtavioSalvador
Senior Contributor II

EricNelson, thanks by let me know.

When I was preparing the first machines for Yocto I checked and didn't find a hardfp set of binaries so I went with softfp. It'd be good if Freescale could make it available so we could use full SoC power :smileyhappy:

0 Kudos

969 Views
EinarMar
Contributor IV

Hi Yuri

Thanks a lot for this explanation.

We are working on extending our board image support to i.MX6q to be used in future machines at Marel. For the last 5 years we have been focusing on Powerpc and i386 but now we want to join the ARM wagon :smileyhappy:

We have maintained the board image ourselves, i.e. Uboot, kernel, rootfs and 3rd party components so I think the best cause of action now is to compile this for ARM with hard float support.

Regards

Einar

0 Kudos