Hello,

I just updated my rfnoc workflow to UHD 4.0 this week. I've gone through the 
process of creating an RFNoC block, building the corresponding FPGA image, 
putting it on an E320 (had to upgrade MPM), and seeing the block is present 
when executing uhd_usrp_probe. The problem is that the block shows up as "* 
0/Block#0", and not "* 0/Gain#0". Basically, I'm trying to go through the 
tuturial.

      _____________________________________________________
|    /
|   |       RFNoC blocks on this device:
|   |
|   |   * 0/Block#0
|   |   * 0/DDC#0
|   |   * 0/DUC#0
|   |   * 0/DmaFIFO#0
|   |   * 0/Radio#0

I've confirmed that I have a gain.yml file under my ../uhd/rfnoc/blocks folder 
with the correct noc_id. If I do a uhd_usrp_probe with the --init-only option, 
I get:

------------------------------
[WARNING] [RFNOC::BLOCK_FACTORY] Could not find block with Noc-ID 0xbdc26af0, 
0xffff
------------------------------

I confirmed that this Noc-ID matches the ID in my gain.yml file. I started 
digging into uhd_usrp_probe code (I'm not a C++ person) and noticed that the 
registry_factory section of code has "FIXME TODO" under the descriptor registry 
section, but has code for the direct registry section:

-------------------------------
block_factory_info_t factory::get_block_factory(noc_id_t noc_id, device_type_t 
device_id)
{
    // First, check the descriptor registry
    // FIXME TODO

    // Second, check the direct registry
    block_device_pair_t key{noc_id, device_id};

    if (!get_direct_block_registry().count(key)) {
        key = block_device_pair_t(noc_id, ANY_DEVICE);
    }
    if (!get_direct_block_registry().count(key)) {
        UHD_LOG_WARNING("RFNOC::BLOCK_FACTORY",
            "Could not find block with Noc-ID " << std::hex << "0x" << 
key.first << ", 0x"
                                                << key.second << std::dec);
        key = block_device_pair_t(DEFAULT_NOC_ID, ANY_DEVICE);
    }
    return get_direct_block_registry().at(key);
}
----------------------------------

Does this mean that uhd_usrp_probe is not even looking at the yml files and 
only looks for directly registered blocks? I'm not sure what directly 
registered means and if my example "gain" block should somehow be directly 
registered.

I was thinking that this is just something incomplete that doesn't work with 
UHD right now, but in the "Getting Started with RFNoC in UHD 4.0" guide 
(https://kb.ettus.com/Getting_Started_with_RFNoC_in_UHD_4.0), they show the 
Gain block showing up correctly when doing a uhd_usrp_probe.

So, I don't understand why this isn't working or how it should work. Some 
background, I cloned/built:
1) UHD (v4.0.0.0 tag)
2) gnuradio (3.8.2.0 tag)
3) gr-ettus (maint-3.8-uhd4.0 branch)

I "believe" my paths/environment are setup correctly.

Thanks for any help.
Jim


_______________________________________________
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com

Reply via email to