Fw 7.45 Suffers Lag in GPRS/EDGE streaming

hi everyone,
sorry in advance for my poor english :confused: .

I’m developing a project totally on Open-AT platform.
The project consists in a Q2687RD Edge Module, IP connected that works like a remote Microphone.
Once the Module gets GPRS Bearer, It connects to a known TCP_Server.
So it’s starts to costantly monitoring Microphone (Audio Low and High IRQ Subscribed) for fixed Audio levels (8k PCM Audio).
Once audio levels exceeds settings, audio is subscribed in AMR mode (12.2kbit) and packets are buffered on an SD Card.
As soon the buffering finish (Audio levels turns to steady state) they are all read, numbered and sent to the TCP_Server (using WIP Lib functions).

With Fw 7.44 we had constant audio streaming speed to the Server (Tested with large buffers of 16384 and 8192 bytes) of 5.5KByte per second (calculated by the server and monitored via Debug).

Once upgraded the Module to Fw 7.45 (and tried also 7.45.1) the KByte per second was much Lower (variable from 1 to 3.5 Kbyte per second) with visible lags.

I state that:

  • We have an untouched code, only recompiled it for new FW and OS
  • We have tried to rollback to Fw version 7.44 and noticed speed increase again
  • We need 7.45 Fw because we notice some unexpected resets with 7.44 during the Bearer connections (no Backtrace data found and it states Normal restart on main() function) to some EGPRS Italian Operators (such as TIM and Wind).
  • We tried to disable the Audio Low and High IRQ (thinking it was the only ones low level interrupts) and made a fake audio streaming. This was increasing the transfer speed to 4 Kbps, but variable again.
  • The tests are done from an to the Same exact Locations with the same Mobile Operators.

If someone can be helpful on this topic will that will be appreciated.

Hi,

Are you using the varispeed service in order to boost the CPU frequency (it is recommended for such applications).

Also, did you compile your project in release mode (or in debug mode you need to set C optimization to O2 or O3)?

Are you using GCC (ELF or EABI?) or RVDS compiler?

Regards,

Jay

Are you using the varispeed service in order to boost the CPU frequency (it is recommended for such applications).

I have Varispeed disabled at the moment but can be activated. I’ve tried to use but cannot see speed increases.
The fact that recompiling code with previous AT Version give me speed increase without using Varispeed isn’t somewhat strange?

Also, did you compile your project in release mode (or in debug mode you need to set C optimization to O2 or O3)?
To bypass problems of Optimizations, i’m using Release mode compilation and overridden and redirected TRACE calls. Activating a Flag some Debug strings flows through Serial port 1 (only for high level function).

Are you using GCC (ELF or EABI?) or RVDS compiler?
i use ELF AND EABI for tests. But wich is better? I cannot see much differences except for code size of .dwl file.
and RVDS? How can activate and give it a try?

thanks for answer.

RVDS is a compiler and development suite from ARM.

It does produce code that is superior to that of GCC, but costs an arm and a leg.

See: arm.com/products/tools/software- … /index.php

You could look at the MDK instead: keil.com/arm/mdk.asp - that just costs an arm or a leg :laughing:

awneil, you’ve mentioned Keil MDK - is it possible to use it as toolchain inside DS? If you or anybody else know something regarding that subject can you please respond here or in this thread: [url]https://forum.sierrawireless.com/t/compiler-eabi-compilation-mode/5220/1]

Ivan

I don’t know - I’ve not looked into it (never had reason to).