Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

pkg/gecko_sdk: Bump to version 4.1.2 #18739

Merged
merged 4 commits into from
Oct 15, 2022

Conversation

jue89
Copy link
Contributor

@jue89 jue89 commented Oct 13, 2022

Contribution description

This PR updates the SDK to the latest release.

The update is required to bring back SiLabs' RAIL lib support to RIOT.

Testing procedure

I've run buildtests for all EFM32-based boards that are present in RIOT:

jue@baxxter ~/P/s/RIOT (feature/pkg-gecko_sdk_41)> BOARDS="ikea-tradfri e180-zg120b-tb slstk3400a stk3200 slstk3401a slwstk6220a stk3700 slstk3402a sltb001a stk3600 slstk3400a slwstk6000b-slwrb4150a slwstk6000b-slwrb4162a" make -C examples/default buildtest
make: Entering directory '/home/jue/Projects/ssv/RIOT/examples/default'
Building for ikea-tradfri ... success.
Building for e180-zg120b-tb ... success.
Building for slstk3400a ... success.
Building for stk3200 ... success.
Building for slstk3401a ... success.
Building for slwstk6220a ... success.
Building for stk3700 ... success.
Building for slstk3402a ... success.
Building for sltb001a ... success.
Building for stk3600 ... success.
Building for slstk3400a ... success.
Building for slwstk6000b-slwrb4150a ... success.
Building for slwstk6000b-slwrb4162a ... success.
make: Leaving directory '/home/jue/Projects/ssv/RIOT/examples/default'

Issues/PRs references

none

@jue89 jue89 added Type: enhancement The issue suggests enhanceable parts / The PR enhances parts of the codebase / documentation Area: pkg Area: External package ports CI: ready for build If set, CI server will compile all applications for all available boards for the labeled PR Area: cpu Area: CPU/MCU ports labels Oct 13, 2022
@jue89 jue89 requested a review from basilfx as a code owner October 13, 2022 21:54
@github-actions github-actions bot added the Platform: ARM Platform: This PR/issue effects ARM-based platforms label Oct 13, 2022
@riot-ci
Copy link

riot-ci commented Oct 13, 2022

Murdock results

✔️ PASSED

f3d1773 cpu/efm32/gpio: fix deprecated GPIO_IntConfig() call

Success Failures Total Runtime
1983 0 1983 06m:42s

Artifacts

This only reflects a subset of all builds from https://ci-prod.riot-os.org. Please refer to https://ci.riot-os.org for a complete build for now.

@maribu maribu added CI: ready for build If set, CI server will compile all applications for all available boards for the labeled PR and removed CI: ready for build If set, CI server will compile all applications for all available boards for the labeled PR labels Oct 14, 2022
@jue89 jue89 removed the CI: ready for build If set, CI server will compile all applications for all available boards for the labeled PR label Oct 14, 2022
@benpicco benpicco added CI: ready for build If set, CI server will compile all applications for all available boards for the labeled PR and removed CI: ready for build If set, CI server will compile all applications for all available boards for the labeled PR labels Oct 14, 2022
@github-actions github-actions bot added the Area: Kconfig Area: Kconfig integration label Oct 14, 2022
@jue89
Copy link
Contributor Author

jue89 commented Oct 14, 2022

I noticed Kconfig stuff had to be adjusted. Maybe someone familiar wir Kconfig can have a look? (@MrKevinWeiss? ;-))

I'm unsure if I modeled Kconfig correctly:

  • PACKAGE_GECKO_SDK includes the modules MODULE_GECKO_SDK_EMLIB, MODULE_GECKO_SDK_EMLIB_EXTRA, MODULE_GECKO_SDK_LIBRAIL and MODULE_GECKO_SDK_LIBRAIL_PA
  • MODULE_GECKO_SDK_EMLIB, MODULE_GECKO_SDK_EMLIB_EXTRA have to pulled in if an EFM32 MCU is used. So there is no reason to pull in PACKAGE_GECKO_SDK without both modules. (Currently it just sets default y)
  • MODULE_GECKO_SDK_LIBRAIL and MODULE_GECKO_SDK_LIBRAIL_PA are optional and can be required individually.

@jue89
Copy link
Contributor Author

jue89 commented Oct 14, 2022

And another Kconfig problem: gecko_sdk_librail is shipped with compiled blobs. For some EFR32 MCUs they are compiled with soft-float even though the MCU has an FPU inside! Thus, I had to opt-out the module cortexm_fpu. This works perfectly with the Makefile-based dependency resolution. But how do I model this using the Kconfig system?

The module is modeled like this:

config MODULE_CORTEXM_FPU
    bool "Cortex-M Floating Point Unit (FPU) support"
    default y
    depends on HAS_CORTEXM_FPU

@jue89
Copy link
Contributor Author

jue89 commented Oct 15, 2022

After sleeping over this problem, I tried to model this FPU vs. non-FPU librail as features.

(TBH: This was advertisement for the Kconfig system. This was easy to model compared to the Makefile-based approach ...)

@jue89 jue89 added the CI: ready for build If set, CI server will compile all applications for all available boards for the labeled PR label Oct 15, 2022
@jue89 jue89 force-pushed the feature/pkg-gecko_sdk_41 branch from 9b45279 to f3d1773 Compare October 15, 2022 13:43
Copy link
Member

@maribu maribu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me.

I think that the non-FPU version of librail should run without any issues even with an FPU. Maybe it is only the wording that needs updating (e.g. something along the lines "Yes, you could use the non-FPU version, but since you have an FPU you really do not want to bloat up your firmware with a soft-FPU implementation. So go use the FPU version instead!")?

@@ -22,6 +25,9 @@ FEATURES_PROVIDED += periph_wdt
FEATURES_CONFLICT += periph_rtc:periph_rtt
FEATURES_CONFLICT_MSG += "On the EFM32, the RTC and RTT map to the same hardware peripheral."

FEATURES_CONFLICT += cortexm_fpu:gecko_sdk_librail_nonfpu
FEATURES_CONFLICT_MSG += "Using librail with the FPU enabled is not supported on this CPU."
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's surprising to me. It is obvious that a library that expects a FPU won't function without it, but a lib not expecting an FPU could just not use it, even if it is present.

Copy link
Contributor Author

@jue89 jue89 Oct 15, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well, I can't link if cortexm_fpu is enabled. I really don't know if any floats are used in that blob, but the .ASM.attributes section in the object indicates that it has been built with soft floats and, thus, the linker complains about that. That's at least what I'm observing here.

Copy link
Contributor Author

@jue89 jue89 Oct 15, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Those are the linker errors if I'm building `ikea-tradfri` with `gecko_sdk_librail` and `cortexm_fpu`
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: error: /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/default.elf uses VFP register arguments, /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rail_tx.o) does not
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rail_tx.o)
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: error: /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/default.elf uses VFP register arguments, /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rail_features.o) does not
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rail_features.o)
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: error: /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/default.elf uses VFP register arguments, /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(pa_auto_mode.o) does not
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(pa_auto_mode.o)
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: error: /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/default.elf uses VFP register arguments, /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rail_ble.o) does not
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rail_ble.o)
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: error: /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/default.elf uses VFP register arguments, /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rail_power_manager.o) does not
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rail_power_manager.o)
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: error: /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/default.elf uses VFP register arguments, /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rfhal_features.o) does not
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rfhal_features.o)
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: error: /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/default.elf uses VFP register arguments, /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rfhal_module.o) does not
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rfhal_module.o)
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: error: /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/default.elf uses VFP register arguments, /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rfhal_pa.o) does not
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rfhal_pa.o)
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: error: /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/default.elf uses VFP register arguments, /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rfhal_radio.o) does not
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rfhal_radio.o)
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: error: /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/default.elf uses VFP register arguments, /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rfhal_synth.o) does not
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rfhal_synth.o)
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: error: /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/default.elf uses VFP register arguments, /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(seq_globals.o) does not
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(seq_globals.o)
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: error: /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/default.elf uses VFP register arguments, /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rail_rf_hal.o) does not
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rail_rf_hal.o)
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: error: /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/default.elf uses VFP register arguments, /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rail_ieee802154_rf_hal.o) does not
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rail_ieee802154_rf_hal.o)
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: error: /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/default.elf uses VFP register arguments, /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rail_ble_rf_hal.o) does not
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rail_ble_rf_hal.o)
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: error: /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/default.elf uses VFP register arguments, /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(generic_efr32xg1_seq.o) does not
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(generic_efr32xg1_seq.o)
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: error: /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/default.elf uses VFP register arguments, /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rail_singleprotocol.o) does not
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rail_singleprotocol.o)
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: error: /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/default.elf uses VFP register arguments, /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rail_rf.o) does not
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rail_rf.o)
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: error: /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/default.elf uses VFP register arguments, /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rail_rx.o) does not
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rail_rx.o)
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: error: /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/default.elf uses VFP register arguments, /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rail_calibration.o) does not
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rail_calibration.o)
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: error: /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/default.elf uses VFP register arguments, /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rail_data.o) does not
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rail_data.o)
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: error: /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/default.elf uses VFP register arguments, /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rail_assert.o) does not
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rail_assert.o)
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: error: /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/default.elf uses VFP register arguments, /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rail_timer.o) does not
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rail_timer.o)
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: error: /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/default.elf uses VFP register arguments, /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(tmrdrv.o) does not
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(tmrdrv.o)
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: error: /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/default.elf uses VFP register arguments, /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(tmrdrv_config.o) does not
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(tmrdrv_config.o)
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: error: /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/default.elf uses VFP register arguments, /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rfhal_bufc.o) does not
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rfhal_bufc.o)
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: error: /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/default.elf uses VFP register arguments, /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rfhal_ircal.o) does not
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rfhal_ircal.o)
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: error: /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/default.elf uses VFP register arguments, /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rfhal_protimer.o) does not
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rfhal_protimer.o)
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: error: /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/default.elf uses VFP register arguments, /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rfhal_pti.o) does not
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rfhal_pti.o)
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: error: /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/default.elf uses VFP register arguments, /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rfhal_antenna.o) does not
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rfhal_antenna.o)
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: error: /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/default.elf uses VFP register arguments, /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rfhal_rftest.o) does not
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rfhal_rftest.o)
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: error: /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/default.elf uses VFP register arguments, /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rfhal_rfsense.o) does not
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rfhal_rfsense.o)
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: error: /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/default.elf uses VFP register arguments, /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rfhal_rtccsync.o) does not
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rfhal_rtccsync.o)
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: error: /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/default.elf uses VFP register arguments, /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rfhal_rtccsync_shared.o) does not
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rfhal_rtccsync_shared.o)
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: error: /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/default.elf uses VFP register arguments, /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rfhal_standard_phys.o) does not
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rfhal_standard_phys.o)
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: error: /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/default.elf uses VFP register arguments, /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rfhal_tempcal.o) does not
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rfhal_tempcal.o)
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: error: /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/default.elf uses VFP register arguments, /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rfhal_timings.o) does not
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rfhal_timings.o)
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: error: /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/default.elf uses VFP register arguments, /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rfhal_rand.o) does not
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rfhal_rand.o)
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: error: /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/default.elf uses VFP register arguments, /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(generic_phy.o) does not
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(generic_phy.o)
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: error: /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/default.elf uses VFP register arguments, /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(cortex_utils.o) does not
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(cortex_utils.o)
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: error: /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/default.elf uses VFP register arguments, /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rail_mfm_rf_hal.o) does not
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rail_mfm_rf_hal.o)
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: error: /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/default.elf uses VFP register arguments, /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(ieee802154_efr32xg1_configurator_out.o) does not
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(ieee802154_efr32xg1_configurator_out.o)
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: error: /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/default.elf uses VFP register arguments, /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(ble_efr32xg1_configurator_out.o) does not
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(ble_efr32xg1_configurator_out.o)
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: error: /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/default.elf uses VFP register arguments, /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rfsense_ook_efr32xg1_configurator_out.o) does not
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rfsense_ook_efr32xg1_configurator_out.o)
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: error: /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/default.elf uses VFP register arguments, /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rfhal_auxpll.o) does not
/usr/lib/gcc/arm-none-eabi/12.1.0/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /home/jue/Projects/ssv/RIOT/examples/default/bin/ikea-tradfri/gecko_sdk_librail.a(rfhal_auxpll.o)
collect2: error: ld returned 1 exit status

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK, sounds like the calling convention is different when not using an FPU. Likely only for passing floats, but since librail actually does use floats this could indeed be a real issue.

I really should read the calling convention specs at some point in time to not be surprised by these things.

Comment on lines +20 to +22
Indicates that the CPU offers librail support if the FPU is enabled.
Librail is shipped as pre-compiled blobs. Thus, we have to adapt to
their choice how to process floats.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So RAIL is the radio HAL, right? They use floats in their radio driver?!?

wtf

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've seen many surprising design choices made by Silabs ... but yes, I wouldn't expect a radio HAL using floats, as well :D But I can't tell - that's the problem with those vendor-specific blobs. Actually, I spent way too long with the integration because of those black boxes. And they weren't willing to let me look inside even after dozes of exchanged emails :/

@maribu maribu enabled auto-merge October 15, 2022 16:11
@maribu maribu merged commit c58817f into RIOT-OS:master Oct 15, 2022
@jue89 jue89 deleted the feature/pkg-gecko_sdk_41 branch October 15, 2022 18:59
@jue89
Copy link
Contributor Author

jue89 commented Oct 15, 2022

Thank you a lot :-)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Area: cpu Area: CPU/MCU ports Area: Kconfig Area: Kconfig integration Area: pkg Area: External package ports CI: ready for build If set, CI server will compile all applications for all available boards for the labeled PR Platform: ARM Platform: This PR/issue effects ARM-based platforms Type: enhancement The issue suggests enhanceable parts / The PR enhances parts of the codebase / documentation
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants