реклама на сайте
подробности

 
 
> LwIP+STM32. Неравномерная передача данных
Huston007
сообщение Sep 15 2011, 11:45
Сообщение #1





Группа: Новичок
Сообщений: 6
Регистрация: 18-08-11
Пользователь №: 66 780



Столкнулся с такой проблемой. Делаю обмен данными по UDP на МК ST32F207 + стек LwIP 1.3.2 на основе примера udpechoserver для ST322xG_EVAL.

По приёму UDP датаграммы срабатывает такой callback

CODE
void udp_echoserver_receive_callback(void *arg, struct udp_pcb *upcb, struct pbuf *p, struct ip_addr *addr, u16_t port)
{
//запоминаем данные клиента
upcb1 = upcb;
addr1 = addr;

//разбираем входящее сообщение
parseIncomingMessage(p);

/* Free the p buffer */
pbuf_free(p);
}


И, если пришло сообщение "start", то начинает периодически вызывается такая функция, принимающая массив данных и отправляющая его по UDP клиенту.
CODE

void udpSendArray(uint16_t data[])
{
//выделим память для pbuf буфера
pb1 = pbuf_alloc(PBUF_RAW, udpPackageSize+headerSize, PBUF_RAM);

//сформируем pbuf из массива данных data[]
pbuf_take( pb1, data, udpPackageSize+headerSize);

//подсоединимся к клиенту и отошлём данные
udp_connect(upcb1, addr1, UDP_CLIENT_PORT);

udp_send(upcb1, pb1);

udp_disconnect(upcb1);
//очистим pbuf буфер
pbuf_free(pb1);
}


проблема в том, что если в конце udp_echoserver_receive_callback вызывать pbuf_free(p), как положено, то передача данных становится неравномерная, рывками.

Если закоментировать pbuf_free(p) в конце udp_echoserver_receive_callback, то передача данных нормальная. Скорость до 70мбит. Но тогда pbuf буфер входящего сообщения не очищается, и после ~30 входящих сообщения перестают приниматься.

Я не могу понять, почему если хотя бы один раз вызвать pbuf_free(p), то передача становится неравномерной, перепробовал кучу опций LwIP, пробовал очищать pbuf напрямую mem_free. не знаю что и сделать.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 18:31
Рейтинг@Mail.ru


Страница сгенерированна за 0.02568 секунд с 7
ELECTRONIX ©2004-2016