jgaeddert / liquid-dsp

digital signal processing library for software-defined radios
http://liquidsdr.org
MIT License
1.82k stars 426 forks source link

Problems on ARM Cortex-A9 #160

Open beardedN5rd opened 5 years ago

beardedN5rd commented 5 years ago

Hi Joseph, I am trying to do some rds decoding using https://github.com/windytan/redsea and only get a subset of the messages. Digging deeper I noticed that liquid-dsp have some issues in its checks. I added autotest.json below. autotest.json.txt

Initially with the auto generated build options (CONFIG_CFLAGS = -g -O2 -ffast-math -mcpu=cortex-a7 -mfloat-abi=hard -mfpu=neon-vfpv4) it failed to run due to illegal arguments. With corrected options (CONFIG_CFLAGS = -g -O2 -ffast-math -mcpu=cortex-a9 -mfloat-abi=hard -mfpu=neon) it works partly. Most tests run positively, some rds messages get decoded.

My environment is mostly fixed and can not be updated essentially:

Any idea how I can get it work? Do you need some further information?

Hagen

beardedN5rd commented 5 years ago

Hi Joseph, maybe it is an issue with NEON on ARMv7-A architecture, like stated in the gcc options

If the selected floating-point hardware includes the NEON extension (e.g. -mfpu=‘neon’), note that floating-point operations are not generated by GCC's auto-vectorization pass unless -funsafe-math-optimizations is also specified. This is because NEON hardware does not fully implement the IEEE 754 standard for floating-point arithmetic (in particular denormal values are treated as zero), so the use of NEON instructions may lead to a loss of precision.

In the meanwhile I tried to use softfp, but got errors as well. autotest.softfp.json.txt

jgaeddert commented 5 years ago

I'd be interested in seeing why those particular (fm demod) tests fail and what the issues are there.

beardedN5rd commented 5 years ago

Can I provide any data to clarify?

I am not sure if running the check routine on an Raspberry 2 should result in similar issues, maybe this could be an approach to identify if it is problem that may occur on all ARMv7-A based processors or if it is only a problem on Cortex-A9/ Tegra T30

jgaeddert commented 5 years ago

I was actually going to suggest that! Any samples you could send me would help immensely!