Hardware floating point support for iMX6

From RidgeRun Developer Wiki
Revision as of 18:14, 12 February 2017 by Spalli (talk | contribs)

The hardware floating point (hardfp) use an on-chip floating point unit to perform mathematics on floating point numbers, while software floating point (softfp) emulates one of these units in software. This is the reason why hardfp is faster than softfp. The name of this unit is FPU (floating point unit), which is a piece of hardware that can take floating point values and an operator and return a value. This hardware is optimized to just do floating point math so it performs much better than doing the operations in software. RidgeRun has its own hardware floating point linaro toolchain version.

We are using the following linaro toolchain and kernel versions for the iMX6 with hardware floating point:

  • Toolchain:
gcc-linaro-arm-unknown-linux-gnueabihf-4.8.2-2013.07
  • Kernel:
boundary-imx_3.0.35_4.0.0


Configuring your SDK with hardware floating point support

To configure your SDK with hardfp support, you have to follow the next steps:

1. If linaro is not your default toolchain, run make coreconfig and select linaro.

/ # make coreconfig
    Selecting toolchain:
    1. arm-eabi-glibc-codesourcery-2011.09
    2. linaro
    3. arm-eabi-glibc-codesourcery-2009q1-203
  Which? 2

2. Select hardware floating point.

 
/ # make config 
    --> Toolchain Configurations
        --> Floating point support
            -Hardware floating point

3. The default hardfp toolchain binaries path:

/opt/linaro/gcc-linaro-arm-unknown-linux-gnueabihf-4.8.2-2013.07

If you have the toolchain in a different path, change it.

Now, your toolchain is configured to use the hardware floating point support.

As RidgeRun has its own hardware floating point Linaro toolchain, the SDK will download and install it.

What is supported?

At this moment, RidgeRun is able to build all the iMX6 SDK without errors and currently supports video and audio.

Known issues