I am curious to hear from folks if the changes made in this commit ( https://github.com/gnuradio/gnuradio/commit/33a43b42c7ea3c318cbad3fe9372a32bc2bd127e) has any effect on cross-compiling. I verified it did the correct thing for me when using the SDK from the gnuradio wiki (i.e. the one linked to from http://gnuradio.org/redmine/projects/gnuradio/wiki/Embedded) targeting a Cortex-A9 machine, however I'd like to get feedback from other people using it. I am also not convinced that it is 'automagically' doing the right thing when native compiling still, but I don't have hardware in front of me to test that use case at the moment. In general I discourage native compiling something as large as GNURadio on smaller platforms unless there is no alternative (especially due to the memory requirements of building all the SWIG-related objects), but if there is a path to have cmake do the correct thing in all cases I think we want to do that.
Doug On Sun, Sep 21, 2014 at 12:48 PM, Nowlan, Sean <[email protected]> wrote: > I'm using the cross compiling environment to take advantage of the > latest updates to ARM VOLK kernels. My build environment is identical to > the one described in the Wiki page for embedded, except that it was > necessary to add "-mtune=cortex-a9" to get the Neon assembly files to > compile in volk. Before adding this flag, I got this error: > > > [ 0%] Building ASM object > volk/lib/CMakeFiles/volk.dir/__/kernels/volk/asm/neon/volk_32fc_32f_dot_prod_32fc_a_neonasmpipeline.s.o > /home/snowlan3/pybombs/src/gnuradio/volk/kernels/volk/asm/neon/volk_32fc_32f_dot_prod_32fc_a_neonasmpipeline.s: > Assembler messages: > /home/snowlan3/pybombs/src/gnuradio/volk/kernels/volk/asm/neon/volk_32fc_32f_dot_prod_32fc_a_neonasmpipeline.s:35: > Error: selected processor does not support ARM mode `veor realAccQ,realAccQ' > /home/snowlan3/pybombs/src/gnuradio/volk/kernels/volk/asm/neon/volk_32fc_32f_dot_prod_32fc_a_neonasmpipeline.s:36: > Error: selected processor does not support ARM mode `veor compAccQ,compAccQ' > /home/snowlan3/pybombs/src/gnuradio/volk/kernels/volk/asm/neon/volk_32fc_32f_dot_prod_32fc_a_neonasmpipeline.s:42: > Error: selected processor does not support ARM mode `vld1.32 > {d4-d5},[taps:128]!' > /home/snowlan3/pybombs/src/gnuradio/volk/kernels/volk/asm/neon/volk_32fc_32f_dot_prod_32fc_a_neonasmpipeline.s:43: > Error: selected processor does not support ARM mode `vld2.32 > {d18-d21},[input:128]!' > /home/snowlan3/pybombs/src/gnuradio/volk/kernels/volk/asm/neon/volk_32fc_32f_dot_prod_32fc_a_neonasmpipeline.s:50: > Error: selected processor does not support ARM mode `vmul.f32 > realMul,tapsVal,inRealVal' > /home/snowlan3/pybombs/src/gnuradio/volk/kernels/volk/asm/neon/volk_32fc_32f_dot_prod_32fc_a_neonasmpipeline.s:51: > Error: selected processor does not support ARM mode `vmul.f32 > compMul,tapsVal,inCompVal' > /home/snowlan3/pybombs/src/gnuradio/volk/kernels/volk/asm/neon/volk_32fc_32f_dot_prod_32fc_a_neonasmpipeline.s:52: > Error: selected processor does not support ARM mode `vadd.f32 > realAccQ,realAccQ,realMul' > /home/snowlan3/pybombs/src/gnuradio/volk/kernels/volk/asm/neon/volk_32fc_32f_dot_prod_32fc_a_neonasmpipeline.s:53: > Error: selected processor does not support ARM mode `vadd.f32 > compAccQ,compAccQ,compMul' > /home/snowlan3/pybombs/src/gnuradio/volk/kernels/volk/asm/neon/volk_32fc_32f_dot_prod_32fc_a_neonasmpipeline.s:54: > Error: selected processor does not support ARM mode `vld1.32 > {d4-d5},[taps:128]!' > /home/snowlan3/pybombs/src/gnuradio/volk/kernels/volk/asm/neon/volk_32fc_32f_dot_prod_32fc_a_neonasmpipeline.s:55: > Error: selected processor does not support ARM mode `vld2.32 > {d18-d21},[input:128]!' > /home/snowlan3/pybombs/src/gnuradio/volk/kernels/volk/asm/neon/volk_32fc_32f_dot_prod_32fc_a_neonasmpipeline.s:61: > Error: selected processor does not support ARM mode `vpadd.f32 d0,d0,d1' > /home/snowlan3/pybombs/src/gnuradio/volk/kernels/volk/asm/neon/volk_32fc_32f_dot_prod_32fc_a_neonasmpipeline.s:62: > Error: selected processor does not support ARM mode `vpadd.f32 d2,d2,d3' > /home/snowlan3/pybombs/src/gnuradio/volk/kernels/volk/asm/neon/volk_32fc_32f_dot_prod_32fc_a_neonasmpipeline.s:63: > Error: selected processor does not support ARM mode `vadd.f32 > realAccS,s0,s1' > /home/snowlan3/pybombs/src/gnuradio/volk/kernels/volk/asm/neon/volk_32fc_32f_dot_prod_32fc_a_neonasmpipeline.s:64: > Error: selected processor does not support ARM mode `vadd.f32 > compAccS,s4,s5' > /home/snowlan3/pybombs/src/gnuradio/volk/kernels/volk/asm/neon/volk_32fc_32f_dot_prod_32fc_a_neonasmpipeline.s:71: > Error: selected processor does not support ARM mode `vld1.32 > {d4[0]},[taps]!' > /home/snowlan3/pybombs/src/gnuradio/volk/kernels/volk/asm/neon/volk_32fc_32f_dot_prod_32fc_a_neonasmpipeline.s:72: > Error: selected processor does not support ARM mode `vld2.32 > {d5[0],d6[0]},[input]!' > /home/snowlan3/pybombs/src/gnuradio/volk/kernels/volk/asm/neon/volk_32fc_32f_dot_prod_32fc_a_neonasmpipeline.s:73: > Error: selected processor does not support ARM mode `vmul.f32 s5,s8,s12' > /home/snowlan3/pybombs/src/gnuradio/volk/kernels/volk/asm/neon/volk_32fc_32f_dot_prod_32fc_a_neonasmpipeline.s:74: > Error: selected processor does not support ARM mode `vmul.f32 s6,s8,s10' > /home/snowlan3/pybombs/src/gnuradio/volk/kernels/volk/asm/neon/volk_32fc_32f_dot_prod_32fc_a_neonasmpipeline.s:75: > Error: selected processor does not support ARM mode `vadd.f32 > realAccS,realAccS,s5' > /home/snowlan3/pybombs/src/gnuradio/volk/kernels/volk/asm/neon/volk_32fc_32f_dot_prod_32fc_a_neonasmpipeline.s:76: > Error: selected processor does not support ARM mode `vadd.f32 > compAccS,compAccS,s6' > /home/snowlan3/pybombs/src/gnuradio/volk/kernels/volk/asm/neon/volk_32fc_32f_dot_prod_32fc_a_neonasmpipeline.s:82: > Error: selected processor does not support ARM mode `vst1.32 > {d0[0]},[result]!' > /home/snowlan3/pybombs/src/gnuradio/volk/kernels/volk/asm/neon/volk_32fc_32f_dot_prod_32fc_a_neonasmpipeline.s:83: > Error: selected processor does not support ARM mode `vst1.32 > {d2[0]},[result]' > make[2]: *** > [volk/lib/CMakeFiles/volk.dir/__/kernels/volk/asm/neon/volk_32fc_32f_dot_prod_32fc_a_neonasmpipeline.s.o] > Error 1 > make[1]: *** [volk/lib/CMakeFiles/volk.dir/all] Error 2 > make: *** [all] Error 2 > > Sean > > > > ------------------------------ > *From:* [email protected] > <[email protected]> on behalf > of West, Nathan <[email protected]> > *Sent:* Saturday, September 20, 2014 11:25 AM > *To:* Philip Balister > *Cc:* GNURadio Discussion List; Mike Jameson; Michal Jakubiak > *Subject:* Re: [Discuss-gnuradio] Problems building GNURadio > > I'm mobile at the moment, so can't be detailed... +1 to not disabling > NEON. I'd rather point people towards the GNU radio wiki resources rather > than random blog posts since they will inevitably be out of date (which > this one definitely is) because the authors don't track GR development very > closely. This page will be much more helpful: > http://gnuradio.org/redmine/projects/gnuradio/wiki/embedded > > That said, there were also changes to the build setup for ARM made > yesterday, so it would be good to know what revision your building. > > There have been a lot of changes to ARM builds recently, so patience and > feedback are appreciated. > > On Saturday, September 20, 2014, Philip Balister <[email protected]> > wrote: > >> On 09/19/2014 12:08 PM, Mike Jameson wrote: >> > This URL might help: >> > >> > >> https://labs.mwrinfosecurity.com/blog/2014/06/18/beaglebone-black-gnu-radio-and-hackrf-one/ >> > >> > Have you tried disabling NEON? >> >> Disabling NEON on this platform is a bad thing. Hopefully one of the >> volk guys sees what is going on. I suspect you need to use the native >> build toolchain file. >> >> Philip >> >> > >> > Mike >> > >> > -- >> > Mike Jameson M0MIK BSc MIET >> > Ettus Research Technical Support >> > Email: [email protected] <http://owa/> >> > Web: http://ettus.com >> > >> > On Fri, Sep 19, 2014 at 4:29 PM, Michal Jakubiak <[email protected] >> <http://owa/>> wrote: >> > >> >> I'm refreshing this one since I have a very similar problem. I'm >> trying to >> >> build gr on BeagleBone Black, which is also an ARMv7. I'm using the >> >> build-gnuradio script. >> >> >> >> >> >> >> >>> [ 4%] Building C object volk/lib/CMakeFiles/volk.dir/volk_cpu.c.o >> >>> [ 4%] Building C object >> volk/lib/CMakeFiles/volk.dir/volk_machines.c.o >> >>> [ 4%] Building C object >> >>> volk/lib/CMakeFiles/volk.dir/volk_machine_generic_orc.c.o >> >>> [ 4%] Building C object >> >>> volk/lib/CMakeFiles/volk.dir/volk_machine_neon_hardfp_orc.c.o >> >>> Linking C shared library libvolk.so >> >>> [ 4%] Built target volk >> >>> [ 4%] Building CXX object >> volk/lib/CMakeFiles/test_all.dir/testqa.cc.o >> >>> [ 4%] Building CXX object >> volk/lib/CMakeFiles/test_all.dir/qa_utils.cc.o >> >>> 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 to >> >>> `volk_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 to >> >>> `volk_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 to >> >>> `volk_32f_x2_dot_prod_32f_neonasm' >> >>> collect2: ld returned 1 exit status >> >>> make[2]: *** [volk/lib/test_all] Error 1 >> >>> make[1]: *** [volk/lib/CMakeFiles/test_all.dir/all] Error 2 >> >>> make: *** [all] Error 2 >> >>> make failed >> >>> Exiting Gnu Radio build/install >> >> >> >> >> >> I've edited the cmake command in the script: >> >> >> >> cmake -DENABLE_BAD_BOOST=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo >> $CMAKE_FLAG1 >> >> $CMAKE_FLAG2 $CMF1 $CMF2 -DCMAKE_C_FLAGS="-march=armv7-a >> -mthumb-interwork >> >> -mfloat-abi=hard -mfpu=neon -mtune=cortex-a9" >> >> -DCMAKE_ASM-ATT_FLAGS="-march=armv7-a -mthumb-interwork >> -mfloat-abi=hard >> >> -mfpu=neon" ../ >>$LOGDEV 2>&1 >> >> >> >> Unfortunately, it had no effect. I'm out of ideas over here :/ >> >> >> >> _______________________________________________ >> >> Discuss-gnuradio mailing list >> >> [email protected] <http://owa/> >> >> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio >> >> >> >> >> > >> > >> > >> > _______________________________________________ >> > Discuss-gnuradio mailing list >> > [email protected] <http://owa/> >> > https://lists.gnu.org/mailman/listinfo/discuss-gnuradio >> > >> >> _______________________________________________ >> Discuss-gnuradio mailing list >> [email protected] <http://owa/> >> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio >> > > _______________________________________________ > Discuss-gnuradio mailing list > [email protected] > https://lists.gnu.org/mailman/listinfo/discuss-gnuradio > > -- Doug Geiger [email protected]
_______________________________________________ Discuss-gnuradio mailing list [email protected] https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
