A quick update for benefit of those following this thread:

As a sanity check, I have tried to compile & build one of the C++ examples
on the Ettus homepage, only to get exactly the same error messages that I
got with the Python API:

pi@raspberrypi:~/cpp-dev/init_usrp/build $ sudo make
[ 50%] Linking CXX executable init_usrp
/usr/bin/ld: /usr/local/lib/libuhd.so: undefined reference to
`__atomic_compare_exchange_8'
/usr/bin/ld: /usr/local/lib/libuhd.so: undefined reference to
`__atomic_load_8'
/usr/bin/ld: /usr/local/lib/libuhd.so: undefined reference to
`__atomic_store_8'
/usr/bin/ld: /usr/local/lib/libuhd.so: undefined reference to
`__atomic_fetch_add_8'
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/init_usrp.dir/build.make:88: init_usrp] Error 1
make[1]: *** [CMakeFiles/Makefile2:76: CMakeFiles/init_usrp.dir/all] Error 2
make: *** [Makefile:84: all] Error 2

Clearly the sticking point is the -latomic linking failure.  I have still
got some suggestions to work through over the next week or so.  I'll post
another update if I find a working solution.

Brendan.



On Sun, Apr 4, 2021 at 11:03 AM Marcus D Leech <patchvonbr...@gmail.com>
wrote:

> The C++ API is the standard API for UHD follows by the legacy C API and
> then the Python API.  The Python API is still considered experimental, and
> it will necessarily have performance issues—that’s just the nature of an
> interpreted language trying to do high performance real-time signal
> processing—even when you use things like numpy.
>
> Sent from my iPhone
>
> On Apr 3, 2021, at 7:37 PM, Brendan Horsfield <
> brendan.horsfi...@vectalabs.com> wrote:
>
> 
> Your point is well taken, although I confess I am still a bit surprised
> that Python support is not the norm, given the popularity of this language
> in the scientific & engineering community.
>
> Getting back to my problem:  Am I correct in assuming that the C++ API is
> included as standard with every UHD build?  If so, rather than spending
> days/weeks trying to add Python support to UHD on the Raspberry Pi, would
> it be faster for me to just create a C++ function to communicate with the
> USRP, and put a Python wrapper around it?
>
> On Sun, Apr 4, 2021 at 1:15 AM Marcus D Leech <patchvonbr...@gmail.com>
> wrote:
>
>>
>>
>> Sent from my iPhone
>>
>> On Apr 3, 2021, at 7:08 AM, Brendan Horsfield <b
>>
>> QUESTION 2:  This whole process feels more difficult than it should be.
>> Why isn't the Python API installed with the UHD driver by default?  Would I
>> be better off using another language (like C++) to control the USRP?
>>
>> Thanks,
>> Brendan.
>>
>> Well, NI/Ettus have zero control over how various distros choose to
>> package and build UHD, similarly for PyBombs—PyBombs isn’t maintained by
>> NI/Ettus.
>>
>> So if you “land” on a distro where the packaged UHD doesn’t include
>> Python support, then you end up building UHD yourself. Which may entail the
>> pain you encountered due to missing compiler flags.
>>
>> Because the Linux world is so incredibly diverse, it’s rare that the
>> developer of a given code base is also responsible for packaging for a
>> given distro/platform. That’s why there are “package maintainers” for each
>> distro, and they’re the ones who end up making decisions like enabling
>> support for various options, turning on “weird” compiler flags, etc.
>>
>> UHD is no different in this regard.
>>
>>
>>
>> On Fri, Apr 2, 2021 at 11:25 PM Marcus D Leech <patchvonbr...@gmail.com>
>> wrote:
>>
>>> Perhaps look at the PyBombs recipe for your platform—there’s probably a
>>> compiler flag that needs to be set that you’re missing, but I don’t know
>>> what that is.
>>>
>>> Also, in general, you don’t need to become root to compile and build
>>> code—only needed during the “make install”
>>>
>>>
>>>
>>> Sent from my iPhone
>>>
>>> On Apr 2, 2021, at 7:19 AM, Brendan Horsfield <
>>> brendan.horsfi...@vectalabs.com> wrote:
>>>
>>> 
>>> Hi Folks,
>>>
>>> I would like to interface my Raspberry Pi 4 to a USRP B210 via the
>>> Python API.  This requires the UHD driver to be built from source.
>>> Unfortunately, whenever I try this I encounter some errors that stop the
>>> build process in its tracks.
>>>
>>> Details of the error are as follows:
>>>
>>> [ 53%] Linking CXX executable test_clock_synch
>>> /usr/bin/ld: ../lib/libuhd.so.4.0.0: undefined reference to
>>> `__atomic_compare_exchange_8'
>>> /usr/bin/ld: ../lib/libuhd.so.4.0.0: undefined reference to
>>> `__atomic_load_8'
>>> /usr/bin/ld: ../lib/libuhd.so.4.0.0: undefined reference to
>>> `__atomic_store_8'
>>> /usr/bin/ld: ../lib/libuhd.so.4.0.0: undefined reference to
>>> `__atomic_fetch_add_8'
>>> collect2: error: ld returned 1 exit status
>>> make[2]: *** [examples/CMakeFiles/test_clock_synch.dir/build.make:95:
>>> examples/test_clock_synch] Error 1
>>> make[1]: *** [CMakeFiles/Makefile2:1039:
>>> examples/CMakeFiles/test_clock_synch.dir/all] Error 2
>>> make: *** [Makefile:163: all] Error 2
>>>
>>> The process I have been using is as follows:
>>>
>>> STEP 1:  INSTALL DEPENDENCIES
>>> sudo apt-get install libboost-all-dev libusb-1.0-0-dev doxygen
>>> python3-docutils python3-mako python3-numpy python3-requests
>>> python3-ruamel.yaml python3-setuptools cmake build-essential
>>>
>>> STEP 2:  BUILD UHD DRIVER FROM SOURCE
>>> cd /home/pi
>>> mkdir workarea-uhd
>>> cd workarea-uhd
>>> git clone https://github.com/EttusResearch/uhd
>>> cd uhd
>>> git checkout v4.0.0.0
>>> cd host
>>> mkdir build
>>> cd build
>>> sudo cmake -DNEON_SIMD_ENABLE=OFF -DENABLE_PYTHON_API=ON ../
>>> sudo make  --->  (ERRORS OCCUR DURING "MAKE" PROCESS)
>>>
>>> My system configuration is as follows:
>>> Hardware: Raspberry Pi 4 Model B Rev 1.4
>>> OS: Raspbian GNU/Linux 10 (buster) (32-bit, armv7l)
>>> Ettus USRP B210
>>>
>>> Does anyone know what the problem could be, and how I can resolve it?
>>>
>>> One final note:  Using PyBOMBS, I was able to successfully build &
>>> install the UHD driver and connect to the USRP.  Unfortunately the PyBOMBS
>>> build does not include the Python API, which is what I really want.  Is
>>> there a different version of the PyBOMBS build that includes the Python API?
>>>
>>> Thanks & Regards,
>>> Brendan.
>>>
>>>
>>>
>>> _______________________________________________
>>> USRP-users mailing list -- usrp-users@lists.ettus.com
>>> To unsubscribe send an email to usrp-users-le...@lists.ettus.com
>>>
>>>
_______________________________________________
USRP-users mailing list -- usrp-users@lists.ettus.com
To unsubscribe send an email to usrp-users-le...@lists.ettus.com

Reply via email to