Gnuradio on ARM

I don’t know if anyone has attempted it but I thought I’d have a go on
Ubuntu 12.10 on an ODROID-X.
Main problem it reports is a known bad version of boost that prohibits
it building gnuradio-core and other components.

I downloaded boost 1.53 and I’ll have another go when it’s built and
installed.

– WARNING: Found a known bad version of Boost (v104601). Disabling.

– ######################################################
– # Gnuradio enabled components
– ######################################################
– * python-support
– * testing-support
– * volk
– * doxygen
– * sphinx
– * gnuradio-companion
– * gr-utils
– * gr-wxgui

– ######################################################
– # Gnuradio disabled components
– ######################################################
– * gruel
– * gnuradio-core
– * gr-blocks
– * gr-fft
– * gr-filter
– * gr-atsc
– * gr-audio
– * gr-comedi
– * gr-analog
– * gr-digital
– * gr-noaa
– * gr-pager
– * gr-qtgui
– * gr-trellis
– * gr-uhd
– * gr-shd
– * gr-video-sdl
– * gr-vocoder
– * gr-fcd
– * gr-wavelet
73 … Sid.


Sid B. … Hamradio License G3VBV, Licensed Private Pilot
Emeritus IBM/Amdahl Mainframes and Sun/Fujitsu Servers Tech Support
Senior Staff Specialist, Cricket Coach
Microsoft Windows Free Zone - Linux used for all Computing Tasks

When you run CMake, use the option -DENABLE_BAD_BOOST=ON to ignore the
warning and use that version anyway.

Thanks Nicholas,
That worked.
– ######################################################
– # Gnuradio enabled components
– ######################################################
– * python-support
– * testing-support
– * volk
– * doxygen
– * sphinx
– * gruel
– * gnuradio-core
– * gnuradio-companion
– * gr-blocks
– * gr-fft
– * gr-filter
– * gr-atsc
– * gr-audio
– * gr-analog
– * gr-digital
– * gr-noaa
– * gr-pager
– * gr-trellis
– * gr-utils
– * gr-vocoder
– * gr-fcd
– * gr-wavelet
– * gr-wxgui

– ######################################################
– # Gnuradio disabled components
– ######################################################
– * gr-comedi
– * gr-qtgui
– * gr-uhd
– * gr-shd
– * gr-video-sdl
73 … Sid.

– * gruel
– * gr-pager
– * gr-comedi
– * gr-qtgui
– * gr-uhd
– * gr-shd
– * gr-video-sdl
73 … Sid.
Would be good to see how it does on an Odroid-U2…

On 23/03/13 23:51, Marcus D. Leech wrote:

– * gruel
– * gr-pager
– * gr-comedi
Principal Investigator
Shirleys Bay Radio Astronomy Consortium
http://www.sbrac.org


Discuss-gnuradio mailing list
[email protected]
Discuss-gnuradio Info Page
It chokes on x86 assembler. I about to try using “-mfpu=neon” to see if
it will avoid the x86 assembler.

Linking CXX executable _blocks_swig_swig_tag
[ 24%] Building C object
gnuradio-core/src/lib/CMakeFiles/gnuradio-core.dir/filter/dotprod_fff_armv7_a.c.o
[ 24%] Built target _pmt_swig_swig_tag
[ 24%] [ 24%] Built target _blocks_swig_swig_tag
Building C object
gnuradio-core/src/lib/CMakeFiles/gnuradio-core.dir/filter/dotprod_ccf_armv7_a.c.o
/tmp/ccLw2kCh.s: Assembler messages:
/tmp/ccLw2kCh.s:31: Error: selected FPU does not support instruction –
vmov.f32 q8,#0.0' /tmp/ccLw2kCh.s:32: Error: selected FPU does not support instruction -- vmov.f32 q9,#0.0’
/tmp/ccLw2kCh.s:37: Error: selected FPU does not support instruction –
vmla.f32 q8,q0,q2' /tmp/ccLw2kCh.s:38: Error: selected FPU does not support instruction -- vmla.f32 q9,q1,q3’
/tmp/ccLw2kCh.s:40: Error: selected FPU does not support instruction –
vadd.f32 q8,q8,q9' /tmp/ccLw2kCh.s:41: Error: selected processor does not support Thumb mode vpadd.f32 d0,d16,d17’
make[2]: ***
[gnuradio-core/src/lib/CMakeFiles/gnuradio-core.dir/filter/dotprod_fff_armv7_a.c.o]
Error 1
make[2]: *** Waiting for unfinished jobs…
/tmp/cczuRQxp.s: Assembler messages:
/tmp/cczuRQxp.s:30: Error: selected FPU does not support instruction –
vmov.f32 q14,#0.0' /tmp/cczuRQxp.s:31: Error: selected FPU does not support instruction -- vmov.f32 q15,#0.0’
/tmp/cczuRQxp.s:36: Error: selected FPU does not support instruction –
vmla.f32 q14,q0,q2' /tmp/cczuRQxp.s:37: Error: selected FPU does not support instruction -- vmla.f32 q15,q1,q2’
/tmp/cczuRQxp.s:39: Error: selected processor does not support Thumb
mode vpadd.f32 d0,d28,d29' /tmp/cczuRQxp.s:40: Error: selected processor does not support Thumb mode vpadd.f32 d1,d30,d31’
/tmp/cczuRQxp.s:41: Error: selected processor does not support Thumb
mode `vpadd.f32 d0,d0,d1’
Scanning dependencies of target pygen_gr_atsc_src_lib_0d7f1
make[2]: ***
[gnuradio-core/src/lib/CMakeFiles/gnuradio-core.dir/filter/dotprod_ccf_armv7_a.c.o]
Error 1
make[1]: *** [gnuradio-core/src/lib/CMakeFiles/gnuradio-core.dir/all]
Error 2
make[1]: *** Waiting for unfinished jobs…
[ 24%] Built target _filter_swig_swig_tag
[ 24%] Generating atsc.tag
[ 24%] Swig source
[ 24%] [ 24%] Generating fft_swig.pyc
Generating fft_swig.pyo
[ 24%] Built target pygen_gr_fft_swig_29d48
[ 24%] [ 24%] Generating atsc.pyc
Generating atsc.pyo
[ 24%] Built target pygen_gr_atsc_src_lib_0d7f1
make: *** [all] Error 2
73 … Sid.

root@G3VBV:/3/ODROID-X/gnuradio/build# cmake
-DCMAKE_CXX_FLAGS:STRING="-mfpu=neon -fno-tree-vectorize -flto -fopenmp
-mfloat-abi=hard" -DCMAKE_C_FLAGS:STRING="-mfpu=neon -fno-tree-vectorize
-flto -fopenmp -mfloat-abi=hard" -DCMAKE_INSTALL_PREFIX=/usr
-DCMAKE_BUILD_TYPE=“Release” -DENABLE_GR_CORE=ON -DENABLE_GRC=ON
-DENABLE_GR_FFT=ON -DENABLE_GR_FILTER=ON -DENABLE_GR_AUDIO=ON
-DENABLE_BAD_BOOST=ON …

Got much further this time:-
Linking CXX executable gnuradio-config-info
/3/ODROID-X/gnuradio/build/gnuradio-core/src/lib/swig/gnuradio_core_filterPYTHON_wrap.cxx:
In function ‘void init_gnuradio_core_filter()’:
/3/ODROID-X/gnuradio/build/gnuradio-core/src/lib/swig/gnuradio_core_filterPYTHON_wrap.cxx:119048:21:
warning: variable ‘md’ set but not used [-Wunused-but-set-variable]
[ 59%] Building CXX object
gnuradio-core/src/lib/CMakeFiles/test-gnuradio-core.dir/runtime/qa_gr_hier_block2.cc.o
[ 59%] Built target gnuradio-config-info
Scanning dependencies of target _gnuradio_core_gengen
[ 59%] Building CXX object
gnuradio-core/src/lib/swig/CMakeFiles/_gnuradio_core_gengen.dir/gnuradio_core_gengenPYTHON_wrap.cxx.o
c++: internal compiler error: Killed (program cc1plus)
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-4.6/README.Bugs> for instructions.
make[2]: ***
[gnuradio-core/src/lib/swig/CMakeFiles/_gnuradio_core_general.dir/gnuradio_core_generalPYTHON_wrap.cxx.o]
Error 4
make[1]: ***
[gnuradio-core/src/lib/swig/CMakeFiles/_gnuradio_core_general.dir/all]
Error 2
make[1]: *** Waiting for unfinished jobs…
[ 59%] [ 59%] Building CXX object
gnuradio-core/src/lib/CMakeFiles/test-gnuradio-core.dir/runtime/qa_gr_hier_block2_derived.cc.o
Building CXX object
gnuradio-core/src/lib/CMakeFiles/test-gnuradio-core.dir/runtime/qa_gr_buffer.cc.o
[ 59%] Building CXX object
gnuradio-core/src/lib/CMakeFiles/test-gnuradio-core.dir/runtime/qa_gr_flowgraph.cc.o
[ 59%] Building CXX object
gnuradio-core/src/lib/CMakeFiles/test-gnuradio-core.dir/runtime/qa_gr_top_block.cc.o
/3/ODROID-X/gnuradio/build/gnuradio-core/src/lib/swig/gnuradio_core_gengenPYTHON_wrap.cxx:
In function ‘void init_gnuradio_core_gengen()’:
/3/ODROID-X/gnuradio/build/gnuradio-core/src/lib/swig/gnuradio_core_gengenPYTHON_wrap.cxx:290936:21:
warning: variable ‘md’ set but not used [-Wunused-but-set-variable]
c++: internal compiler error: Killed (program cc1plus)
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-4.6/README.Bugs> for instructions.
make[2]: ***
[gnuradio-core/src/lib/swig/CMakeFiles/_gnuradio_core_filter.dir/gnuradio_core_filterPYTHON_wrap.cxx.o]
Error 4
make[1]: ***
[gnuradio-core/src/lib/swig/CMakeFiles/_gnuradio_core_filter.dir/all]
Error 2
[
73 … Sid.

Hi,

I compiled it on ARM this week end.

c++: internal compiler error: Killed (program cc1plus)

You don’t have enough RAM … SWIG that generates the python wrapper
will generate C++ source of like 20-30Mo, which when compilin will
require like > 1Go of RAM !!!

I ended up disabling python to build only the C++ core of gnuradio …
that went much smoother.

/tmp/ccLw2kCh.s:31: Error: selected FPU does not support instruction –
`vmov.f32 q8,#0.0’

This is the same issue I reported in

http://gnuradio.org/redmine/issues/526

Cheers,

Sylvain

Thanks,
I thought I had 2G of swap, now realised I didn’t make it for the 32GB
SD card.
73 … Sid.

On 24/03/13 22:04, Sylvain M. wrote:

I ended up disabling python to build only the C++ core of gnuradio …
Cheers,

 Sylvain


Sid B. … Hamradio License G3VBV, Licensed Private Pilot
Emeritus IBM/Amdahl Mainframes and Sun/Fujitsu Servers Tech Support
Senior Staff Specialist, Cricket Coach
Microsoft Windows Free Zone - Linux used for all Computing Tasks

On Sat, Mar 23, 2013 at 5:36 PM, Sid B. [email protected]
wrote:

I don’t know if anyone has attempted it but I thought I’d have a go on
Ubuntu 12.10 on an ODROID-X.
Main problem it reports is a known bad version of boost that prohibits it
building gnuradio-core and other components.

I just compiled on Arndale (Cortex-A15) and Linaro 12.12 with the
following options and cmake file.

-DENABLE_BAD_BOOST=ON
-DCMAKE_TOOLCHAIN_FILE=…/cmake/Toolchains/arm_cortex_a15_native.cmake

-TT

I have discovered an odd happening on the ODROID-X that I’ll have to
take up with them.
root@G3VBV:~# swapon -a
swapon: /swapfile: swapon failed: Function not implemented
root@G3VBV:~# swapon /swapfile
swapon: /swapfile: swapon failed: Function not implemented
73 … Sid.

On 24/03/13 22:04, Sylvain M. wrote:

I ended up disabling python to build only the C++ core of gnuradio …
Cheers,

 Sylvain


Sid B. … Hamradio License G3VBV, Licensed Private Pilot
Emeritus IBM/Amdahl Mainframes and Sun/Fujitsu Servers Tech Support
Senior Staff Specialist, Cricket Coach
Microsoft Windows Free Zone - Linux used for all Computing Tasks

On Mon, Mar 25, 2013 at 9:38 AM, Sid B. [email protected]
wrote:

Hi,
I ended up disabling python to build only the C++ core of gnuradio …

Cheers,

 Sylvain

Hey Sid,

Did you ever get past that? I don’t think it’s an issue with the
ODROID-X,
rather the kernel shipped on the Linaro image doesn’t have swap support
built in. We’ve been trying to build gnuradio on an odroid-x too and ran
in
to the same problem. The solutions appear to be corss compiling or
getting
a new kernel. If you’ve (or anyone else) made any progress I’d
appreciate
hearing about it. Any tips on kernel replacements or tool chains would
be
great.

I tried using the Toolchain file arm_cortex_a8_native.cmake with a naive
replacement for mtune=cortex-a9, but it complains g++ is broken. Using
the
cmake flags you gave does make some progress (until the swig files of
death):
root@G3VBV:/3/ODROID-X/
gnuradio/build# cmake -DCMAKE_CXX_FLAGS:STRING=“-mfpu=neon
-fno-tree-vectorize -flto -fopenmp -mfloat-abi=hard”
-DCMAKE_C_FLAGS:STRING=“-mfpu=neon -fno-tree-vectorize -flto -fopenmp
-mfloat-abi=hard” -DCMAKE_INSTALL_PREFIX=/usr
-DCMAKE_BUILD_TYPE=“Release”
-DENABLE_GR_CORE=ON -DENABLE_GRC=ON -DENABLE_GR_FFT=ON
-DENABLE_GR_FILTER=ON -DENABLE_GR_AUDIO=ON -DENABLE_BAD_BOOST=ON …
Side comment: are you really building as root?

These guys apparently had success: Gnuradio on Odroid-X | CSP Research & Development (if
anyone from their group is on this list feel free to chime in :slight_smile: )

On a related note, there’s an arch linux image for the odroid-x that has
a
kernel with support for swap, but arch has it’s own head aches mostly
associated with the rolling release (aka bad boost and pacman is obtuse
compared to apt).

-Nathan

Did you ever get past that? I don’t think it’s an issue with the ODROID-X,
rather the kernel shipped on the Linaro image doesn’t have swap support built
in. We’ve been trying to build gnuradio on an odroid-x too and ran in to the
same
problem. The solutions appear to be corss compiling or getting a new kernel.
If you’ve (or anyone else) made any progress I’d appreciate hearing about it.
Any tips on kernel replacements or tool chains would be great.

I’m building for a different ARM target, but a workaround that helped
with the
compiler failing (presumably due to lack of RAM) was to change the
optimization
level for the specific large swig file(s) to “-O0” instead of “-O3” that
goes with a
release build.

Use “make -n” to see the compiler command that will be used for the
file(s), then
manually run that command and change the optimization level. Then resume
the
make.

c++: internal compiler error: Killed (program cc1plus)

You don’t have enough RAM … SWIG that generates the python wrapper
will generate C++ source of like 20-30Mo, which when compilin will
require like > 1Go of RAM !!!

Does anyone know of a good swap file size? I had success with 4M for
v3.6.4.1,
but I don’t want to be greedy.

On Wed, Apr 17, 2013 at 9:55 AM, Monahan-Mitchell, Tim <
[email protected]> wrote:

You don’t have enough RAM … SWIG that generates the python wrapper
will generate C++ source of like 20-30Mo, which when compilin will
require like > 1Go of RAM !!!

Does anyone know of a good swap file size? I had success with 4M for
v3.6.4.1,
but I don’t want to be greedy.

Tom R. made a change to the build to break the SWIG generation for
gr-blocks into three steps. While it doesn’t help with the compile time
as
much, it does knock down the memory requirements for g++ on the
generated
SWIG wrappers.

This change, though is on the master branch, and won’t make it to a
stable
release until 3.6.5.

I notice that ‘neon’ is enabled in your compilations. If your device
does
not have a neon cpu then you must disable this option. Also, check your
CmakeCache.txt file to make sure ‘neon’ is not enabled.

Scan way down the file until you find:

//Test have_mfpu_neon
have_mfpu_neon:INTERNAL=1

Delete the “1” and save the file.

Run make. It will appear that cmake is being run again and might change
your
edit, but it doesn’t.

Hopefully this will help some of you to resolve this issue.


View this message in context:
http://gnuradio.4.n7.nabble.com/gnuradio-on-ARM-tp40312p43416.html
Sent from the GnuRadio mailing list archive at Nabble.com.