Does the error also occur with a stock FPGA image?
On Sun, 2018-03-18 at 16:19 +0000, Snehasish Kar wrote:
> > does the error occur exactly in the "make" call, or in the
> > get_device3
> 
> It occurs in the make.
> 
> > call, or somewhere else?
> > What is your UHD version? Are you running the right FPGA image for
> > that
> > version?
> 
> My uhd version is UHD_4.0.0.rfnoc-devel-409-gec9138eb. Yes it’s a
> custom fpga image.
> > 
> > Best regards,
> > Marcus
> > 
> > 
> > > On Sat, 2018-03-17 at 20:13 +0000, Snehasish Kar wrote:
> > > Hello Marcus
> > > 
> > > Sorry, but I didn't receive a copy of my previous mail or your
> > > response, so I posted again.
> > > 
> > > For your reference below is my code:
> > > 
> > > #include <uhd/types/tune_request.hpp>
> > > #include <uhd/types/sensors.hpp>
> > > #include <uhd/utils/thread_priority.hpp>
> > > #include <uhd/utils/safe_main.hpp>
> > > #include <uhd/device3.hpp>
> > > #include <uhd/rfnoc/radio_ctrl.hpp>
> > > #include <uhd/rfnoc/source_block_ctrl_base.hpp>
> > > #include <ppchan/chan128_block_ctrl.hpp>
> > > #include <uhd/exception.hpp>
> > > #include <boost/program_options.hpp>
> > > #include <boost/format.hpp>
> > > #include <boost/thread.hpp>
> > > #include <iostream>
> > > #include <fstream>
> > > #include <csignal>
> > > #include <complex>
> > > #include <stdio.h>
> > > #include <uhd/stream.hpp>
> > > #include <SynchronousLabs/downSampler_block_ctrl.hpp>
> > > #include <uhd/usrp/multi_usrp.hpp>
> > > 
> > > #define USRP_2954_R 0
> > > #define USRP_2955_R 1
> > > #define db_0 0
> > > #define db_1 1
> > > 
> > > namespace po = boost::program_options;
> > > double centre_freq_2954_db0 = 947.8e6;
> > > double centre_freq_2954_db1 = 947.8e6-45e6;
> > > static bool stop_signal_called = false;
> > > 
> > > void sig_int_handler(int){stop_signal_called = true;}
> > > 
> > > void recv_to_file(
> > > uhd::rx_streamer::sptr rx_stream,
> > >   size_t samps_per_buff,
> > >   unsigned long long num_requested_samples,
> > >   bool continue_on_bad_packet = false
> > > ) {
> > >   unsigned long long num_total_samps = 0;
> > > 
> > >   uhd::rx_metadata_t md;
> > >   std::vector<std::complex<float> > buff(samps_per_buff);
> > >   std::ofstream outfile;
> > > #if 1
> > >   //outfile.open("/media/ramdd/rxfile.bin",
> > > std::ofstream::binary);
> > >   FILE *fp = fopen("/media/ramdd/rxfile.bin","w");
> > > #endif
> > >   bool overflow_message = true;
> > > 
> > >   //setup streaming
> > >   uhd::stream_cmd_t stream_cmd((num_requested_samples == 0)?
> > >       uhd::stream_cmd_t::STREAM_MODE_START_CONTINUOUS:
> > >       uhd::stream_cmd_t::STREAM_MODE_NUM_SAMPS_AND_DONE
> > >   );
> > >   stream_cmd.num_samps = num_requested_samples;
> > >   stream_cmd.stream_now = true;
> > >   stream_cmd.time_spec = uhd::time_spec_t();
> > >   std::cout << "Issuing start stream cmd" << std::endl;
> > >   // This actually goes to the null source; the processing block
> > >   // should propagate it.
> > >   rx_stream->issue_stream_cmd(stream_cmd);
> > >   unsigned long long last_update_samps = 0;
> > > 
> > >   while(
> > >       not stop_signal_called
> > >       and (num_requested_samples != num_total_samps or
> > > num_requested_samples == 0)
> > >   ) {
> > >   size_t num_rx_samps = rx_stream->recv(&buff.front(),
> > > buff.size(),
> > > md, 3.0);
> > >   std::cout<<"number of samples "<<num_rx_samps<<std::endl;
> > >       if (md.error_code ==
> > > uhd::rx_metadata_t::ERROR_CODE_TIMEOUT)
> > > {
> > >           std::cout << boost::format("Timeout while streaming")
> > > <<
> > > std::endl;
> > >           break;
> > >       }
> > >       if (md.error_code ==
> > > uhd::rx_metadata_t::ERROR_CODE_OVERFLOW){
> > >           if (overflow_message){
> > >               overflow_message = false;
> > >               std::cerr << "Got an overflow indication. If
> > > writing
> > > to disk, your\n"
> > >                            "write medium may not be able to keep
> > > up.\n";
> > >           }
> > >           continue;
> > >       }
> > >       if (md.error_code != uhd::rx_metadata_t::ERROR_CODE_NONE){
> > >           std::string error = str(boost::format("Receiver error:
> > > %s") % md.strerror());
> > >           if (continue_on_bad_packet){
> > >               std::cerr << error << std::endl;
> > >               continue;
> > >           }
> > >           else {
> > >               throw std::runtime_error(error);
> > >           }
> > >       }
> > >       num_total_samps += num_rx_samps;
> > > #if 1
> > > 
> > > fwrite(&buff.front(),sizeof(std::complex<float>),num_rx_samps,fp)
> > > ;
> > > #endif
> > > #if 0
> > >       if (bw_summary) {
> > >           last_update_samps += num_rx_samps;
> > >           boost::posix_time::time_duration update_diff = now -
> > > last_update;
> > >           if (update_diff.ticks() >
> > > boost::posix_time::time_duration::ticks_per_second()) {
> > >               double t = (double)update_diff.ticks() /
> > > (double)boost::posix_time::time_duration::ticks_per_second();
> > >               double r = (double)last_update_samps / t;
> > >               std::cout << boost::format("\t%f Msps") % (r/1e6)
> > > <<
> > > std::endl;
> > >               last_update_samps = 0;
> > >               last_update = now;
> > >           }
> > >       }
> > > 
> > >       ticks_diff = now - start;
> > >       if (ticks_requested > 0){
> > >           if ((unsigned long long)ticks_diff.ticks() >
> > > ticks_requested)
> > >               break;
> > >       }
> > > #endif
> > >   }
> > > 
> > >   stream_cmd.stream_mode =
> > > uhd::stream_cmd_t::STREAM_MODE_STOP_CONTINUOUS;
> > >   rx_stream->issue_stream_cmd(stream_cmd);
> > > 
> > > #if 1
> > >   fclose(fp);
> > > #endif
> > > }
> > > void pretty_print_flow_graph(std::vector<std::string> blocks)
> > > {
> > >   std::string sep_str = "==>";
> > >   std::cout << std::endl;
> > >   // Line 1
> > >   for (size_t n = 0; n < blocks.size(); n++) {
> > >       const std::string name = blocks[n];
> > >       std::cout << "+";
> > >       for (size_t i = 0; i < name.size() + 2; i++) {
> > >           std::cout << "-";
> > >       }
> > >       std::cout << "+";
> > >       if (n == blocks.size() - 1) {
> > >           break;
> > >       }
> > >       for (size_t i = 0; i < sep_str.size(); i++) {
> > >           std::cout << " ";
> > >       }
> > >   }
> > >   std::cout << std::endl;
> > >   // Line 2
> > >   for (size_t n = 0; n < blocks.size(); n++) {
> > >       const std::string name = blocks[n];
> > >       std::cout << "| " << name << " |";
> > >       if (n == blocks.size() - 1) {
> > >           break;
> > >       }
> > >       std::cout << sep_str;
> > >   }
> > >   std::cout << std::endl;
> > >   // Line 3
> > >   for (size_t n = 0; n < blocks.size(); n++) {
> > >       const std::string name = blocks[n];
> > >       std::cout << "+";
> > >       for (size_t i = 0; i < name.size() + 2; i++) {
> > >           std::cout << "-";
> > >       }
> > >       std::cout << "+";
> > >       if (n == blocks.size() - 1) {
> > >           break;
> > >       }
> > >       for (size_t i = 0; i < sep_str.size(); i++) {
> > >           std::cout << " ";
> > >       }
> > >   }
> > >   std::cout << std::endl << std::endl;
> > > }
> > > 
> > > #if 1
> > > int c onfigure(int mboard_no, int dboard_no, uhd::device3::sptr
> > > usrp){
> > > uhd::rfnoc::radio_ctrl::sptr radio_ctrl;
> > > uhd::rfnoc::block_ctrl_base::sptr chan128_ctrl;
> > > std::string downsample_make;
> > > //uhd::rfnoc::block_ctrl_base::sptr downSampler;
> > > uhd::rfnoc::block_ctrl_base::sptr fifo;
> > > //uhd::rfnoc::
> > > uhd::rfnoc::downSampler_block_ctrl::sptr downSampler;
> > > usrp->clear();
> > > uhd::rfnoc::block_ctrl_base::sptr packetresizer_ctrl;
> > > std::string  file, format, ant, subdev, ref, wirefmt, streamargs,
> > > block_id, block_args;
> > > size_t total_num_samps, spp = 128, spb=10e3;
> > > double sampleRate = 0x00;
> > > std::string radio_args("Radio channel");
> > > std::vector<std::string> blocks;
> > > 
> > > uhd::device_addr_t stream_args_args;
> > > usrp->clear();
> > > uhd::rfnoc::graph::sptr rx_graph = usrp-
> > > > create_graph("GSM_RF_DUPLEX_CHAIN");
> > > 
> > > uhd::rfnoc::block_id_t radio_ctrl_id(mboard_no, "Radio",
> > > dboard_no);
> > > if(not(usrp->has_block(radio_ctrl_id))){
> > > std::cout<<"error: radio block not found..please check whether
> > > the
> > > block exists in the image! quiting"<<std::endl;
> > > return (EXIT_FAILURE);
> > > }else{
> > > std::cout<<"radio_"<<dboard_no <<" block found.."<<std::endl;
> > > radio_ctrl = usrp->get_block_ctrl< uhd::rfnoc::radio_ctrl
> > > > (radio_ctrl_id);
> > > 
> > > blocks.push_back(radio_ctrl->get_block_id());
> > > if(mboard_no == 0x00){
> > > sampleRate = 200e6;
> > > }else{
> > > sampleRate = 100e6;
> > > }
> > > radio_ctrl->set_args(radio_args);
> > > radio_ctrl->set_rate(sampleRate);
> > > if(dboard_no==0){
> > > uhd::tune_request_t tune_request(centre_freq_2954_db0);
> > > radio_ctrl->set_rx_frequency(centre_freq_2954_db0,0);
> > > }else{
> > > uhd::tune_request_t tune_request(centre_freq_2954_db1);
> > > radio_ctrl->set_rx_frequency(centre_freq_2954_db1,0);
> > > }
> > > std::cout<<"freq "<<radio_ctrl->get_rx_frequency(0)<<std::endl;
> > > radio_ctrl->set_rx_antenna("RX2",0);
> > > radio_ctrl->set_rx_gain(25,0);
> > > std::cout<<"gain "<<radio_ctrl->get_rx_gain(0)<<std::endl;
> > > radio_ctrl->set_rx_bandwidth(56e6,0);
> > > uhd::device_addr_t stream_args_args1;
> > > stream_args_args1["block_id"] = radio_ctrl_id;
> > > #if 1
> > > uhd::stream_args_t stream_args1("fc32", "sc16");
> > > stream_args1.args = stream_args_args1;
> > > uhd::tx_streamer::sptr tx_stream = usrp-
> > > >get_tx_stream(stream_args1);
> > > stream_args1.args["gr_vlen"] =
> > > boost::lexical_cast<std::string>(1);
> > > uhd::rx_streamer::sptr rx_stream = usrp-
> > > >get_rx_stream(stream_args1);
> > > #endif
> > > //radio_ctrl->set_arg<int>("gr_vlen",(int)1);
> > > }
> > > 
> > > #if 1
> > > uhd::rfnoc::block_id_t downsampler_ctrl_id(mboard_no,
> > > "downSampler",
> > > dboard_no);
> > > if(not(usrp->has_block(downsampler_ctrl_id))){
> > >  std::cout<<"error: downsampler block not found..please check
> > > whether the block exists in the image"<<std::endl;
> > >  return (EXIT_FAILURE);
> > > }else{
> > >  std::cout<<"downSampler_"<<dboard_no<<" block
> > > found.."<<std::endl;
> > >  downSampler = usrp-
> > > > get_block_ctrl<uhd::rfnoc::downSampler_block_ctrl>(downsampler_
> > > > ctrl_
> > > 
> > > id);
> > >  blocks.push_back(downSampler->get_block_id());
> > > #if 1
> > >  downSampler->set_arg<int>("sr_n",(int)1000);
> > >  downSampler->set_arg<int>("sr_m",(int)128);
> > > #endif
> > > #if 0
> > >  uhd::device_addr_t stream_args_args1;
> > >  stream_args_args1["block_id"] = downsampler_ctrl_id;
> > >  uhd::stream_args_t stream_args1("fc32", "sc16");
> > >  stream_args1.args = stream_args_args1;
> > >  stream_args1.args["sr_n"] =
> > > boost::lexical_cast<std::string>(1000);
> > >  stream_args1.args["sr_m"] =
> > > boost::lexical_cast<std::string>(128);
> > >  uhd::rx_streamer::sptr rx_stream = usrp-
> > > > get_rx_stream(stream_args1);
> > > 
> > >  uhd::tx_streamer::sptr tx_stream = usrp-
> > > > get_tx_stream(stream_args1);
> > > 
> > > #endif
> > > }
> > > #endif
> > > #if 0
> > > /*********************************************/
> > > //downsampler = new downSampler_block_ctrl;
> > > 
> > > /*********************************************/
> > > #endif
> > > 
> > > uhd::rfnoc::block_id_t packetresizer_ctrl_id(mboard_no,
> > > "PacketResizer", dboard_no);
> > > if(not(usrp->has_block(packetresizer_ctrl_id))){
> > >  std::cout<<"error: packetResizer block not found..please check
> > > whether the block exists in the image"<<std::endl;
> > >  return (EXIT_FAILURE);
> > > }else{
> > >  std::cout<<"packetResizer_"<<dboard_no<<" block
> > > found.."<<std::endl;
> > >  packetresizer_ctrl = usrp-
> > > >get_block_ctrl(packetresizer_ctrl_id);
> > >  blocks.push_back(packetresizer_ctrl->get_block_id());
> > >  packetresizer_ctrl->set_arg<int>("pkt_size",(int)512);
> > >  //packetresizer_ctrl->set
> > > #if 0
> > >  uhd::device_addr_t stream_args_args1;
> > >  stream_args_args1["block_id"] = packetresizer_ctrl_id;
> > >  uhd::stream_args_t stream_args1("fc32", "sc16");
> > >  stream_args1.args = stream_args_args1;
> > >  uhd::rx_streamer::sptr rx_stream = usrp-
> > > > get_rx_stream(stream_args1);
> > > 
> > >  stream_args1.args["pkt_size"] =
> > > boost::lexical_cast<std::string>(512);
> > >  uhd::tx_streamer::sptr tx_stream = usrp-
> > > > get_tx_stream(stream_args1);
> > > 
> > > #endif
> > > }
> > > uhd::rfnoc::block_id_t chan128_ctrl_id(mboard_no, "chan128",
> > > dboard_no);
> > > if(not(usrp->has_block(chan128_ctrl_id))){
> > >   std::cout<<"error: chan128 block not found..please check
> > > whether
> > > the block exists in the image"<<std::endl;
> > >   return (EXIT_FAILURE);
> > > }else{
> > > std::cout<<"chan128_"<< dboard_no<<" block found.."<<std::endl;
> > > chan128_ctrl = usrp->get_block_ctrl(chan128_ctrl_id);
> > > blocks.push_back(chan128_ctrl->get_block_id());
> > > //stream_args_args["block_id"] = chan128_ctrl_id;
> > > spp = chan128_ctrl->get_args().cast<size_t>("spp",spp);
> > > std::cout<<"spp "<<(int)spp<<std::endl;
> > > uhd::device_addr_t stream_args_args1;
> > > stream_args_args1["block_id"] = chan128_ctrl_id;
> > > #if 0
> > > uhd::stream_args_t stream_args1("fc32", "sc16");
> > > stream_args1.args = stream_args_args1;
> > > stream_args1.args["gr_vlen"] =
> > > boost::lexical_cast<std::string>(128);
> > > stream_args1.args["spp"] = boost::lexical_cast<std::string>(128);
> > > uhd::rx_streamer::sptr rx_stream = usrp-
> > > >get_rx_stream(stream_args1);
> > > uhd::tx_streamer::sptr tx_stream = usrp-
> > > >get_tx_stream(stream_args1);
> > > #endif
> > > }
> > > blocks.push_back("HOST");
> > > pretty_print_flow_graph(blocks);
> > > uhd::rfnoc::block_id_t fifo_ctrl_id(mboard_no, "FIFO",
> > > dboard_no);
> > > if(not usrp->has_block(fifo_ctrl_id)){
> > > std::cout<<"error:FIFO block not found"<<std::endl;
> > > }else{
> > > fifo = usrp->get_block_ctrl(fifo_ctrl_id);
> > > }
> > > // Connect blocks and create flow graph
> > > uhd::device_addr_t stream_args_args1;
> > > stream_args_args["block_id"] = fifo_ctrl_id;
> > > rx_graph->connect(radio_ctrl->get_block_id(),downSampler-
> > > > get_block_id());
> > > 
> > > //rx_graph->connect(downSampler-
> > > >get_block_id(),packetresizer_ctrl-
> > > > get_block_id());
> > > 
> > > //rx_graph->connect(packetresizer_ctrl-
> > > >get_block_id(),chan128_ctrl-
> > > > get_block_id());
> > > 
> > > rx_graph->connect(downSampler->get_block_id(),fifo-
> > > >get_block_id());
> > > uhd::stream_args_t stream_args("fc32", "sc16");
> > >   stream_args.args = stream_args_args;
> > > //stream_args.args["spp"] =
> > > boost::lexical_cast<std::string>(spp);
> > > //stream_args.args["gr_vlen"] =
> > > boost::lexical_cast<std::string>(spp);
> > > 
> > > uhd::rx_streamer::sptr rx_stream = usrp-
> > > >get_rx_stream(stream_args);
> > > //uhd::tx_streamer::sptr tx_stream = usrp-
> > > > get_tx_stream(stream_args);
> > > 
> > > recv_to_file(rx_stream, spb, 0, true);
> > > return (EXIT_SUCCESS);
> > > }
> > > #endif
> > > 
> > > int UHD_SAFE_MAIN(int argc, char *argv[]){
> > >   uhd::set_thread_priority_safe();
> > >   std::string args2954R("addr=192.168.40.2");
> > >   std::string args2955R("addr=192.168.110.2");
> > >   double rate, freq, gain, bw, total_time, setup_time;
> > > 
> > >   //Initializing the USRP Components
> > > 
> > >   std::cout <<"Initializing USRP 2954R"<<std::endl;
> > >   uhd::usrp::multi_usrp::sptr usrp_temp =
> > > uhd::usrp::multi_usrp::make(args2954R);
> > >   uhd::device3::sptr usrp = usrp_temp->get_device3();
> > >   if(configure(USRP_2954_R,db_0,usrp)==1){
> > >   std::cout<<"error: Configuring USRP 2954R not
> > > successful"<<std::endl;
> > >   }
> > >   //boost::thread usrp2954_db0(configure,USRP_2954_R,db_0,usrp);
> > >   /*if(configure(USRP_2954_R,db_1,usrp)==1){
> > >      std::cout<<"error: Configuring USRP 2954R not
> > > successful"<<std::endl;
> > >   }*/
> > >   usleep(100);
> > >   //boost::thread usrp2954_db1(configure,USRP_2954_R,db_1,usrp);
> > >   std::signal(SIGINT, &sig_int_handler);
> > > }
> > > 
> > > 
> > > From: Marcus Müller <marcus.muel...@ettus.com>
> > > Sent: Saturday, March 17, 2018 8:36:10 PM
> > > To: Snehasish Kar; usrp-users@lists.ettus.com
> > > Subject: Re: [USRP-users] Help with uhd
> > > 
> > > Dear Shehasish,
> > > 
> > > Marcus Leech already responded to your last mail.
> > > 
> > > We can't help you without all your code, especially whatever sets
> > > up
> > > "args2954R".
> > > 
> > > Best regards,
> > > Marcus M
> > > 
> > > On Sat, 2018-03-17 at 06:22 +0000, Snehasish Kar via USRP-users
> > > wrote:
> > > > hello 
> > > > 
> > > > On trying to use an multi usrp shared pointer, I get the
> > > > following
> > > > error in rfnoc enviroment:
> > > > 
> > > > Error: TypeError: [0/FIFO_1] Invalid output port number (ANY).
> > > > 
> > > > I declared the shared pointer as below
> > > > 
> > > > uhd::usrp::multi_usrp::sptr usrp_temp =
> > > > uhd::usrp::multi_usrp::make(args2954R);
> > > > uhd::device3::sptr usrp = usrp_temp->get_device3();
> > > > 
> > > > Any idea where I am going wrong.
> > > > 
> > > > BR
> > > > Snehasish
> > > > 
> > > > 
> > > > _______________________________________________
> > > > USRP-users mailing list
> > > > USRP-users@lists.ettus.com
> > > > http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.
> > > > com

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

Reply via email to