3.2. Beryllium (v4.X.X) Release Notes

Warning

The Beryllium release defaults to using the hard floating point application binary interface, ABI. Updating to Beryllium will cause a full image rebuild !!!

3.2.1. Impact of using the hard ABI

The Rigado Gateway Vesta release of Beryllium 4.x will default to setting the float-abi option to hard. Prior to Beryllium 4.x the softfp option was used. The softfp or hard value is a compile time option that is set prior to building a Yocto image. These options are defined in the GNU gcc document.

As per the GNU’s gcc document ARM options.

-mfloat-abi=name

Specifies which floating-point ABI to use. Permissible values are: ‘soft’, ‘softfp’ and ‘hard’.

Specifying ‘soft’ causes GCC to generate output containing library calls for floating-point operations. ‘softfp’ allows the generation of code using hardware floating-point instructions, but still uses the soft-float calling conventions. ‘hard’ allows generation of floating-point instructions and uses FPU-specific calling conventions.

The default depends on the specific target configuration. Note that the hard-float and soft-float ABIs are not link-compatible; you must compile your entire program with the same ABI, and link with a compatible set of libraries.

The important thing to note, is that any precompiled binaries built using soft or softfp ABI will no longer work without recompiling them using the float-abi=hard option. Fortunately, the Yocto build system takes care of this for you automatically as it builds the binary files. However, if you have added a precompiled binary to your Yocto build it will need to be recompiled using the float-abi=hard option.

Note

If you have a custom image that does not use precompiled binaries, binaries compiled outside of Yocto, this change will not require any action on your part. If you are using compiled binaries built outside of the Yocto build system, those binaries will need to be recompiled using the float-abi=hard option.

We have chosen to use hard over softfp ABI for the following reasons:
  • Allows the use of Oracle’s Java for embedded devices.
  • Increased performance gain when executing floating point instructions.

3.2.2. Using softfp ABI with Beryllium

The option exist in Beryllium 4.0.0 to switch between using either the hard or softfp ABI option. To use the softfp option with Beryllium 4.x.x, add the following line to your build/conf/local.conf file:

DEFAULTTUNE_mx6ul = “cortexa7t-neon”

Using this variable will cause Yocto to rebuild the source files with the float-abi set to softfp. Also, the Vesta layers provided by Rigado will use the appropriate precompiled binaries that we provide.

Warning

Switching the ABI between hard and softfp will require a full image rebuild.

3.2.3. FLOPS Benchmarks

Linpack is a benchmarking tool that test the number of floating point operations a processor can execute in one second (FLOPS). Below is the linpack benchmark results using the different float-abi options on a Rigado Gateway:

float-abi FLOPS
hard 71.2 Million
softfp 67.2 Million
soft 7.8 Million

Note

It would be extremely unlikely that float-abi would ever be set to soft on a Rigado Gateway.

3.2.3.1. Beryllium v4.0.1

  • Updated u-boot memory calibration for Vesta-400

3.2.3.2. Beryllium v4.0.0

  • Upgraded to Yocto v2.2.3
  • Upgraded to Linux kernel 4.1-2.0.x
  • Upgraded to curl v7.54.1
  • Upgraded to dnsmasq v2.78
  • Upgraded to bluez5 v5.47
  • Upgraded to rigtools v2.5.0
    • Feature - persistent logging for dgua
    • Feature - if send status fails, dgua service will resend message 3 times at 1 minute intervals
    • Feature - acknowledge all pending cancellations when using dgua -u or dgua -q
    • Feature - send os-version, Kernel version and board type to Rigado DeviceOps
    • Bugfix - Keep track of last action id and status until reported successfully
  • Added - Linux kernel driver support for QCA-9377
  • Added - Linux kernel driver support for EC21 cellular modem (USB)
  • Added - device tree overlay for Verizon cellular modem card
  • Added - Linux kernel support for 6LoWPAN and 802.15.4 protocol
  • Added - New Rigado Gateway Vesta-400 board
  • Applied the following security patches to curl:
    • CVE-2017-1000099.patch
    • CVE-2017-1000100.patch
    • CVE-2017-1000101.patch
    • CVE-2017-1000254.patch