[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Discuss-gnuradio] My app waits undefinedly after an O printf
From: |
Josh Blum |
Subject: |
Re: [Discuss-gnuradio] My app waits undefinedly after an O printf |
Date: |
Sun, 03 Jun 2012 14:18:22 -0700 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20120430 Thunderbird/12.0.1 |
On 05/29/2012 11:59 PM, Pol Henarejos wrote:
> Dear Josh,
>
> The hardware is USRP2 at 10Msps with latest UHD version
> UHD_003.004.001-165-unstable.
>
Well, this surprises me. I have never know USRP2/N210 to internally
overflow. The gigE pipe essentially has no back-pressure, so the
overflowing usually happens on the host, and they dont cause streaming
to shutoff.
Is it possible you accidentally selected a sample rate > available gigE
bandwidth? Thats the only way I know this to happen. But 10Msps should
be fine.
The only other way I can think of is a MTU issue (really really small
MTU). When you run the application, it should print recv frame size
1472. What do you see printed?
-josh
> As you pointed, it seems that does not restart the streamer. I made a
> rough patch that works continously. I still get overflows but it does
> not stop.
>
> diff --git a/gr-uhd/lib/gr_uhd_usrp_source.cc
> b/gr-uhd/lib/gr_uhd_usrp_source.cc
> index 8aa9654..75ae3d6 100644
> --- a/gr-uhd/lib/gr_uhd_usrp_source.cc
> +++ b/gr-uhd/lib/gr_uhd_usrp_source.cc
> @@ -368,10 +368,12 @@ public:
> case uhd::rx_metadata_t::ERROR_CODE_TIMEOUT:
> //Assume that the user called stop() on the flow graph.
> //However, a timeout can occur under error conditions.
> - return WORK_DONE;
> + // return WORK_DONE;
>
> case uhd::rx_metadata_t::ERROR_CODE_OVERFLOW:
> _tag_now = true;
> + stop();
> + start();
> //ignore overflows and try work again
> return work(noutput_items, input_items, output_items);
>
> Mainly I made stop/start when timeout or overflow occurs.
>
> Thanks.
>
>
> On 05/29/2012 07:29 AM, Pol Henarejos wrote:
>> Dear list,
>>
>> I am using gr_uhd_source as the source of my app. At some moment, there
>> is an overflow, an O is printf'ed and the scheduler stops. The program
>> is still running but there is no flow of samples between blocks. They
>> are waiting for something. I added the following lines in the work() of
>> gr_uhd_source
>>
>> printf("no = %d\n", noutput_items);
>> if (_metadata.error_code != uhd::rx_metadata_t::ERROR_CODE_NONE)
>> printf("Error %d\n",_metadata.error_code);
>>
>> and the output, after some time, is
>>
>> no = 4094
>> no = 4096
>> no = 4094
>> [...]
>> no = 4096
>> no = 4094
>> no = 4096
>> no = 4096
>> Ono = 4094
>> no = 2133
>> Error 8
>> no = 2133
>> Error 1
>>
>> and here waits for some thing and no more printf take place. Be aware
>> that this happens when the O appears.
>>
>> Anybody is expecting the same? Could you provide me some hint?
>>
>
> Whats the hardware? Sample rate? And I suppose UHD version as well.
>
> It looks to me like there is an overflow (code 8), and then a timeout
> (code 1). I bet the scheduler then prints "block returned 0 marking it
> done" something like that...
>
> So it looks to me that the overflow condition is shutting off the
> streaming, and UHD is not automatically tuning streaming back on.
> Hmm.... thats not right.
>
> So let me know the hardware and I will try to replicate the fix the issue.
>
> -josh
>
>
>
>
> _______________________________________________
> Discuss-gnuradio mailing list
> address@hidden
> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [Discuss-gnuradio] My app waits undefinedly after an O printf,
Josh Blum <=