Compiling GNURadio on BananaPI


Discuss-gnuradio mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

I must correct a detail. The datasheet tells me that bananapi has a
Cortex-A7.

cat /proc/cpuinfo:

Processor : ARMv7 Processor rev 4 (v7l)
processor : 0
BogoMIPS : 1431.55

processor : 1
BogoMIPS : 1436.46

Features : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4
idiva idivt
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xc07
CPU revision : 4

Hardware : sun7i
Revision : 0000
Serial : 0481019f5254484880485783165166d2

On Fri, Jan 9, 2015 at 1:37 PM, Andreas L.
[email protected] wrote:

BogoMIPS : 1436.46
Revision : 0000
source. The message is gone.
[ 2%] Building ASM object

volk/lib/CMakeFiles/volk.dir/__/kernels/volk/asm/neon/volk_32fc_32f_dot_prod_32fc_a_neonasmvmla.s.o

failed

[volk/lib/CMakeFiles/volk.dir/__/kernels/volk/asm/neon/volk_32f_x2_dot_prod_32f_neonasm_opts.s.o]

cheers,
Andreas

I don’t know that it’s a definite fix for this, but I was going to
suggest making sure the tune settings fit your processor. If that’s
not the case we can look around for a suitable change. Keep us
updated.

Nathan

processor : 1
Hardware : sun7i
cmake is below 2.8.10. So i compiled and installed the last cmake 3.1 from

volk/lib/CMakeFiles/volk.dir/__/kernels/volk/asm/neon/volk_32fc_x2_dot_prod_32fc_neonasm_opttests.s.o

[ 2%] Building ASM object

‘volk/lib/CMakeFiles/volk.dir/__/kernels/volk/asm/neon/volk_32f_x2_dot_prod_32f_neonasm_opts.s.o’

The result is:
make[2]: ***
Any ideas ?

cheers,
Andreas

I don’t know that it’s a definite fix for this, but I was going to
suggest making sure the tune settings fit your processor. If that’s
not the case we can look around for a suitable change. Keep us
updated.

Nathan

Hi Nathan,

cmake …/ -DCMAKE_C_FLAGS="-march=armv7 -mthumb-interwork
-mfloat-abi=hard -mfpu=neon -mtune=cortex-a7"
-DCMAKE_ASM_FLAGS="-march=armv7 -mthumb-interwork -mfloat-abi=hard
-mfpu=neon

results in the message:

Scanning dependencies of target volk
[ 2%] Building ASM object
volk/lib/CMakeFiles/volk.dir//kernels/volk/asm/neon/volk_32fc_32f_dot_prod_32fc_a_neonasmpipeline.s.o
[ 2%] Building ASM object
volk/lib/CMakeFiles/volk.dir/
/kernels/volk/asm/neon/volk_32fc_x2_dot_prod_32fc_neonasm.s.o
[ 2%] Building ASM object
volk/lib/CMakeFiles/volk.dir//kernels/volk/asm/neon/volk_32fc_x2_dot_prod_32fc_neonasm_opttests.s.o
[ 2%] Building ASM object
volk/lib/CMakeFiles/volk.dir/
/kernels/volk/asm/neon/volk_32fc_32f_dot_prod_32fc_a_neonasm.s.o
[ 2%] Building ASM object
volk/lib/CMakeFiles/volk.dir//kernels/volk/asm/neon/volk_32f_s32f_multiply_32f_neonasm.s.o
[ 2%] Building ASM object
volk/lib/CMakeFiles/volk.dir/
/kernels/volk/asm/neon/volk_32fc_32f_dot_prod_32fc_unrollasm.s.o
[ 2%] Building ASM object
volk/lib/CMakeFiles/volk.dir//kernels/volk/asm/neon/volk_16i_max_star_horizontal_16i.s.o
[ 2%] Building ASM object
volk/lib/CMakeFiles/volk.dir/
/kernels/volk/asm/neon/volk_32f_x2_add_32f_a_neonasm.s.o
[ 2%] Building ASM object
volk/lib/CMakeFiles/volk.dir//kernels/volk/asm/neon/volk_32fc_32f_dot_prod_32fc_a_neonasmvmla.s.o
[ 2%] Building ASM object
volk/lib/CMakeFiles/volk.dir/
/kernels/volk/asm/neon/volk_32f_x2_add_32f_a_neonpipeline.s.o
[ 3%] Building ASM object
volk/lib/CMakeFiles/volk.dir//kernels/volk/asm/neon/volk_32f_x2_dot_prod_32f_neonasm_opts.s.o
/home/bananapi/gnuradio_src/gnuradio/volk/kernels/volk/asm/neon/volk_32f_x2_dot_prod_32f_neonasm_opts.s:
Assembler messages:
/home/bananapi/gnuradio_src/gnuradio/volk/kernels/volk/asm/neon/volk_32f_x2_dot_prod_32f_neonasm_opts.s:46:
Error: selected processor does not support ARM mode `sbfx r11,r1,#2,#1
volk/lib/CMakeFiles/volk.dir/build.make:1519: recipe for target
'volk/lib/CMakeFiles/volk.dir/
/kernels/volk/asm/neon/volk_32f_x2_dot_prod_32f_neonasm_opts.s.o’
failed
make[2]: ***
[volk/lib/CMakeFiles/volk.dir/__/kernels/volk/asm/neon/volk_32f_x2_dot_prod_32f_neonasm_opts.s.o]
Error 1
CMakeFiles/Makefile2:164: recipe for target
‘volk/lib/CMakeFiles/volk.dir/all’ failed
make[1]: *** [volk/lib/CMakeFiles/volk.dir/all] Error 2
Makefile:147: recipe for target ‘all’ failed
make: *** [all] Error 2

Is it possible that ARM isnt supported in volk ?

Error: selected processor does not support ARM mode `sbfx r11,r1,#2,#1

Andreas

Instead of building on the board itself, wouldn’t be better to compile
the
source code on your working machine by exporting the toolchain compilers
by
means of a simple script ?

2015-01-09 22:52 GMT+01:00 Andreas L. [email protected]:

Am 09.01.2015 um 23:29 schrieb Tech:

sudo swapon /sata/swapfile
free -m

Thanks

I already have a swap partition with 2 GB.

I tried out your suggestion. The result is the same:

Scanning dependencies of target volk
[ 1%] Building ASM object
volk/lib/CMakeFiles/volk.dir//kernels/volk/asm/neon/volk_32f_x2_dot_prod_32f_neonasm_opts.s.o
/home/bananapi/gnuradio_src/gnuradio/volk/kernels/volk/asm/neon/volk_32f_x2_dot_prod_32f_neonasm_opts.s:
Assembler messages:
/home/bananapi/gnuradio_src/gnuradio/volk/kernels/volk/asm/neon/volk_32f_x2_dot_prod_32f_neonasm_opts.s:46:
Error: selected processor does not support ARM mode `sbfx r11,r1,#2,#1
volk/lib/CMakeFiles/volk.dir/build.make:1519: recipe for target
'volk/lib/CMakeFiles/volk.dir/
/kernels/volk/asm/neon/volk_32f_x2_dot_prod_32f_neonasm_opts.s.o’
failed
make[2]: ***
[volk/lib/CMakeFiles/volk.dir/__/kernels/volk/asm/neon/volk_32f_x2_dot_prod_32f_neonasm_opts.s.o]
Error 1
CMakeFiles/Makefile2:164: recipe for target
‘volk/lib/CMakeFiles/volk.dir/all’ failed
make[1]: *** [volk/lib/CMakeFiles/volk.dir/all] Error 2
Makefile:147: recipe for target ‘all’ failed
make: *** [all] Error 2

With the latest LUbuntu (instead of the latest raspian like in my last
mails) version of Banana Pi the following error results when compiling
gnuradio with the gnuradio build-script:

Linking CXX executable test_all
libvolk.so.0.0.0: undefined reference to
volk_32fc_x2_multiply_32fc_neonasm' libvolk.so.0.0.0: undefined reference tovolk_16i_max_star_horizontal_16i_neonasm’
libvolk.so.0.0.0: undefined reference to
volk_32fc_32f_dot_prod_32fc_a_neonasm' libvolk.so.0.0.0: undefined reference tovolk_32f_x2_dot_prod_32f_neonasm_opts’
libvolk.so.0.0.0: undefined reference to
volk_32fc_32f_dot_prod_32fc_a_neonpipeline' libvolk.so.0.0.0: undefined reference tovolk_32f_x2_dot_prod_32f_neonasm’
collect2: error: ld returned 1 exit status
make[2]: *** [volk/lib/test_all] Error 1
make[1]: *** [volk/lib/CMakeFiles/test_all.dir/all] Error 2
Linking CXX executable volk_profile
…/lib/libvolk.so.0.0.0: undefined reference to
volk_32fc_x2_multiply_32fc_neonasm' ../lib/libvolk.so.0.0.0: undefined reference tovolk_16i_max_star_horizontal_16i_neonasm’
…/lib/libvolk.so.0.0.0: undefined reference to
volk_32fc_32f_dot_prod_32fc_a_neonasm' ../lib/libvolk.so.0.0.0: undefined reference tovolk_32f_x2_dot_prod_32f_neonasm_opts’
…/lib/libvolk.so.0.0.0: undefined reference to
volk_32fc_32f_dot_prod_32fc_a_neonpipeline' ../lib/libvolk.so.0.0.0: undefined reference tovolk_32f_x2_dot_prod_32f_neonasm’
collect2: error: ld returned 1 exit status
make[2]: *** [volk/apps/volk_profile] Error 1
make[1]: *** [volk/apps/CMakeFiles/volk_profile.dir/all] Error 2
make: *** [all] Error 2
make failed

I think when I built it I used:

cmake -DCMAKE_CXX_FLAGS="-mcpu=cortex-a7 -mfpu=neon-vfpv4
-mtune=cortex-a7 -funsafe-math-optimizations" …/ -Wno-dev

I also had to enable swap space because the bpi doesn’t have enough
memory for some of the compile stages:

sudo dd if=/dev/zero of=/sata/swapfile bs=1024 count=1024k
sudo mkswap /sata/swapfile
sudo swapon /sata/swapfile
free -m

Thanks

On Sun, Jan 11, 2015 at 4:52 AM, Andreas L.
[email protected]
wrote:

a_neonasm’
…/lib/libvolk.so.0.0.0: undefined reference to
neonasm’
collect2: error: ld returned 1 exit status
make[2]: *** [volk/apps/volk_profile] Error 1
make[1]: *** [volk/apps/CMakeFiles/volk_profile.dir/all] Error 2
make: *** [all] Error 2
make failed

Yes. As has already been mentioned on this thread, on these devices, you
need to set some extra cmake flags. See our Embedded page and the
section
on Native Compiling.

http://gnuradio.org/redmine/projects/gnuradio/wiki/Embedded

Even with this information out there, I still don’t understand why
people
try and natively compile GNU Radio on these devices…

Tom

`volk_32fc_32f_dot_prod_32fc_a_neonasm'
../lib/libvolk.so.0.0.0: undefined reference to
`volk_32f_x2_dot_prod_32f_neonasm'

section on Native Compiling.

http://gnuradio.org/redmine/projects/gnuradio/wiki/Embedded
Yes, i know this. But this doesnt work on the raspian OS on Banana. On
Lubuntu for Banana this works now with this extra cmake flags.

Even with this information out there, I still don’t understand why
people try and natively compile GNU Radio on these devices…
Because to make the experience that native compiling on these devices is
terrible :slight_smile:

In the future i will use cross compiling.

Tom

Andreas