diff options
-rw-r--r-- | CHANGELOG | 26 | ||||
m--------- | fpga-src | 0 | ||||
-rw-r--r-- | host/CMakeLists.txt | 4 | ||||
-rw-r--r-- | host/include/uhd/rfnoc/node_ctrl_base.hpp | 28 | ||||
-rw-r--r-- | host/include/uhd/rfnoc/node_ctrl_base.ipp | 7 | ||||
-rw-r--r-- | host/include/uhd/rfnoc/sink_node_ctrl.hpp | 9 | ||||
-rw-r--r-- | host/include/uhd/rfnoc/source_node_ctrl.hpp | 9 | ||||
-rw-r--r-- | host/lib/rfnoc/tick_node_ctrl.cpp | 4 | ||||
-rw-r--r-- | host/lib/usrp/b200/b200_impl.cpp | 5 | ||||
-rw-r--r-- | host/lib/usrp/e300/e300_remote_codec_ctrl.cpp | 4 |
10 files changed, 65 insertions, 31 deletions
@@ -1,6 +1,32 @@ Change Log for Releases ============================== +## 003.010.001.000 + +- Fixed multiple compiler warnings +- Multiple documentation fixes +- X300: RX strobe lines are always in sync on device initialization. DB EEPROM + now properly written. ignore-cal-file no longer ignored. Fixed case where too + large recv_frame_size settings could break things. Reduced ZPU clock speed + (helps FPGA timing). Added area constraints for AXI interconnect. Improved + halfband scaling in rx_frontend. +- B2xx: Clear sequence numbers in idle state. +- RFNoC: Nodes disconnect on destruction. Fixed setting of correct bits on + sr_error_policy. DDC does no longer clear timed commands on EOB. DUC fixed + timed CORDIC tuning. Enable Noc-Shell response FIFOs (fixes simultaneous + commands on multiple channels). +- UBX: Changed default performance parameters +- TwinRX: LEDs properly light up depending on channels. Fixed issue of multiple + (redundant) writes. +- XCVR: Query dboard clock instead of DAC clock. Helps in X3x0s. +- GPS: Fixed message for case when no GPS is present. Fixed multiple GPS-related + issues. +- Converters: Fixed floating point rounding error in tests. +- Utils: uhd_usrp_probe can now query vectors +- Fixed issue that prevented soft_regs working on 32-bit systems +- Tools: Merged dissectors into common directory. +- CMake: -Og is the default now for gcc-based Debug builds. + ## 003.010.000.000 - Changed version string to quadruplets (Major.API.ABI.Patch) - Minimum dependencies bumped for gcc, Boost, CMake, clang and Python. diff --git a/fpga-src b/fpga-src -Subproject 3cf54867b7acb73d0fd885f3ede13739cbc231a +Subproject 93808e8d5b182c0eb00aabd4ca1030cf46777ac diff --git a/host/CMakeLists.txt b/host/CMakeLists.txt index 0c1c44844..1d3a6f5fc 100644 --- a/host/CMakeLists.txt +++ b/host/CMakeLists.txt @@ -338,8 +338,8 @@ UHD_INSTALL(FILES #{{{IMG_SECTION # This section is written automatically by /images/create_imgs_package.py # Any manual changes in here will be overwritten. -SET(UHD_IMAGES_MD5SUM "326cad67a75e60f365c3249f9fb3626a") -SET(UHD_IMAGES_DOWNLOAD_SRC "uhd-images_003.010.000.000-84-g006c321c.zip") +SET(UHD_IMAGES_MD5SUM "586c6f48f65ecfaeec3403a8b2780d72") +SET(UHD_IMAGES_DOWNLOAD_SRC "uhd-images_003.010.001.000-rc1.zip") #}}} ######################################################################## diff --git a/host/include/uhd/rfnoc/node_ctrl_base.hpp b/host/include/uhd/rfnoc/node_ctrl_base.hpp index 071de803c..bf799d2c2 100644 --- a/host/include/uhd/rfnoc/node_ctrl_base.hpp +++ b/host/include/uhd/rfnoc/node_ctrl_base.hpp @@ -119,17 +119,17 @@ public: * Search only goes downstream. */ template <typename T> - UHD_INLINE std::vector< boost::shared_ptr<T> > find_downstream_node() + UHD_INLINE std::vector< boost::shared_ptr<T> > find_downstream_node(bool active_only = false) { - return _find_child_node<T, true>(); + return _find_child_node<T, true>(active_only); } /*! Same as find_downstream_node(), but only search upstream. */ template <typename T> - UHD_INLINE std::vector< boost::shared_ptr<T> > find_upstream_node() + UHD_INLINE std::vector< boost::shared_ptr<T> > find_upstream_node(bool active_only = false) { - return _find_child_node<T, false>(); + return _find_child_node<T, false>(active_only); } /*! Checks if downstream nodes share a common, unique property. @@ -186,6 +186,24 @@ protected: //! List of downstream nodes node_map_t _downstream_nodes; + /*! For every output port, store rx streamer activity. + * + * If _rx_streamer_active[0] == true, this means that an active rx + * streamer is operating on port 0. If it is false, or if the entry + * does not exist, there is no streamer. + * Values are toggled by set_rx_streamer(). + */ + std::map<size_t, bool> _rx_streamer_active; + + /*! For every input port, store tx streamer activity. + * + * If _tx_streamer_active[0] == true, this means that an active tx + * streamer is operating on port 0. If it is false, or if the entry + * does not exist, there is no streamer. + * Values are toggled by set_tx_streamer(). + */ + std::map<size_t, bool> _tx_streamer_active; + /*********************************************************************** * Connections **********************************************************************/ @@ -221,7 +239,7 @@ private: * \param downstream Set to true if search goes downstream, false for upstream. */ template <typename T, bool downstream> - std::vector< boost::shared_ptr<T> > _find_child_node(); + std::vector< boost::shared_ptr<T> > _find_child_node(bool active_only = false); /*! Implements the search algorithm for find_downstream_unique_property() and * find_upstream_unique_property(). diff --git a/host/include/uhd/rfnoc/node_ctrl_base.ipp b/host/include/uhd/rfnoc/node_ctrl_base.ipp index 136354cd2..4ab25c597 100644 --- a/host/include/uhd/rfnoc/node_ctrl_base.ipp +++ b/host/include/uhd/rfnoc/node_ctrl_base.ipp @@ -29,7 +29,7 @@ namespace uhd { namespace rfnoc { template <typename T, bool downstream> - std::vector< boost::shared_ptr<T> > node_ctrl_base::_find_child_node() + std::vector< boost::shared_ptr<T> > node_ctrl_base::_find_child_node(bool active_only) { typedef boost::shared_ptr<T> T_sptr; static const size_t MAX_ITER = 20; @@ -57,6 +57,11 @@ namespace uhd { it != all_next_nodes.end(); ++it ) { + size_t our_port = it->first; + if (active_only + and not (downstream ? _tx_streamer_active[our_port] : _tx_streamer_active[our_port] )) { + continue; + } sptr one_next_node = it->second.lock(); if (not one_next_node or explored.count(one_next_node)) { continue; diff --git a/host/include/uhd/rfnoc/sink_node_ctrl.hpp b/host/include/uhd/rfnoc/sink_node_ctrl.hpp index 5142a269e..90d617bb7 100644 --- a/host/include/uhd/rfnoc/sink_node_ctrl.hpp +++ b/host/include/uhd/rfnoc/sink_node_ctrl.hpp @@ -75,15 +75,6 @@ public: protected: - /*! For every input port, store tx streamer activity. - * - * If _tx_streamer_active[0] == true, this means that an active tx - * streamer is operating on port 0. If it is false, or if the entry - * does not exist, there is no streamer. - * Values are toggled by set_tx_streamer(). - */ - std::map<size_t, bool> _tx_streamer_active; - /*! Ask for a port number to connect an upstream block to. * * Typically, this will be overridden for custom behaviour. diff --git a/host/include/uhd/rfnoc/source_node_ctrl.hpp b/host/include/uhd/rfnoc/source_node_ctrl.hpp index a351f6c8e..cacbcbb47 100644 --- a/host/include/uhd/rfnoc/source_node_ctrl.hpp +++ b/host/include/uhd/rfnoc/source_node_ctrl.hpp @@ -83,15 +83,6 @@ public: protected: - /*! For every output port, store rx streamer activity. - * - * If _rx_streamer_active[0] == true, this means that an active rx - * streamer is operating on port 0. If it is false, or if the entry - * does not exist, there is no streamer. - * Values are toggled by set_rx_streamer(). - */ - std::map<size_t, bool> _rx_streamer_active; - /*! Ask for a port number to connect a downstream block to. * * See sink_node_ctrl::_request_input_port(). This is the same diff --git a/host/lib/rfnoc/tick_node_ctrl.cpp b/host/lib/rfnoc/tick_node_ctrl.cpp index fa5c7b6a1..5548194ae 100644 --- a/host/lib/rfnoc/tick_node_ctrl.cpp +++ b/host/lib/rfnoc/tick_node_ctrl.cpp @@ -37,9 +37,9 @@ double tick_node_ctrl::get_tick_rate( std::set< node_ctrl_base::sptr > explored_nodes(_explored_nodes); explored_nodes.insert(shared_from_this()); // Here, we need all up- and downstream nodes - std::vector< sptr > neighbouring_tick_nodes = find_downstream_node<tick_node_ctrl>(); + std::vector< sptr > neighbouring_tick_nodes = find_downstream_node<tick_node_ctrl>(true); { - std::vector< sptr > upstream_neighbouring_tick_nodes = find_upstream_node<tick_node_ctrl>(); + std::vector< sptr > upstream_neighbouring_tick_nodes = find_upstream_node<tick_node_ctrl>(true); neighbouring_tick_nodes.insert( neighbouring_tick_nodes.end(), upstream_neighbouring_tick_nodes.begin(), diff --git a/host/lib/usrp/b200/b200_impl.cpp b/host/lib/usrp/b200/b200_impl.cpp index 33f0850eb..9bd2799c2 100644 --- a/host/lib/usrp/b200/b200_impl.cpp +++ b/host/lib/usrp/b200/b200_impl.cpp @@ -1041,8 +1041,11 @@ void b200_impl::update_clock_source(const std::string &source) } _adf4001_iface->set_lock_to_ext_ref(true); } - else if (_gps and source == "gpsdo") + else if (source == "gpsdo") { + if (not _gps or not _gps->gps_detected()) { + throw uhd::key_error("update_clock_source: gpsdo selected, but no gpsdo detected!"); + } if (_gpio_state.ref_sel != 1) { _gpio_state.ref_sel = 1; diff --git a/host/lib/usrp/e300/e300_remote_codec_ctrl.cpp b/host/lib/usrp/e300/e300_remote_codec_ctrl.cpp index cb2583b1b..6ec39131d 100644 --- a/host/lib/usrp/e300/e300_remote_codec_ctrl.cpp +++ b/host/lib/usrp/e300/e300_remote_codec_ctrl.cpp @@ -36,8 +36,8 @@ public: { } - void set_timed_spi(uhd::spi_iface::sptr spi_iface, boost::uint32_t slave_num) {}; - void set_safe_spi(uhd::spi_iface::sptr spi_iface, boost::uint32_t slave_num) {}; + void set_timed_spi(uhd::spi_iface::sptr, boost::uint32_t ) {}; + void set_safe_spi(uhd::spi_iface::sptr, boost::uint32_t ) {}; double set_gain(const std::string &which, const double value) { |