diff options
-rw-r--r-- | host/cmake/debian/changelog | 15 | ||||
-rw-r--r-- | host/docs/CMakeLists.txt | 6 | ||||
-rw-r--r-- | host/docs/Doxyfile.in | 2 | ||||
-rw-r--r-- | host/docs/usrp_e3x0.dox | 36 | ||||
-rw-r--r-- | host/lib/usrp/b200/b200_impl.cpp | 12 |
5 files changed, 60 insertions, 11 deletions
diff --git a/host/cmake/debian/changelog b/host/cmake/debian/changelog index 75aeeab81..f83d834a2 100644 --- a/host/cmake/debian/changelog +++ b/host/cmake/debian/changelog @@ -1,3 +1,18 @@ +uhd (3.9.4-0ubuntu1) trusty; urgency=low + + - GPIO control: Fix address mismatch for RX and full duplex. + This fixes full-duplex mode for most devices. + - B200: Fixed auto rate selection (can now select 61.44 Msps) + - UBX: Fix member declaration order which could cause + segfaults for debug builds + - Manual/Docs: Numerous fixes, use dot for graphs in manual + - Utils: multiple fixes for query_gpsdo_sensors, fixed floating point + comparison + - Windows: Include registry file in installation + - Converters: Improve NEON converters + + -- Ettus Research <packages@ettus.com> Thu, 05 May 2016 12:56:28 -0800 + uhd (3.9.3-0ubuntu1) trusty; urgency=low * UBX: Fixed a phase synchronization issue on the sub-1GHz band diff --git a/host/docs/CMakeLists.txt b/host/docs/CMakeLists.txt index 7f510f58c..a702f76c6 100644 --- a/host/docs/CMakeLists.txt +++ b/host/docs/CMakeLists.txt @@ -66,6 +66,7 @@ ENDIF(ENABLE_MANUAL) LIBUHD_REGISTER_COMPONENT("API/Doxygen" ENABLE_DOXYGEN ON "DOXYGEN_FOUND" OFF OFF) OPTION(ENABLE_DOXYGEN_FULL "Use Doxygen to document the entire source tree (not just API)" OFF) OPTION(ENABLE_DOXYGEN_DOT "Let Doxygen use dot (requires graphviz)" OFF) +OPTION(ENABLE_DOXYGEN_SHORTNAMES "Let Doxygen use shorter filenames (helps on Windows)" OFF) IF(LIBUHDDEV_PKG) SET(PKG_DOC_DIR share/doc/libuhd-dev) @@ -98,6 +99,11 @@ IF(ENABLE_MANUAL_OR_DOXYGEN) ELSE(ENABLE_DOXYGEN_DOT) SET(DOXYGEN_HAVE_DOT "NO") ENDIF(ENABLE_DOXYGEN_DOT) + IF(ENABLE_DOXYGEN_SHORTNAMES) + SET(DOXYGEN_SHORT_NAMES "YES") + ELSE(ENABLE_DOXYGEN_SHORTNAMES) + SET(DOXYGEN_SHORT_NAMES "NO") + ENDIF(ENABLE_DOXYGEN_SHORTNAMES) CONFIGURE_FILE( ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in diff --git a/host/docs/Doxyfile.in b/host/docs/Doxyfile.in index 8aa6299ae..d230352d4 100644 --- a/host/docs/Doxyfile.in +++ b/host/docs/Doxyfile.in @@ -147,7 +147,7 @@ STRIP_FROM_INC_PATH = @CMAKE_SOURCE_DIR@/include # (but less readable) file names. This can be useful if your file system # doesn't support long names like on DOS, Mac, or CD-ROM. -SHORT_NAMES = NO +SHORT_NAMES = @DOXYGEN_SHORT_NAMES@ # If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen # will interpret the first line (until the first dot) of a JavaDoc-style diff --git a/host/docs/usrp_e3x0.dox b/host/docs/usrp_e3x0.dox index 64e784399..1a94e6c7e 100644 --- a/host/docs/usrp_e3x0.dox +++ b/host/docs/usrp_e3x0.dox @@ -102,7 +102,7 @@ If you are not sure which image is installed on your device, upgrading to the la To install the toolchain you downloaded type: - $ ./oecore-${TCLIBC}-${SDK_ARCH}-${IMAGE_BASENAME}-${TUNE_PKGARCH}.sh + $ ./oecore-x86_64-armv7ahf-vfp-neon-toolchain-nodistro.0.sh This will prompt you for an installation path. Please ensure you have sufficient disk space, as each of the SDKs may require several gigabytes of disk space (depends on the image flavor selected). @@ -127,17 +127,24 @@ which should return 'arm-oe-linux-gnueabi'. \subsubsection e3x0_sdk_usage_uhd Building UHD +The E310 comes with UHD already installed on the SD card. You will only need +to build UHD and install it if there is a critical bug fix in a later UHD or you +have custom UHD modifications. + -# Obtain the UHD source code via git or tarball -# Setup your environment as described in \ref e3x0_sdk_usage -# Type the following in the build directory (assuming a build in host/build): - $ cmake -DCMAKE_TOOLCHAIN_FILE=<youruhdsrc>/host/cmake/Toolchains/oe-sdk_cross.cmake -DCMAKE_INSTALL_PREFIX=/usr -DENABLE_E300=ON .. + $ cmake -DCMAKE_TOOLCHAIN_FILE=../host/cmake/Toolchains/oe-sdk_cross.cmake -DCMAKE_INSTALL_PREFIX=/usr -DENABLE_E300=ON .. $ make For instructions on building UHD on a PC to interact with your E-Series device, follow these instructions: \ref e3x0_uhd_build \subsubsection e3x0_sdk_usage_gnuradio Building GNU Radio +GNU Radio is already installed on the SD card. You only need to build GNU Radio +for the E3XX if you are doing custom GNU Radio development work. + -# Obtain the gnuradio source code via git. -# Setup the environment as described in \ref e3x0_sdk_usage -# Use the following commands to create a build directory, configure and compile gnuradio. You only need create the build directory once. @@ -158,9 +165,12 @@ The file system images are built using OpenEmbedded Core. The `repo` tool is used to manage the versions of the various layers that supply recipes for building the image. For more documentation see http://www.yoctoproject.org. These notes will show you how to rebuild the files used to create the SD -card included with the E310. These instructions assume you ahve a working +card included with the E310. These instructions assume you have a working knowledge of Linux. +Once you have rebuilt the factory image, you can create your own custom recipes +to build file system images for specific application. + -# Install `repo`. \code{.sh} $ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > repo @@ -172,7 +182,7 @@ knowledge of Linux. \code{.sh} $ mkdir e300-oe-build $ cd e300-oe-build - $ repo init -u git://github.com/EttusResearch/e300-manifest.git -b Release-3 + $ repo init -u git://github.com/EttusResearch/e300-manifest.git -b Release-4 \endcode -# Initialize the environment. This will take a little while. @@ -187,12 +197,13 @@ path names make sense for your machine. it will download all the required sources. (These are saved locally for future builds) \code{.sh} - $ export MACHINE="ettus-e300" + $ export MACHINE="ettus-e3xx-sg1" $ bitbake gnuradio-dev-image \endcode When this completes, the files needed to create the SD card are in -`tmp-glibc/deploy/images/ettus-e300` +`tmp-glibc/deploy/images/ettus-e300`. Building the file that is written +directly to the SD card is covered later in this document. -# Build the toolchain. \code{.sh} @@ -202,6 +213,19 @@ The sdk is in `tmp-glibc/deploy/sdk` Note that you can set the `MACHINE` variable in `local.conf so that you no longer need to set it from the command line. +-# Building the complete set of E3XX image files and sdk. + +There is a script in the meta-ettus BSP layer that builds SD card images for +all E3XX series devices and the sdk. + +From the build directory run: +\code{.sh} + $ sh ../meta-ettus/scripts/build-all.sh +\endcode + +When the script finishes, the SD ard image files are in ./images and the sdk +is in tmp-glibc/deploy/sdk/ . + -# Using the environment When you log back in, you will need to setup the OpenEmbedded environment again by: diff --git a/host/lib/usrp/b200/b200_impl.cpp b/host/lib/usrp/b200/b200_impl.cpp index 0b4eccd5e..78edec31c 100644 --- a/host/lib/usrp/b200/b200_impl.cpp +++ b/host/lib/usrp/b200/b200_impl.cpp @@ -33,6 +33,7 @@ #include <boost/lexical_cast.hpp> #include <boost/functional/hash.hpp> #include <boost/make_shared.hpp> +#include <boost/weak_ptr.hpp> #include <cstdio> #include <ctime> #include <cmath> @@ -730,9 +731,12 @@ b200_impl::~b200_impl(void) * setup radio control objects **********************************************************************/ -void lambda_set_bool_prop(property_tree::sptr tree, fs_path path, bool value, double) +void lambda_set_bool_prop(boost::weak_ptr<property_tree> tree_wptr, fs_path path, bool value, double) { - tree->access<bool>(path).set(value); + property_tree::sptr tree = tree_wptr.lock(); + if (tree) { + tree->access<bool>(path).set(value); + } } void b200_impl::setup_radio(const size_t dspno) @@ -796,7 +800,7 @@ void b200_impl::setup_radio(const size_t dspno) _tree->create<bool>(rx_dsp_path / "rate" / "set").set(false); _tree->access<double>(rx_dsp_path / "rate" / "value") .set_coercer(boost::bind(&b200_impl::coerce_rx_samp_rate, this, perif.ddc, dspno, _1)) - .add_coerced_subscriber(boost::bind(&lambda_set_bool_prop, _tree, rx_dsp_path / "rate" / "set", true, _1)) + .add_coerced_subscriber(boost::bind(&lambda_set_bool_prop, boost::weak_ptr<property_tree>(_tree), rx_dsp_path / "rate" / "set", true, _1)) .add_coerced_subscriber(boost::bind(&b200_impl::update_rx_samp_rate, this, dspno, _1)) ; _tree->create<stream_cmd_t>(rx_dsp_path / "stream_cmd") @@ -812,7 +816,7 @@ void b200_impl::setup_radio(const size_t dspno) _tree->create<bool>(tx_dsp_path / "rate" / "set").set(false); _tree->access<double>(tx_dsp_path / "rate" / "value") .set_coercer(boost::bind(&b200_impl::coerce_tx_samp_rate, this, perif.duc, dspno, _1)) - .add_coerced_subscriber(boost::bind(&lambda_set_bool_prop, _tree, tx_dsp_path / "rate" / "set", true, _1)) + .add_coerced_subscriber(boost::bind(&lambda_set_bool_prop, boost::weak_ptr<property_tree>(_tree), tx_dsp_path / "rate" / "set", true, _1)) .add_coerced_subscriber(boost::bind(&b200_impl::update_tx_samp_rate, this, dspno, _1)) ; |